[debian-edu-commits] debian-edu/sankore.git (#3) - upstream (branch) updated: upstream/2.00_git20130309-1-g67e49c3

Mike Gabriel sunweaver at alioth.debian.org
Sun May 5 11:29:37 UTC 2013


The branch, upstream has been updated
       via  67e49c34fa999f794cea28c198c7b6c149f4391e (commit)
      from  9f23d3b62f5eac05557c2d3e6109d7c1f7915f30 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 Sankore-3.1/C++StandardHeaderFile.txt              |   21 +
 Sankore-3.1/COPYING                                | 1113 ++---
 Sankore-3.1/JournalDesModifications.pdf            |  Bin 675820 -> 799163 bytes
 Sankore-3.1/LICENSE.txt                            |  687 +++
 Sankore-3.1/ReleaseNotes.pdf                       |  Bin 893897 -> 374842 bytes
 Sankore-3.1/Sankore_3.1.pro                        |   38 +-
 Sankore-3.1/buildDebianPackage.sh                  |    7 +-
 Sankore-3.1/lgplC++StandardHeaderFile.txt          |   22 -
 .../plugins/cffadaptor/src/UBCFFAdaptor.cpp        |    5 +-
 Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.h  |   17 +-
 .../plugins/cffadaptor/src/UBCFFAdaptor_global.h   |   17 +-
 .../plugins/cffadaptor/src/UBCFFConstants.h        |   17 +-
 Sankore-3.1/plugins/cffadaptor/src/UBGlobals.h     |   17 +-
 Sankore-3.1/release.macx.sh                        |   17 +-
 Sankore-3.1/release.win7.vc9.64.bat                |   74 -
 Sankore-3.1/release.win7.vc9.bat                   |    7 +-
 .../resources/etc/Tutorial/tutorial_en/index.html  |    6 +-
 .../resources/etc/Tutorial/tutorial_fr/index.html  |    6 +-
 Sankore-3.1/resources/etc/Uniboard.css             |    5 +
 Sankore-3.1/resources/forms/documents.ui           |   49 +-
 Sankore-3.1/resources/forms/mainWindow.ui          |  114 +-
 Sankore-3.1/resources/forms/preferences.ui         | 2930 +++++++-----
 Sankore-3.1/resources/i18n/sankore_ar.ts           | 1254 +++---
 Sankore-3.1/resources/i18n/sankore_bg.ts           | 1709 +++-----
 Sankore-3.1/resources/i18n/sankore_ca.ts           | 1802 +++-----
 Sankore-3.1/resources/i18n/sankore_co.ts           | 3407 +++++++++++++
 Sankore-3.1/resources/i18n/sankore_cs.ts           | 1227 +++---
 Sankore-3.1/resources/i18n/sankore_da.ts           | 1727 +++-----
 Sankore-3.1/resources/i18n/sankore_de.ts           | 1288 +++---
 Sankore-3.1/resources/i18n/sankore_el.ts           | 1542 +++----
 Sankore-3.1/resources/i18n/sankore_en.ts           | 1330 +++---
 Sankore-3.1/resources/i18n/sankore_en_UK.ts        | 1330 +++---
 Sankore-3.1/resources/i18n/sankore_es.ts           | 1351 +++---
 Sankore-3.1/resources/i18n/sankore_eu.ts           | 3965 +++++++++++++++
 Sankore-3.1/resources/i18n/sankore_fr.ts           | 1430 +++---
 Sankore-3.1/resources/i18n/sankore_fr_CH.ts        | 1430 +++---
 Sankore-3.1/resources/i18n/sankore_hi.ts           | 3374 +++++++++++++
 Sankore-3.1/resources/i18n/sankore_it.ts           | 1242 +++---
 Sankore-3.1/resources/i18n/sankore_iw.ts           | 1234 +++---
 Sankore-3.1/resources/i18n/sankore_ja.ts           | 1486 +++----
 Sankore-3.1/resources/i18n/sankore_ko.ts           | 1508 +++---
 Sankore-3.1/resources/i18n/sankore_mg.ts           | 1795 +++-----
 Sankore-3.1/resources/i18n/sankore_nb.ts           | 1236 +++---
 Sankore-3.1/resources/i18n/sankore_nl.ts           | 1321 +++---
 Sankore-3.1/resources/i18n/sankore_pl.ts           | 1233 +++---
 Sankore-3.1/resources/i18n/sankore_pt.ts           | 1451 +++---
 Sankore-3.1/resources/i18n/sankore_ro.ts           | 1235 +++---
 Sankore-3.1/resources/i18n/sankore_ru.ts           | 1214 +++---
 Sankore-3.1/resources/i18n/sankore_sk.ts           | 1721 +++-----
 Sankore-3.1/resources/i18n/sankore_sv.ts           | 1226 +++---
 Sankore-3.1/resources/i18n/sankore_tr.ts           | 1796 +++-----
 Sankore-3.1/resources/i18n/sankore_zh.ts           | 1334 +++---
 Sankore-3.1/resources/i18n/sankore_zh_CN.ts        | 1233 +++---
 Sankore-3.1/resources/i18n/sankore_zh_TW.ts        | 1661 +++----
 Sankore-3.1/resources/images/circle.svg            |   11 +
 .../images/createLinkPalette/LinkPage.svg          |  113 +
 .../resources/images/createLinkPalette/LinkWeb.svg |  395 ++
 .../images/createLinkPalette/PlayAudio.svg         |  409 ++
 .../images/libpalette/BookmarkCategory.svg         |  427 ++
 .../resources/images/libpalette/bookmarkIcon.svg   |  400 ++
 Sankore-3.1/resources/images/roundeRrectangle.svg  |   10 +
 Sankore-3.1/resources/images/teacher_close.png     |  Bin 1043 -> 1464 bytes
 .../resources/images/teacher_close_disabled.png    |  Bin 1043 -> 0 bytes
 Sankore-3.1/resources/images/teacher_open.png      |  Bin 1034 -> 1464 bytes
 .../resources/images/teacher_open_disabled.png     |  Bin 1030 -> 0 bytes
 Sankore-3.1/resources/images/toolbar/bookmark.png  |  Bin 0 -> 5991 bytes
 Sankore-3.1/resources/images/toolbar/bookmark.svg  |  377 ++
 .../images/trapFlashPalette/downloadToBoard.svg    |   57 +
 .../images/trapFlashPalette/downloadToLibrary.svg  |  136 +
 .../images/trapFlashPalette/linkToBoard.svg        |   83 +
 .../images/trapFlashPalette/linkToLibrary.svg      |  162 +
 .../images/trapFlashPalette/trappedFlashIcon.svg   |   65 +
 .../images/trapFlashPalette/trappedIcon.svg        |  316 ++
 .../images/trapFlashPalette/trappedSoundIcon.svg   |   95 +
 .../images/trapFlashPalette/trappedVideoIcon.svg   |   59 +
 .../library/applications/Wikipedia.wgt/config.xml  |   34 +-
 .../library/applications/Wikipedia.wgt/index.html  |  751 ++--
 .../applications/Wiktionnaire.wgt/config.xml       |   34 +-
 .../applications/Wiktionnaire.wgt/index.html       |  762 ++--
 .../interactivities/Ass images.wgt/config.xml      |   34 +-
 .../interactivities/Ass images.wgt/index.html      |   87 +-
 .../interactivities/Ass images.wgt/js/script.js    |  816 ----
 .../{ => locales/en}/img/drop_img.png              |  Bin 1618 -> 1618 bytes
 .../Ass images.wgt/locales/en/index.html           |   60 +
 .../Ass images.wgt/locales/en/js/script.js         |  806 +++
 .../Ass images.wgt/locales/fr/js/script.js         |   88 +-
 .../Ass images.wgt/locales/ru/js/script.js         |   71 +-
 .../interactivities/Ass sons.wgt/config.xml        |   33 +-
 .../interactivities/Ass sons.wgt/css/basic.css     |  939 ++--
 .../interactivities/Ass sons.wgt/index.html        |   80 +-
 .../interactivities/Ass sons.wgt/js/script.js      |  923 ----
 .../Ass sons.wgt/{ => locales/en}/img/drop_img.png |  Bin 1618 -> 1618 bytes
 .../Ass sons.wgt/locales/en/index.html             |   60 +
 .../Ass sons.wgt/locales/en/js/script.js           |  918 ++++
 .../Ass sons.wgt/locales/fr/js/script.js           |  145 +-
 .../Ass sons.wgt/locales/ru/js/script.js           |  124 +-
 .../interactivities/Balance.wgt/css/ubw-main.css   |  307 +-
 .../library/interactivities/Cadran.wgt/config.xml  |    2 +-
 .../interactivities/Cadran.wgt/css/main.css        |    2 +-
 .../interactivities/Cadran.wgt/css/ubw-main.css    |  307 +-
 .../library/interactivities/Cadran.wgt/index.html  |  153 +-
 .../interactivities/Cadran.wgt/js/help-template.js |    3 +-
 .../library/interactivities/Calcul.wgt/config.xml  |    2 +-
 .../interactivities/Calcul.wgt/css/ubw-main.css    |  308 +-
 .../interactivities/Calcul.wgt/js/help-template.js |    2 +-
 .../Calcul.wgt/js/help_fr-template.js              |    2 +-
 .../interactivities/Cat images.wgt/config.xml      |    2 +-
 .../interactivities/Cat images.wgt/index.html      |   82 +-
 .../interactivities/Cat images.wgt/js/script.js    |  815 ----
 .../Cat images.wgt/locales/en/index.html           |   60 +
 .../Cat images.wgt/locales/en/js/script.js         |  811 ++++
 .../Cat images.wgt/locales/fr/img/drop_img.png     |  Bin 1762 -> 0 bytes
 .../Cat images.wgt/locales/fr/js/script.js         |  149 +-
 .../Cat images.wgt/locales/ru/img/drop_img.png     |  Bin 2196 -> 0 bytes
 .../Cat images.wgt/locales/ru/js/script.js         |  134 +-
 .../interactivities/Cat text.wgt/config.xml        |    4 +-
 .../interactivities/Cat text.wgt/index.html        |   82 +-
 .../interactivities/Cat text.wgt/js/script.js      |  750 ---
 .../Cat text.wgt/locales/en/index.html             |   60 +
 .../Cat text.wgt/locales/en/js/script.js           |  747 +++
 .../Cat text.wgt/locales/fr/js/script.js           |  110 +-
 .../Cat text.wgt/locales/ru/js/script.js           |   90 +-
 .../library/interactivities/Choisir.wgt/config.xml |    4 +-
 .../interactivities/Choisir.wgt/css/basic.css      |    3 +
 .../library/interactivities/Choisir.wgt/index.html |   86 +-
 .../Choisir.wgt/locales/en/index.html              |   59 +
 .../locales/en/scripts/selQuestionApp.js           |  792 +++
 .../Choisir.wgt/locales/fr/index.html              |    4 -
 .../locales/fr/scripts/selQuestionApp.js           |   91 +-
 .../locales/ru/scripts/selQuestionApp.js           |   78 +-
 .../Choisir.wgt/scripts/selQuestionApp.js          |  793 ---
 .../interactivities/Contraste.wgt/config.xml       |    2 +-
 .../interactivities/Contraste.wgt/css/basic.css    |   13 +-
 .../interactivities/Contraste.wgt/index.html       |   86 +-
 .../Contraste.wgt/locales/en/index.html            |   66 +
 .../{ => locales/en}/scripts/blackYellow.js        |    0
 .../Contraste.wgt/locales/fr/index.html            |    2 +-
 .../Contraste.wgt/locales/ru/index.html            |    2 +-
 .../interactivities/Des.wgt/js/help-template.js    |    2 +-
 .../interactivities/Des.wgt/js/help_fr-template.js |    2 +-
 .../interactivities/Des.wgt/js/templates.js        |    1 +
 .../interactivities/Enveloppe.wgt/config.xml       |    6 +-
 .../interactivities/Enveloppe.wgt/css/ubw-main.css |  627 ++--
 .../interactivities/Enveloppe.wgt/js/templates.js  |   62 +-
 .../library/interactivities/Etudier.wgt/config.xml |    2 +-
 .../library/interactivities/Etudier.wgt/index.html |   86 +-
 .../interactivities/Etudier.wgt/js/script.js       |  686 ---
 .../Etudier.wgt/locales/en/index.html              |   64 +
 .../Etudier.wgt/locales/en/js/script.js            |  686 +++
 .../library/interactivities/Memory.wgt/config.xml  |    6 +-
 .../interactivities/Ordre images.wgt/config.xml    |    2 +-
 .../interactivities/Ordre images.wgt/index.html    |   82 +-
 .../interactivities/Ordre images.wgt/js/script.js  |  571 ---
 .../{ => locales/en}/img/drop_img.png              |  Bin 1618 -> 1618 bytes
 .../Ordre images.wgt/locales/en/index.html         |   61 +
 .../Ordre images.wgt/locales/en/js/script.js       |  565 +++
 .../Ordre images.wgt/locales/fr/js/script.js       |  123 +-
 .../Ordre images.wgt/locales/ru/js/script.js       |  102 +-
 .../interactivities/Ordre lettres.wgt/config.xml   |    4 +-
 .../interactivities/Ordre lettres.wgt/index.html   |   82 +-
 .../interactivities/Ordre lettres.wgt/js/script.js |  566 ---
 .../Ordre lettres.wgt/locales/en/index.html        |   60 +
 .../Ordre lettres.wgt/locales/en/js/script.js      |  564 +++
 .../Ordre lettres.wgt/locales/fr/js/script.js      |  107 +-
 .../Ordre lettres.wgt/locales/ru/js/script.js      |   94 +-
 .../objects/{beep.mp3 => example_en.mp3}           |  Bin 5570 -> 5570 bytes
 .../objects/exemple.mp3 => objects/example_fr.mp3} |  Bin 6302 -> 6302 bytes
 .../objects/example.mp3 => objects/example_ru.mp3} |  Bin 4630 -> 4630 bytes
 .../interactivities/Ordre mots.wgt/config.xml      |    2 +-
 .../interactivities/Ordre mots.wgt/index.html      |   88 +-
 .../Ordre mots.wgt/locales/{fr => en}/index.html   |    0
 .../Ordre mots.wgt/locales/en/scripts/template2.js |  435 ++
 .../Ordre mots.wgt/scripts/template2.js            |  435 --
 .../interactivities/Ordre phrase.wgt/config.xml    |    4 +-
 .../interactivities/Ordre phrase.wgt/index.html    |   90 +-
 .../Ordre phrase.wgt/locales/en/index.html         |   68 +
 .../{scripts => locales/en/script}/template2.js    |    0
 .../interactivities/Selectionner.wgt/config.xml    |    4 +-
 .../interactivities/Selectionner.wgt/index.html    |   82 +-
 .../interactivities/Selectionner.wgt/js/script.js  |  563 ---
 .../Selectionner.wgt/locales/en/index.html         |   60 +
 .../Selectionner.wgt/locales/en/js/script.js       |  559 +++
 .../Selectionner.wgt/locales/fr/js/script.js       |   99 +-
 .../Selectionner.wgt/locales/ru/js/script.js       |   82 +-
 .../interactivities/Separe phrase.wgt/config.xml   |    2 +-
 .../interactivities/Separe phrase.wgt/index.html   |   83 +-
 .../locales/{fr => en}/index.html                  |    0
 .../{ => locales/en}/scripts/wcontainer.js         |    0
 .../locales/fr/scripts/wcontainer.js               |    6 +-
 .../interactivities/Separe texte.wgt/config.xml    |    2 +-
 .../interactivities/Separe texte.wgt/index.html    |   90 +-
 .../Separe texte.wgt/locales/{fr => en}/index.html |    0
 .../locales/en/scripts/wcontainer.js               |  207 +
 .../locales/fr/scripts/wcontainer.js               |    6 +-
 .../Separe texte.wgt/scripts/wcontainer.js         |  207 -
 .../interactivities/Syllabes.wgt/config.xml        |    2 +-
 .../interactivities/Syllabes.wgt/index.html        |   91 +-
 .../Syllabes.wgt/locales/en/index.html             |   69 +
 .../Syllabes.wgt/locales/en/scripts/wcontainer.js  |  205 +
 .../Syllabes.wgt/locales/fr/scripts/wcontainer.js  |    6 +-
 .../Syllabes.wgt/scripts/wcontainer.js             |  205 -
 .../interactivities/Tables.wgt/css/ubw-main.css    |    1 +
 .../interactivities/Train.wgt/css/ubw-main.css     |  307 +-
 .../interactivities/Transformation.wgt/config.xml  |   30 +-
 .../Transformation.wgt/css/ubw-main.css            |  627 ++--
 .../interactivities/Transformation.wgt/help.html   |  116 +-
 .../Transformation.wgt/images}/boeuf.png           |  Bin 25631 -> 25631 bytes
 .../Transformation.wgt/images}/coq.png             |  Bin 32494 -> 32494 bytes
 .../Transformation.wgt/images}/poule.png           |  Bin 12798 -> 12798 bytes
 .../Transformation.wgt/images}/vache.png           |  Bin 15973 -> 15973 bytes
 .../interactivities/Transformation.wgt/index.html  |   78 +-
 .../Transformation.wgt/js/lib/ubw-main.js          |  478 +-
 .../interactivities/Transformation.wgt/js/main.js  |   31 +-
 .../Transformation.wgt/js/templates.js             |   48 +-
 .../config.xml                                     |    0
 .../css/basic.css                                  |    0
 .../search/Application Planete.wgs/icon.png        |  Bin 0 -> 7959 bytes
 .../Application Planete.wgs/icon.thumbnail.png     |  Bin 0 -> 7959 bytes
 .../images/down.png                                |  Bin 1192 -> 1192 bytes
 .../images/greySquare.png                          |  Bin 214 -> 214 bytes
 .../Application Planete.wgs}/images/icon-close.png |  Bin 1507 -> 1507 bytes
 .../images/popupBack.png                           |  Bin 931 -> 931 bytes
 .../images/search.png                              |  Bin 1797 -> 1797 bytes
 .../images/search_app.png                          |  Bin 1104 -> 1104 bytes
 .../images/thumbnail_icon.png                      |  Bin 0 -> 7959 bytes
 .../Application Planete.wgs}/images/trgDown.png    |  Bin 475 -> 475 bytes
 .../images/trgUp.png                               |  Bin 448 -> 448 bytes
 .../images/up.png                                  |  Bin 1196 -> 1196 bytes
 .../search/Application Planete.wgs/index.html      |  264 +
 .../scripts/jquery-1.6.2.min.js                    |    0
 .../library/search/Google images.wgs/css/basic.css |   12 +-
 .../library/search/Google images.wgs/index.html    |   25 +-
 .../config.xml                                     |    0
 .../css/basic.css                                  |    0
 .../search/Interactivite Planete.wgs/icon.png      |  Bin 0 -> 7390 bytes
 .../Interactivite Planete.wgs/icon.thumbnail.png   |  Bin 0 -> 7390 bytes
 .../images/down.png                                |  Bin 1192 -> 1192 bytes
 .../images/greySquare.png                          |  Bin 214 -> 214 bytes
 .../images/icon-close.png                          |  Bin 1507 -> 1507 bytes
 .../images/popupBack.png                           |  Bin 931 -> 931 bytes
 .../images/search.png                              |  Bin 1797 -> 1797 bytes
 .../images/search_app.png                          |  Bin 1104 -> 1104 bytes
 .../images/thumbnail_icon.png                      |  Bin 0 -> 7390 bytes
 .../Interactivite Planete.wgs}/images/trgDown.png  |  Bin 475 -> 475 bytes
 .../images/trgUp.png                               |  Bin 448 -> 448 bytes
 .../images/up.png                                  |  Bin 1196 -> 1196 bytes
 .../search/Interactivite Planete.wgs/index.html    |  264 +
 .../scripts/jquery-1.6.2.min.js                    |    0
 Sankore-3.1/resources/sankore.qrc                  |   19 +-
 Sankore-3.1/resources/startupHints/config.xml      |   16 +
 Sankore-3.1/resources/startupHints/css/basic.css   |   80 +
 .../Ass images.wgt => startupHints}/icon.svg       |    0
 Sankore-3.1/resources/startupHints/images/left.png |  Bin 0 -> 844 bytes
 .../resources/startupHints/images/right.png        |  Bin 0 -> 862 bytes
 Sankore-3.1/resources/startupHints/index.html      |   80 +
 .../js}/jquery-1.6.2.min.js                        |    0
 .../startupHints/js/jquery-ui-1.8.9.custom.min.js  |  781 +++
 .../resources/startupHints/locales/en/1.html       |   29 +
 .../resources/startupHints/locales/en/2.html       |   36 +
 .../resources/startupHints/locales/en/3.html       |   23 +
 .../resources/startupHints/locales/en/4.html       |   28 +
 .../resources/startupHints/locales/en/5.html       |   30 +
 .../resources/startupHints/locales/en/error.html   |   15 +
 .../startupHints/locales/en/images/image0021.png   |  Bin 0 -> 62734 bytes
 .../startupHints/locales/en/images/image0022.png   |  Bin 0 -> 60557 bytes
 .../startupHints/locales/en/images/image0033.png   |  Bin 0 -> 44288 bytes
 .../startupHints/locales/en/images/image0041.png   |  Bin 0 -> 29470 bytes
 .../startupHints/locales/en/images/image0051.png   |  Bin 0 -> 32103 bytes
 .../startupHints/locales/en/images/image0052.png   |  Bin 0 -> 24305 bytes
 .../startupHints/locales/en/images/image0061.png   |  Bin 0 -> 16102 bytes
 .../startupHints/locales/en/images/image0071.png   |  Bin 0 -> 51201 bytes
 .../startupHints/locales/en/images/image0081.png   |  Bin 0 -> 42129 bytes
 .../startupHints/locales/en/images/image0091.png   |  Bin 0 -> 44192 bytes
 .../startupHints/locales/en/images/image0101.png   |  Bin 0 -> 43486 bytes
 .../startupHints/locales/en/images/image0102.png   |  Bin 0 -> 29261 bytes
 .../startupHints/locales/en/images/image0111.png   |  Bin 0 -> 58800 bytes
 .../startupHints/locales/en/images/image0121.png   |  Bin 0 -> 8268 bytes
 .../startupHints/locales/en/images/image0122.png   |  Bin 0 -> 77296 bytes
 .../startupHints/locales/en/images/image0131.png   |  Bin 0 -> 90790 bytes
 .../startupHints/locales/en/images/image01401.png  |  Bin 0 -> 66063 bytes
 .../startupHints/locales/en/images/image0141.png   |  Bin 0 -> 26352 bytes
 .../startupHints/locales/en/images/image0142.png   |  Bin 0 -> 64412 bytes
 .../startupHints/locales/en/images/image0151.png   |  Bin 0 -> 16587 bytes
 .../startupHints/locales/en/images/image0152.png   |  Bin 0 -> 35683 bytes
 .../startupHints/locales/en/images/image0161.png   |  Bin 0 -> 196649 bytes
 .../startupHints/locales/en/images/image0171.png   |  Bin 0 -> 22086 bytes
 .../startupHints/locales/en/images/image0172.png   |  Bin 0 -> 7592 bytes
 .../startupHints/locales/en/images/image0181.png   |  Bin 0 -> 49801 bytes
 .../startupHints/locales/en/images/image0191.png   |  Bin 0 -> 51616 bytes
 .../startupHints/locales/en/images/image0201.png   |  Bin 0 -> 91070 bytes
 .../startupHints/locales/en/images/image0211.png   |  Bin 0 -> 48761 bytes
 .../startupHints/locales/en/images/image0241.png   |  Bin 0 -> 30992 bytes
 .../startupHints/locales/en/images/image0261.png   |  Bin 0 -> 10091 bytes
 .../startupHints/locales/en/images/image0271.png   |  Bin 0 -> 17395 bytes
 .../locales/en/images/opensankore.png}             |  Bin 32972 -> 32972 bytes
 .../resources/startupHints/locales/fr/1.html       |   76 +
 .../resources/startupHints/locales/fr/10.html      |   47 +
 .../resources/startupHints/locales/fr/11.html      |   32 +
 .../resources/startupHints/locales/fr/12.html      |   40 +
 .../resources/startupHints/locales/fr/13.html      |   27 +
 .../resources/startupHints/locales/fr/14.html      |   47 +
 .../resources/startupHints/locales/fr/14_01.html   |   27 +
 .../resources/startupHints/locales/fr/15.html      |   54 +
 .../resources/startupHints/locales/fr/16.html      |   40 +
 .../resources/startupHints/locales/fr/17.html      |   46 +
 .../resources/startupHints/locales/fr/18.html      |   38 +
 .../resources/startupHints/locales/fr/19.html      |   62 +
 .../resources/startupHints/locales/fr/2.html       |   62 +
 .../resources/startupHints/locales/fr/20.html      |   31 +
 .../resources/startupHints/locales/fr/21.html      |   28 +
 .../resources/startupHints/locales/fr/22.html      |   36 +
 .../resources/startupHints/locales/fr/23.html      |   36 +
 .../resources/startupHints/locales/fr/24.html      |   31 +
 .../resources/startupHints/locales/fr/25.html      |   32 +
 .../resources/startupHints/locales/fr/26.html      |   24 +
 .../resources/startupHints/locales/fr/3.html       |   49 +
 .../resources/startupHints/locales/fr/4.html       |   30 +
 .../resources/startupHints/locales/fr/5.html       |   31 +
 .../resources/startupHints/locales/fr/6.html       |   39 +
 .../resources/startupHints/locales/fr/7.html       |   46 +
 .../resources/startupHints/locales/fr/8.html       |   45 +
 .../resources/startupHints/locales/fr/9.html       |   25 +
 .../resources/startupHints/locales/fr/error.html   |   15 +
 .../startupHints/locales/fr/images/image0021.png   |  Bin 0 -> 62734 bytes
 .../startupHints/locales/fr/images/image0022.png   |  Bin 0 -> 60557 bytes
 .../startupHints/locales/fr/images/image0033.png   |  Bin 0 -> 44288 bytes
 .../startupHints/locales/fr/images/image0041.png   |  Bin 0 -> 29470 bytes
 .../startupHints/locales/fr/images/image0051.png   |  Bin 0 -> 32103 bytes
 .../startupHints/locales/fr/images/image0052.png   |  Bin 0 -> 24305 bytes
 .../startupHints/locales/fr/images/image0061.png   |  Bin 0 -> 16102 bytes
 .../startupHints/locales/fr/images/image0071.png   |  Bin 0 -> 51201 bytes
 .../startupHints/locales/fr/images/image0081.png   |  Bin 0 -> 42129 bytes
 .../startupHints/locales/fr/images/image0091.png   |  Bin 0 -> 44192 bytes
 .../startupHints/locales/fr/images/image0101.png   |  Bin 0 -> 43486 bytes
 .../startupHints/locales/fr/images/image0102.png   |  Bin 0 -> 29261 bytes
 .../startupHints/locales/fr/images/image0111.png   |  Bin 0 -> 58800 bytes
 .../startupHints/locales/fr/images/image0121.png   |  Bin 0 -> 8268 bytes
 .../startupHints/locales/fr/images/image0122.png   |  Bin 0 -> 77296 bytes
 .../startupHints/locales/fr/images/image0131.png   |  Bin 0 -> 90790 bytes
 .../startupHints/locales/fr/images/image01401.png  |  Bin 0 -> 66063 bytes
 .../startupHints/locales/fr/images/image0141.png   |  Bin 0 -> 26352 bytes
 .../startupHints/locales/fr/images/image0142.png   |  Bin 0 -> 64412 bytes
 .../startupHints/locales/fr/images/image0151.png   |  Bin 0 -> 16587 bytes
 .../startupHints/locales/fr/images/image0152.png   |  Bin 0 -> 35683 bytes
 .../startupHints/locales/fr/images/image0161.png   |  Bin 0 -> 196649 bytes
 .../startupHints/locales/fr/images/image0171.png   |  Bin 0 -> 22086 bytes
 .../startupHints/locales/fr/images/image0172.png   |  Bin 0 -> 7592 bytes
 .../startupHints/locales/fr/images/image0181.png   |  Bin 0 -> 49801 bytes
 .../startupHints/locales/fr/images/image0191.png   |  Bin 0 -> 51616 bytes
 .../startupHints/locales/fr/images/image0201.png   |  Bin 0 -> 91070 bytes
 .../startupHints/locales/fr/images/image0211.png   |  Bin 0 -> 48761 bytes
 .../startupHints/locales/fr/images/image0241.png   |  Bin 0 -> 30992 bytes
 .../startupHints/locales/fr/images/image0261.png   |  Bin 0 -> 10091 bytes
 .../startupHints/locales/fr/images/image0271.png   |  Bin 0 -> 17395 bytes
 .../locales/fr/images/opensankore.png}             |  Bin 32972 -> 32972 bytes
 .../Ass images.wgt => startupHints}/objects/0.gif  |  Bin 2628 -> 2628 bytes
 .../Ass images.wgt => startupHints}/objects/1.gif  |  Bin 1483 -> 1483 bytes
 .../Ass images.wgt => startupHints}/objects/2.gif  |  Bin 2008 -> 2008 bytes
 .../Ass images.wgt => startupHints}/objects/3.gif  |  Bin 2179 -> 2179 bytes
 .../Ass images.wgt => startupHints}/objects/4.gif  |  Bin 1772 -> 1772 bytes
 Sankore-3.1/resources/style.qss                    |    5 +
 Sankore-3.1/resources/win/sankore.rc               |    2 +-
 Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.cpp    | 3061 ++++++------
 Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.h      |  269 +-
 Sankore-3.1/src/adaptors/UBExportAdaptor.cpp       |    8 +-
 Sankore-3.1/src/adaptors/UBExportAdaptor.h         |   11 +-
 Sankore-3.1/src/adaptors/UBExportCFF.cpp           |   21 +-
 Sankore-3.1/src/adaptors/UBExportCFF.h             |   10 +-
 Sankore-3.1/src/adaptors/UBExportDocument.cpp      |   16 +-
 Sankore-3.1/src/adaptors/UBExportDocument.h        |   11 +-
 .../src/adaptors/UBExportDocumentSetAdaptor.cpp    |  191 +
 .../src/adaptors/UBExportDocumentSetAdaptor.h      |   60 +
 Sankore-3.1/src/adaptors/UBExportFullPDF.cpp       |   16 +-
 Sankore-3.1/src/adaptors/UBExportFullPDF.h         |    8 +-
 Sankore-3.1/src/adaptors/UBExportPDF.cpp           |   16 +-
 Sankore-3.1/src/adaptors/UBExportPDF.h             |    8 +-
 Sankore-3.1/src/adaptors/UBExportWeb.cpp           |   16 +-
 Sankore-3.1/src/adaptors/UBExportWeb.h             |    9 +-
 Sankore-3.1/src/adaptors/UBImportAdaptor.cpp       |    5 +-
 Sankore-3.1/src/adaptors/UBImportAdaptor.h         |    5 +-
 Sankore-3.1/src/adaptors/UBImportCFF.cpp           |  545 ++-
 Sankore-3.1/src/adaptors/UBImportCFF.h             |   63 +-
 Sankore-3.1/src/adaptors/UBImportDocument.cpp      |   12 +-
 Sankore-3.1/src/adaptors/UBImportDocument.h        |    5 +-
 .../src/adaptors/UBImportDocumentSetAdaptor.cpp    |  205 +
 .../src/adaptors/UBImportDocumentSetAdaptor.h      |   52 +
 Sankore-3.1/src/adaptors/UBImportImage.cpp         |    5 +-
 Sankore-3.1/src/adaptors/UBImportImage.h           |    5 +-
 Sankore-3.1/src/adaptors/UBImportPDF.cpp           |    5 +-
 Sankore-3.1/src/adaptors/UBImportPDF.h             |    5 +-
 .../src/adaptors/UBImportVirtualPrinter.cpp        |    4 +-
 Sankore-3.1/src/adaptors/UBIniFileParser.cpp       |    5 +-
 Sankore-3.1/src/adaptors/UBIniFileParser.h         |    5 +-
 .../src/adaptors/UBMetadataDcSubsetAdaptor.cpp     |    8 +-
 .../src/adaptors/UBMetadataDcSubsetAdaptor.h       |    5 +-
 Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.cpp    |  340 +-
 Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.h      |  497 +-
 Sankore-3.1/src/adaptors/UBThumbnailAdaptor.cpp    |  342 +-
 Sankore-3.1/src/adaptors/UBThumbnailAdaptor.h      |   68 +-
 Sankore-3.1/src/adaptors/UBWebPublisher.cpp        |   16 +-
 Sankore-3.1/src/adaptors/UBWebPublisher.h          |    9 +-
 Sankore-3.1/src/adaptors/adaptors.pri              |   10 +-
 .../adaptors/publishing/UBDocumentPublisher.cpp    | 1624 ++++----
 .../src/adaptors/publishing/UBDocumentPublisher.h  |  246 +-
 .../adaptors/publishing/UBSvgSubsetRasterizer.cpp  |    5 +-
 .../adaptors/publishing/UBSvgSubsetRasterizer.h    |    5 +-
 Sankore-3.1/src/api/UBLibraryAPI.cpp               |    5 +-
 Sankore-3.1/src/api/UBLibraryAPI.h                 |    5 +-
 Sankore-3.1/src/api/UBW3CWidgetAPI.cpp             |    5 +-
 Sankore-3.1/src/api/UBW3CWidgetAPI.h               |    5 +-
 Sankore-3.1/src/api/UBWidgetMessageAPI.cpp         |    5 +-
 Sankore-3.1/src/api/UBWidgetMessageAPI.h           |    5 +-
 Sankore-3.1/src/api/UBWidgetUniboardAPI.cpp        |   11 +-
 Sankore-3.1/src/api/UBWidgetUniboardAPI.h          |    5 +-
 Sankore-3.1/src/board/UBBoardController.cpp        | 5100 ++++++++++----------
 Sankore-3.1/src/board/UBBoardController.h          |  596 ++--
 Sankore-3.1/src/board/UBBoardPaletteManager.cpp    | 2022 ++++----
 Sankore-3.1/src/board/UBBoardPaletteManager.h      |  355 +-
 Sankore-3.1/src/board/UBBoardView.cpp              |  135 +-
 Sankore-3.1/src/board/UBBoardView.h                |  331 +-
 Sankore-3.1/src/board/UBDrawingController.cpp      |    5 +-
 Sankore-3.1/src/board/UBDrawingController.h        |    5 +-
 Sankore-3.1/src/board/UBFeaturesController.cpp     |  929 +++--
 Sankore-3.1/src/board/UBFeaturesController.h       |  318 +-
 Sankore-3.1/src/core/UB.h                          |   54 +-
 Sankore-3.1/src/core/UBApplication.cpp             |   27 +-
 Sankore-3.1/src/core/UBApplication.h               |  309 +-
 Sankore-3.1/src/core/UBApplicationController.cpp   | 1656 ++++----
 Sankore-3.1/src/core/UBApplicationController.h     |    5 +-
 Sankore-3.1/src/core/UBDisplayManager.cpp          |    5 +-
 Sankore-3.1/src/core/UBDisplayManager.h            |    5 +-
 Sankore-3.1/src/core/UBDocumentManager.cpp         |  619 ++--
 Sankore-3.1/src/core/UBDocumentManager.h           |    9 +-
 Sankore-3.1/src/core/UBDownloadManager.cpp         |  136 +-
 Sankore-3.1/src/core/UBDownloadManager.h           |   13 +-
 Sankore-3.1/src/core/UBDownloadThread.cpp          |    5 +-
 Sankore-3.1/src/core/UBDownloadThread.h            |    5 +-
 Sankore-3.1/src/core/UBIdleTimer.cpp               |    5 +-
 Sankore-3.1/src/core/UBIdleTimer.h                 |    5 +-
 Sankore-3.1/src/core/UBMimeData.cpp                |    7 +-
 Sankore-3.1/src/core/UBMimeData.h                  |    5 +-
 Sankore-3.1/src/core/UBPersistenceManager.cpp      |  430 ++-
 Sankore-3.1/src/core/UBPersistenceManager.h        |   85 +-
 Sankore-3.1/src/core/UBPreferencesController.cpp   |   76 +-
 Sankore-3.1/src/core/UBPreferencesController.h     |    9 +-
 Sankore-3.1/src/core/UBSceneCache.cpp              |   35 +-
 Sankore-3.1/src/core/UBSceneCache.h                |    6 +-
 Sankore-3.1/src/core/UBSetting.cpp                 |    5 +-
 Sankore-3.1/src/core/UBSetting.h                   |    5 +-
 Sankore-3.1/src/core/UBSettings.cpp                |   91 +-
 Sankore-3.1/src/core/UBSettings.h                  |   27 +-
 Sankore-3.1/src/core/main.cpp                      |    5 +-
 Sankore-3.1/src/core/memcheck.h                    |    5 +-
 .../src/customWidgets/UBActionableWidget.cpp       |    5 +-
 Sankore-3.1/src/customWidgets/UBActionableWidget.h |    5 +-
 .../src/customWidgets/UBGraphicsItemAction.cpp     |  188 +
 .../src/customWidgets/UBGraphicsItemAction.h       |  116 +
 Sankore-3.1/src/customWidgets/UBMediaWidget.cpp    |    5 +-
 Sankore-3.1/src/customWidgets/UBMediaWidget.h      |    5 +-
 Sankore-3.1/src/customWidgets/customWidgets.pri    |    6 +-
 Sankore-3.1/src/desktop/UBCustomCaptureWindow.cpp  |    4 +-
 Sankore-3.1/src/desktop/UBCustomCaptureWindow.h    |    4 +-
 .../src/desktop/UBDesktopAnnotationController.cpp  |   31 +-
 .../src/desktop/UBDesktopAnnotationController.h    |    5 +-
 Sankore-3.1/src/desktop/UBDesktopPalette.cpp       |    5 +-
 Sankore-3.1/src/desktop/UBDesktopPalette.h         |    5 +-
 .../src/desktop/UBDesktopPropertyPalette.cpp       |   13 +-
 Sankore-3.1/src/desktop/UBDesktopPropertyPalette.h |    4 +-
 Sankore-3.1/src/desktop/UBWindowCapture.h          |    5 +-
 .../src/desktop/UBWindowCaptureDelegate_win.cpp    |    5 +-
 .../src/desktop/UBWindowCaptureDelegate_win.h      |    5 +-
 Sankore-3.1/src/desktop/UBWindowCapture_linux.cpp  |    4 +-
 Sankore-3.1/src/desktop/UBWindowCapture_mac.mm     |   21 +
 Sankore-3.1/src/desktop/UBWindowCapture_win.cpp    |    4 +-
 Sankore-3.1/src/desktop/desktop.pri                |    4 +-
 Sankore-3.1/src/document/UBDocumentContainer.cpp   |  253 +-
 Sankore-3.1/src/document/UBDocumentContainer.h     |  108 +-
 Sankore-3.1/src/document/UBDocumentController.cpp  | 5023 +++++++++++++-------
 Sankore-3.1/src/document/UBDocumentController.h    |  554 ++-
 Sankore-3.1/src/document/UBDocumentProxy.cpp       |  455 +-
 Sankore-3.1/src/document/UBDocumentProxy.h         |  180 +-
 Sankore-3.1/src/domain/UBAbstractUndoCommand.cpp   |    5 +-
 Sankore-3.1/src/domain/UBAbstractUndoCommand.h     |    5 +-
 Sankore-3.1/src/domain/UBDocumentUndoCommand.cpp   |    5 +-
 Sankore-3.1/src/domain/UBDocumentUndoCommand.h     |    5 +-
 Sankore-3.1/src/domain/UBGraphicsAudioItem.h       |    4 +-
 .../src/domain/UBGraphicsAudioItemDelegate.cpp     |    4 +-
 .../src/domain/UBGraphicsAudioItemDelegate.h       |    4 +-
 Sankore-3.1/src/domain/UBGraphicsDelegateFrame.cpp | 1973 ++++----
 Sankore-3.1/src/domain/UBGraphicsDelegateFrame.h   |    5 +-
 .../src/domain/UBGraphicsGroupContainerItem.cpp    |   39 +-
 .../src/domain/UBGraphicsGroupContainerItem.h      |    7 +-
 .../UBGraphicsGroupContainerItemDelegate.cpp       |   77 +-
 .../domain/UBGraphicsGroupContainerItemDelegate.h  |   11 +-
 Sankore-3.1/src/domain/UBGraphicsItemDelegate.cpp  |  250 +-
 Sankore-3.1/src/domain/UBGraphicsItemDelegate.h    |   40 +-
 .../src/domain/UBGraphicsItemGroupUndoCommand.cpp  |    5 +-
 .../src/domain/UBGraphicsItemGroupUndoCommand.h    |    5 +-
 .../domain/UBGraphicsItemTransformUndoCommand.cpp  |    5 +-
 .../domain/UBGraphicsItemTransformUndoCommand.h    |    5 +-
 .../src/domain/UBGraphicsItemUndoCommand.cpp       |  487 +-
 Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.h |    5 +-
 Sankore-3.1/src/domain/UBGraphicsMediaItem.cpp     |   30 +-
 Sankore-3.1/src/domain/UBGraphicsMediaItem.h       |    6 +-
 .../src/domain/UBGraphicsMediaItemDelegate.cpp     |   10 +-
 .../src/domain/UBGraphicsMediaItemDelegate.h       |    5 +-
 Sankore-3.1/src/domain/UBGraphicsPDFItem.cpp       |    5 +-
 Sankore-3.1/src/domain/UBGraphicsPDFItem.h         |    5 +-
 Sankore-3.1/src/domain/UBGraphicsPixmapItem.cpp    |   27 +-
 Sankore-3.1/src/domain/UBGraphicsPixmapItem.h      |    5 +-
 Sankore-3.1/src/domain/UBGraphicsPolygonItem.cpp   |    7 +-
 Sankore-3.1/src/domain/UBGraphicsPolygonItem.h     |    5 +-
 Sankore-3.1/src/domain/UBGraphicsProxyWidget.cpp   |    5 +-
 Sankore-3.1/src/domain/UBGraphicsProxyWidget.h     |    5 +-
 Sankore-3.1/src/domain/UBGraphicsScene.cpp         |  101 +-
 Sankore-3.1/src/domain/UBGraphicsScene.h           |    6 +-
 Sankore-3.1/src/domain/UBGraphicsStroke.cpp        |    5 +-
 Sankore-3.1/src/domain/UBGraphicsStroke.h          |    5 +-
 Sankore-3.1/src/domain/UBGraphicsStrokesGroup.cpp  |   56 +-
 Sankore-3.1/src/domain/UBGraphicsStrokesGroup.h    |    5 +-
 Sankore-3.1/src/domain/UBGraphicsSvgItem.cpp       |   33 +-
 Sankore-3.1/src/domain/UBGraphicsSvgItem.h         |    5 +-
 Sankore-3.1/src/domain/UBGraphicsTextItem.cpp      |   53 +-
 Sankore-3.1/src/domain/UBGraphicsTextItem.h        |    5 +-
 .../src/domain/UBGraphicsTextItemDelegate.cpp      |   32 +-
 .../src/domain/UBGraphicsTextItemDelegate.h        |    5 +-
 .../src/domain/UBGraphicsTextItemUndoCommand.cpp   |    5 +-
 .../src/domain/UBGraphicsTextItemUndoCommand.h     |    5 +-
 Sankore-3.1/src/domain/UBGraphicsVideoItem.cpp     |    5 +-
 Sankore-3.1/src/domain/UBGraphicsVideoItem.h       |    5 +-
 .../src/domain/UBGraphicsVideoItemDelegate.cpp     |    4 +-
 .../src/domain/UBGraphicsVideoItemDelegate.h       |  211 +-
 Sankore-3.1/src/domain/UBGraphicsWidgetItem.cpp    |   26 +-
 Sankore-3.1/src/domain/UBGraphicsWidgetItem.h      |    6 +-
 .../src/domain/UBGraphicsWidgetItemDelegate.cpp    |    5 +-
 .../src/domain/UBGraphicsWidgetItemDelegate.h      |    5 +-
 Sankore-3.1/src/domain/UBItem.cpp                  |   10 +-
 Sankore-3.1/src/domain/UBItem.h                    |    6 +-
 Sankore-3.1/src/domain/UBPageSizeUndoCommand.cpp   |    5 +-
 Sankore-3.1/src/domain/UBPageSizeUndoCommand.h     |    5 +-
 Sankore-3.1/src/domain/UBResizableGraphicsItem.cpp |    5 +-
 Sankore-3.1/src/domain/UBResizableGraphicsItem.h   |    5 +-
 Sankore-3.1/src/frameworks/MacUtils.h              |    4 +-
 Sankore-3.1/src/frameworks/UBBase32.cpp            |    5 +-
 Sankore-3.1/src/frameworks/UBBase32.h              |    5 +-
 Sankore-3.1/src/frameworks/UBCoreGraphicsScene.cpp |   21 +-
 Sankore-3.1/src/frameworks/UBCoreGraphicsScene.h   |    7 +-
 Sankore-3.1/src/frameworks/UBCryptoUtils.cpp       |    5 +-
 Sankore-3.1/src/frameworks/UBCryptoUtils.h         |    5 +-
 Sankore-3.1/src/frameworks/UBFileSystemUtils.cpp   |   22 +-
 Sankore-3.1/src/frameworks/UBFileSystemUtils.h     |    5 +-
 Sankore-3.1/src/frameworks/UBGeometryUtils.cpp     |  441 +-
 Sankore-3.1/src/frameworks/UBGeometryUtils.h       |   77 +-
 Sankore-3.1/src/frameworks/UBPlatformUtils.cpp     |    5 +-
 Sankore-3.1/src/frameworks/UBPlatformUtils.h       |   48 +-
 .../src/frameworks/UBPlatformUtils_linux.cpp       |    5 +-
 Sankore-3.1/src/frameworks/UBPlatformUtils_mac.mm  |   43 +-
 Sankore-3.1/src/frameworks/UBPlatformUtils_win.cpp |    5 +-
 Sankore-3.1/src/frameworks/UBStringUtils.cpp       |    5 +-
 Sankore-3.1/src/frameworks/UBStringUtils.h         |    5 +-
 Sankore-3.1/src/frameworks/UBVersion.cpp           |    5 +-
 Sankore-3.1/src/frameworks/UBVersion.h             |    5 +-
 Sankore-3.1/src/frameworks/frameworks.pri          |   13 +-
 Sankore-3.1/src/globals/UBGlobals.h                |    4 +-
 Sankore-3.1/src/gui/UBActionPalette.cpp            |    6 +-
 Sankore-3.1/src/gui/UBActionPalette.h              |    5 +-
 Sankore-3.1/src/gui/UBBlackoutWidget.cpp           |    5 +-
 Sankore-3.1/src/gui/UBBlackoutWidget.h             |    5 +-
 Sankore-3.1/src/gui/UBCachePropertiesWidget.cpp    |  395 ++-
 Sankore-3.1/src/gui/UBCachePropertiesWidget.h      |   64 +-
 Sankore-3.1/src/gui/UBCircleFrame.cpp              |    5 +-
 Sankore-3.1/src/gui/UBCircleFrame.h                |    5 +-
 Sankore-3.1/src/gui/UBClockPalette.h               |    4 +-
 Sankore-3.1/src/gui/UBColorPicker.cpp              |    5 +-
 Sankore-3.1/src/gui/UBColorPicker.h                |    5 +-
 Sankore-3.1/src/gui/UBCreateLinkPalette.cpp        |  360 ++
 Sankore-3.1/src/gui/UBCreateLinkPalette.h          |  114 +
 Sankore-3.1/src/gui/UBDockDownloadWidget.cpp       |    8 +-
 Sankore-3.1/src/gui/UBDockDownloadWidget.h         |    7 +-
 Sankore-3.1/src/gui/UBDockPalette.cpp              |  855 ++--
 Sankore-3.1/src/gui/UBDockPalette.h                |    5 +-
 Sankore-3.1/src/gui/UBDockPaletteWidget.cpp        |   14 +-
 Sankore-3.1/src/gui/UBDockPaletteWidget.h          |   15 +-
 Sankore-3.1/src/gui/UBDockTeacherGuideWidget.cpp   |    8 +-
 Sankore-3.1/src/gui/UBDockTeacherGuideWidget.h     |    8 +-
 Sankore-3.1/src/gui/UBDocumentNavigator.cpp        |  550 ++--
 Sankore-3.1/src/gui/UBDocumentNavigator.h          |  125 +-
 Sankore-3.1/src/gui/UBDocumentThumbnailWidget.cpp  |  598 ++--
 Sankore-3.1/src/gui/UBDocumentThumbnailWidget.h    |    5 +-
 Sankore-3.1/src/gui/UBDocumentToolsPalette.cpp     |    5 +-
 Sankore-3.1/src/gui/UBDocumentToolsPalette.h       |    5 +-
 Sankore-3.1/src/gui/UBDocumentTreeWidget.cpp       |  892 ++--
 Sankore-3.1/src/gui/UBDocumentTreeWidget.h         |    5 +-
 Sankore-3.1/src/gui/UBDownloadWidget.cpp           |    5 +-
 Sankore-3.1/src/gui/UBDownloadWidget.h             |    5 +-
 Sankore-3.1/src/gui/UBFavoriteToolPalette.cpp      |    5 +-
 Sankore-3.1/src/gui/UBFavoriteToolPalette.h        |    5 +-
 Sankore-3.1/src/gui/UBFeaturesActionBar.cpp        |   87 +-
 Sankore-3.1/src/gui/UBFeaturesActionBar.h          |   10 +-
 Sankore-3.1/src/gui/UBFeaturesWidget.cpp           |  162 +-
 Sankore-3.1/src/gui/UBFeaturesWidget.h             |  102 +-
 Sankore-3.1/src/gui/UBFloatingPalette.cpp          |   62 +-
 Sankore-3.1/src/gui/UBFloatingPalette.h            |   12 +-
 Sankore-3.1/src/gui/UBIconButton.cpp               |    5 +-
 Sankore-3.1/src/gui/UBIconButton.h                 |    5 +-
 Sankore-3.1/src/gui/UBKeyboardPalette.cpp          | 1480 +++---
 Sankore-3.1/src/gui/UBKeyboardPalette.h            |   42 +-
 Sankore-3.1/src/gui/UBKeyboardPalette_linux.cpp    |    5 +-
 Sankore-3.1/src/gui/UBKeyboardPalette_mac.cpp      |   19 +-
 Sankore-3.1/src/gui/UBKeyboardPalette_win.cpp      |  157 +-
 Sankore-3.1/src/gui/UBLeftPalette.cpp              |   78 +-
 Sankore-3.1/src/gui/UBLeftPalette.h                |    5 +-
 Sankore-3.1/src/gui/UBMagnifer.cpp                 |  851 ++--
 Sankore-3.1/src/gui/UBMagnifer.h                   |  195 +-
 Sankore-3.1/src/gui/UBMainWindow.cpp               |   37 +-
 Sankore-3.1/src/gui/UBMainWindow.h                 |    9 +-
 Sankore-3.1/src/gui/UBMessageWindow.cpp            |    5 +-
 Sankore-3.1/src/gui/UBMessageWindow.h              |    5 +-
 Sankore-3.1/src/gui/UBMessagesDialog.cpp           |    5 +-
 Sankore-3.1/src/gui/UBMessagesDialog.h             |    5 +-
 Sankore-3.1/src/gui/UBMousePressFilter.cpp         |    5 +-
 Sankore-3.1/src/gui/UBMousePressFilter.h           |    5 +-
 Sankore-3.1/src/gui/UBNavigatorPalette.cpp         |  269 +-
 Sankore-3.1/src/gui/UBNavigatorPalette.h           |  109 +-
 Sankore-3.1/src/gui/UBPageNavigationWidget.cpp     |  320 +-
 Sankore-3.1/src/gui/UBPageNavigationWidget.h       |  125 +-
 Sankore-3.1/src/gui/UBPropertyPalette.cpp          |    5 +-
 Sankore-3.1/src/gui/UBPropertyPalette.h            |    5 +-
 Sankore-3.1/src/gui/UBResources.cpp                |    5 +-
 Sankore-3.1/src/gui/UBResources.h                  |    5 +-
 Sankore-3.1/src/gui/UBRightPalette.cpp             |  102 +-
 Sankore-3.1/src/gui/UBRightPalette.h               |    7 +-
 Sankore-3.1/src/gui/UBRubberBand.cpp               |    5 +-
 Sankore-3.1/src/gui/UBRubberBand.h                 |    5 +-
 Sankore-3.1/src/gui/UBScreenMirror.cpp             |    5 +-
 Sankore-3.1/src/gui/UBScreenMirror.h               |    5 +-
 Sankore-3.1/src/gui/UBSpinningWheel.cpp            |    5 +-
 Sankore-3.1/src/gui/UBSpinningWheel.h              |    5 +-
 Sankore-3.1/src/gui/UBStartupHintsPalette.cpp      |  122 +
 Sankore-3.1/src/gui/UBStartupHintsPalette.h        |   67 +
 Sankore-3.1/src/gui/UBStylusPalette.cpp            |    5 +-
 Sankore-3.1/src/gui/UBStylusPalette.h              |    5 +-
 Sankore-3.1/src/gui/UBTeacherGuideWidget.cpp       |   70 +-
 Sankore-3.1/src/gui/UBTeacherGuideWidget.h         |    5 +-
 Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.cpp |  136 +-
 Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.h   |    7 +-
 Sankore-3.1/src/gui/UBThumbnailView.cpp            |    5 +-
 Sankore-3.1/src/gui/UBThumbnailView.h              |    5 +-
 Sankore-3.1/src/gui/UBThumbnailWidget.cpp          | 1908 ++++----
 Sankore-3.1/src/gui/UBThumbnailWidget.h            |  793 ++--
 Sankore-3.1/src/gui/UBToolWidget.cpp               |    5 +-
 Sankore-3.1/src/gui/UBToolWidget.h                 |    5 +-
 Sankore-3.1/src/gui/UBToolbarButtonGroup.cpp       |    5 +-
 Sankore-3.1/src/gui/UBToolbarButtonGroup.h         |    5 +-
 Sankore-3.1/src/gui/UBUpdateDlg.cpp                |    5 +-
 Sankore-3.1/src/gui/UBUpdateDlg.h                  |    5 +-
 Sankore-3.1/src/gui/UBVideoPlayer.cpp              |    5 +-
 Sankore-3.1/src/gui/UBVideoPlayer.h                |    5 +-
 Sankore-3.1/src/gui/UBWebToolsPalette.cpp          |    9 +-
 Sankore-3.1/src/gui/UBWebToolsPalette.h            |    5 +-
 Sankore-3.1/src/gui/UBWidgetMirror.cpp             |    5 +-
 Sankore-3.1/src/gui/UBWidgetMirror.h               |    5 +-
 Sankore-3.1/src/gui/UBZoomPalette.cpp              |   11 +-
 Sankore-3.1/src/gui/UBZoomPalette.h                |    5 +-
 Sankore-3.1/src/gui/gui.pri                        |   12 +-
 Sankore-3.1/src/interfaces/IDataStorage.h          |    5 +-
 Sankore-3.1/src/network/UBAutoSaver.cpp            |    5 +-
 Sankore-3.1/src/network/UBAutoSaver.h              |    5 +-
 Sankore-3.1/src/network/UBCookieJar.cpp            |    5 +-
 Sankore-3.1/src/network/UBCookieJar.h              |    5 +-
 Sankore-3.1/src/network/UBHttpFileDownloader.cpp   |    5 +-
 Sankore-3.1/src/network/UBHttpFileDownloader.h     |    5 +-
 Sankore-3.1/src/network/UBHttpGet.cpp              |    5 +-
 Sankore-3.1/src/network/UBHttpGet.h                |    5 +-
 Sankore-3.1/src/network/UBNetworkAccessManager.cpp |    5 +-
 Sankore-3.1/src/network/UBNetworkAccessManager.h   |    5 +-
 Sankore-3.1/src/network/UBServerXMLHttpRequest.cpp |    5 +-
 Sankore-3.1/src/network/UBServerXMLHttpRequest.h   |    5 +-
 Sankore-3.1/src/pdf-merger/ASCII85Decode.cpp       |    5 +-
 Sankore-3.1/src/pdf-merger/ASCII85Decode.h         |    5 +-
 Sankore-3.1/src/pdf-merger/ASCIIHexDecode.cpp      |    5 +-
 Sankore-3.1/src/pdf-merger/ASCIIHexDecode.h        |    5 +-
 .../src/pdf-merger/AbstractBoxElementHandler.h     |    5 +-
 Sankore-3.1/src/pdf-merger/AnnotsHandler.cpp       |    5 +-
 Sankore-3.1/src/pdf-merger/AnnotsHandler.h         |    5 +-
 Sankore-3.1/src/pdf-merger/CCITTFaxDecode.cpp      |    5 +-
 Sankore-3.1/src/pdf-merger/CCITTFaxDecode.h        |    5 +-
 Sankore-3.1/src/pdf-merger/Config.h                |    5 +-
 Sankore-3.1/src/pdf-merger/ContentHandler.cpp      |    5 +-
 Sankore-3.1/src/pdf-merger/ContentHandler.h        |    5 +-
 Sankore-3.1/src/pdf-merger/CropBoxElementHandler.h |    5 +-
 Sankore-3.1/src/pdf-merger/DCTDecode.cpp           |    5 +-
 Sankore-3.1/src/pdf-merger/DCTDecode.h             |    5 +-
 Sankore-3.1/src/pdf-merger/Decoder.h               |    5 +-
 Sankore-3.1/src/pdf-merger/Document.cpp            |    5 +-
 Sankore-3.1/src/pdf-merger/Document.h              |    5 +-
 Sankore-3.1/src/pdf-merger/Exception.h             |    5 +-
 Sankore-3.1/src/pdf-merger/FileIsAbsentException.h |    5 +-
 Sankore-3.1/src/pdf-merger/Filter.cpp              |    5 +-
 Sankore-3.1/src/pdf-merger/Filter.h                |    5 +-
 Sankore-3.1/src/pdf-merger/FilterPredictor.cpp     |    5 +-
 Sankore-3.1/src/pdf-merger/FilterPredictor.h       |    5 +-
 Sankore-3.1/src/pdf-merger/FlateDecode.cpp         |    5 +-
 Sankore-3.1/src/pdf-merger/FlateDecode.h           |    5 +-
 Sankore-3.1/src/pdf-merger/JBIG2Decode.cpp         |    5 +-
 Sankore-3.1/src/pdf-merger/JBIG2Decode.h           |    5 +-
 Sankore-3.1/src/pdf-merger/LZWDecode.cpp           |    5 +-
 Sankore-3.1/src/pdf-merger/LZWDecode.h             |    5 +-
 .../src/pdf-merger/MediaBoxElementHandler.h        |    5 +-
 Sankore-3.1/src/pdf-merger/MergePageDescription.h  |    5 +-
 Sankore-3.1/src/pdf-merger/Merger.cpp              |    5 +-
 Sankore-3.1/src/pdf-merger/Merger.h                |    5 +-
 Sankore-3.1/src/pdf-merger/Object.cpp              |    5 +-
 Sankore-3.1/src/pdf-merger/Object.h                |    5 +-
 .../src/pdf-merger/OverlayDocumentParser.cpp       |    5 +-
 Sankore-3.1/src/pdf-merger/OverlayDocumentParser.h |    5 +-
 Sankore-3.1/src/pdf-merger/Page.cpp                |    5 +-
 Sankore-3.1/src/pdf-merger/Page.h                  |    5 +-
 Sankore-3.1/src/pdf-merger/PageElementHandler.cpp  |    5 +-
 Sankore-3.1/src/pdf-merger/PageElementHandler.h    |    5 +-
 Sankore-3.1/src/pdf-merger/PageParser.h            |    5 +-
 Sankore-3.1/src/pdf-merger/Parser.cpp              |    5 +-
 Sankore-3.1/src/pdf-merger/Parser.h                |    5 +-
 Sankore-3.1/src/pdf-merger/Rectangle.cpp           |    5 +-
 Sankore-3.1/src/pdf-merger/Rectangle.h             |    5 +-
 Sankore-3.1/src/pdf-merger/RemoveHimSelfHandler.h  |    5 +-
 .../src/pdf-merger/RemoveHimselfHandler.cpp        |    5 +-
 Sankore-3.1/src/pdf-merger/RotationHandler.h       |    5 +-
 Sankore-3.1/src/pdf-merger/RunLengthDecode.cpp     |    5 +-
 Sankore-3.1/src/pdf-merger/RunLengthDecode.h       |    5 +-
 Sankore-3.1/src/pdf-merger/Transformation.h        |    5 +-
 Sankore-3.1/src/pdf-merger/TypeElementHandler.h    |    5 +-
 Sankore-3.1/src/pdf-merger/Utils.cpp               |    5 +-
 Sankore-3.1/src/pdf-merger/Utils.h                 |    5 +-
 Sankore-3.1/src/pdf/GraphicsPDFItem.cpp            |    5 +-
 Sankore-3.1/src/pdf/GraphicsPDFItem.h              |    5 +-
 Sankore-3.1/src/pdf/PDFRenderer.cpp                |    5 +-
 Sankore-3.1/src/pdf/PDFRenderer.h                  |    5 +-
 Sankore-3.1/src/pdf/UBWebPluginPDFWidget.cpp       |    5 +-
 Sankore-3.1/src/pdf/UBWebPluginPDFWidget.h         |    5 +-
 Sankore-3.1/src/pdf/XPDFRenderer.cpp               |    5 +-
 Sankore-3.1/src/pdf/XPDFRenderer.h                 |    5 +-
 Sankore-3.1/src/podcast/UBAbstractVideoEncoder.cpp |    5 +-
 Sankore-3.1/src/podcast/UBAbstractVideoEncoder.h   |    5 +-
 Sankore-3.1/src/podcast/UBPodcastController.cpp    |    5 +-
 Sankore-3.1/src/podcast/UBPodcastController.h      |    5 +-
 .../src/podcast/UBPodcastRecordingPalette.cpp      |    5 +-
 .../src/podcast/UBPodcastRecordingPalette.h        |    5 +-
 .../intranet/UBIntranetPodcastPublisher.cpp        |    5 +-
 .../podcast/intranet/UBIntranetPodcastPublisher.h  |    5 +-
 .../src/podcast/quicktime/UBAudioQueueRecorder.cpp |    5 +-
 .../src/podcast/quicktime/UBAudioQueueRecorder.h   |    5 +-
 .../src/podcast/quicktime/UBQuickTimeFile.cpp      |    5 +-
 .../src/podcast/quicktime/UBQuickTimeFile.h        |    5 +-
 .../podcast/quicktime/UBQuickTimeVideoEncoder.cpp  |    5 +-
 .../podcast/quicktime/UBQuickTimeVideoEncoder.h    |    5 +-
 .../src/podcast/windowsmedia/UBWaveRecorder.cpp    |    5 +-
 .../src/podcast/windowsmedia/UBWaveRecorder.h      |    5 +-
 .../podcast/windowsmedia/UBWindowsMediaFile.cpp    |    5 +-
 .../src/podcast/windowsmedia/UBWindowsMediaFile.h  |    5 +-
 .../windowsmedia/UBWindowsMediaVideoEncoder.cpp    |    5 +-
 .../windowsmedia/UBWindowsMediaVideoEncoder.h      |    5 +-
 .../src/podcast/youtube/UBYouTubePublisher.cpp     |    5 +-
 .../src/podcast/youtube/UBYouTubePublisher.h       |    5 +-
 Sankore-3.1/src/tools/UBAbstractDrawRuler.cpp      |    5 +-
 Sankore-3.1/src/tools/UBAbstractDrawRuler.h        |    5 +-
 Sankore-3.1/src/tools/UBGraphicsAristo.cpp         |   12 +-
 Sankore-3.1/src/tools/UBGraphicsAristo.h           |   12 +-
 Sankore-3.1/src/tools/UBGraphicsCache.cpp          |  171 +-
 Sankore-3.1/src/tools/UBGraphicsCache.h            |   45 +-
 Sankore-3.1/src/tools/UBGraphicsCompass.cpp        |    5 +-
 Sankore-3.1/src/tools/UBGraphicsCompass.h          |    5 +-
 Sankore-3.1/src/tools/UBGraphicsCurtainItem.cpp    |    5 +-
 Sankore-3.1/src/tools/UBGraphicsCurtainItem.h      |    5 +-
 .../src/tools/UBGraphicsCurtainItemDelegate.cpp    |    5 +-
 .../src/tools/UBGraphicsCurtainItemDelegate.h      |    5 +-
 Sankore-3.1/src/tools/UBGraphicsProtractor.cpp     |    5 +-
 Sankore-3.1/src/tools/UBGraphicsProtractor.h       |    5 +-
 Sankore-3.1/src/tools/UBGraphicsRuler.cpp          |    5 +-
 Sankore-3.1/src/tools/UBGraphicsRuler.h            |    5 +-
 Sankore-3.1/src/tools/UBGraphicsTriangle.cpp       |    5 +-
 Sankore-3.1/src/tools/UBGraphicsTriangle.h         |    5 +-
 Sankore-3.1/src/tools/UBToolsManager.cpp           |    5 +-
 Sankore-3.1/src/tools/UBToolsManager.h             |    5 +-
 .../src/transition/UniboardSankoreTransition.cpp   |    5 +-
 .../src/transition/UniboardSankoreTransition.h     |    5 +-
 Sankore-3.1/src/web/UBOEmbedParser.cpp             |    5 +-
 Sankore-3.1/src/web/UBOEmbedParser.h               |    5 +-
 Sankore-3.1/src/web/UBTrapFlashController.cpp      |  529 ++-
 Sankore-3.1/src/web/UBTrapFlashController.h        |   61 +-
 Sankore-3.1/src/web/UBWebController.cpp            |   79 +-
 Sankore-3.1/src/web/UBWebController.h              |   24 +-
 Sankore-3.1/src/web/UBWebKitUtils.cpp              |  235 +-
 Sankore-3.1/src/web/UBWebKitUtils.h                |   29 +-
 Sankore-3.1/src/web/UBWebPage.cpp                  |    5 +-
 Sankore-3.1/src/web/UBWebPage.h                    |    5 +-
 Sankore-3.1/src/web/UBWebPluginWidget.cpp          |    5 +-
 Sankore-3.1/src/web/UBWebPluginWidget.h            |    5 +-
 Sankore-3.1/src/web/browser/WBBrowserWindow.cpp    |    5 +-
 Sankore-3.1/src/web/browser/WBBrowserWindow.h      |    5 +-
 Sankore-3.1/src/web/browser/WBChaseWidget.cpp      |    5 +-
 Sankore-3.1/src/web/browser/WBChaseWidget.h        |    5 +-
 Sankore-3.1/src/web/browser/WBDownloadManager.cpp  |    5 +-
 Sankore-3.1/src/web/browser/WBDownloadManager.h    |    5 +-
 Sankore-3.1/src/web/browser/WBEditTableView.cpp    |    5 +-
 Sankore-3.1/src/web/browser/WBEditTableView.h      |    5 +-
 Sankore-3.1/src/web/browser/WBHistory.cpp          |    5 +-
 Sankore-3.1/src/web/browser/WBHistory.h            |    5 +-
 Sankore-3.1/src/web/browser/WBModelMenu.cpp        |    5 +-
 Sankore-3.1/src/web/browser/WBModelMenu.h          |    5 +-
 Sankore-3.1/src/web/browser/WBSearchLineEdit.cpp   |    5 +-
 Sankore-3.1/src/web/browser/WBSearchLineEdit.h     |    5 +-
 Sankore-3.1/src/web/browser/WBSqueezeLabel.cpp     |    5 +-
 Sankore-3.1/src/web/browser/WBSqueezeLabel.h       |    5 +-
 Sankore-3.1/src/web/browser/WBTabWidget.cpp        |   76 +-
 Sankore-3.1/src/web/browser/WBTabWidget.h          |   11 +-
 Sankore-3.1/src/web/browser/WBToolBarSearch.cpp    |    5 +-
 Sankore-3.1/src/web/browser/WBToolBarSearch.h      |    5 +-
 .../src/web/browser/WBTrapWebPageContent.cpp       |  193 +
 Sankore-3.1/src/web/browser/WBTrapWebPageContent.h |   67 +
 Sankore-3.1/src/web/browser/WBUrlLineEdit.cpp      |    5 +-
 Sankore-3.1/src/web/browser/WBUrlLineEdit.h        |    5 +-
 Sankore-3.1/src/web/browser/WBWebTrapWebView.cpp   |  101 +-
 Sankore-3.1/src/web/browser/WBWebTrapWebView.h     |   22 +-
 Sankore-3.1/src/web/browser/WBWebView.cpp          |    5 +-
 Sankore-3.1/src/web/browser/WBWebView.h            |    5 +-
 Sankore-3.1/src/web/web.pri                        |    7 +-
 .../CrashReporterSymbolSupplier.cpp                |   17 +-
 .../CrashReporterSymbolSupplier.h                  |   18 +-
 .../tools/CrashReportViewer/CrashWindow.cpp        |   18 +-
 Sankore-3.1/tools/CrashReportViewer/CrashWindow.h  |   17 +-
 Sankore-3.1/tools/CrashReportViewer/main.cpp       |   18 +-
 .../tools/pdf2image/core/UBPlatformUtils.cpp       |   17 +-
 Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.h |   18 +-
 Sankore-3.1/tools/pdf2image/pdf2image.cpp          |   17 +-
 835 files changed, 77631 insertions(+), 57028 deletions(-)
 create mode 100644 Sankore-3.1/C++StandardHeaderFile.txt
 create mode 100644 Sankore-3.1/LICENSE.txt
 delete mode 100644 Sankore-3.1/lgplC++StandardHeaderFile.txt
 delete mode 100644 Sankore-3.1/release.win7.vc9.64.bat
 create mode 100644 Sankore-3.1/resources/i18n/sankore_co.ts
 create mode 100644 Sankore-3.1/resources/i18n/sankore_eu.ts
 create mode 100644 Sankore-3.1/resources/i18n/sankore_hi.ts
 create mode 100644 Sankore-3.1/resources/images/circle.svg
 create mode 100644 Sankore-3.1/resources/images/createLinkPalette/LinkPage.svg
 create mode 100644 Sankore-3.1/resources/images/createLinkPalette/LinkWeb.svg
 create mode 100644 Sankore-3.1/resources/images/createLinkPalette/PlayAudio.svg
 create mode 100644 Sankore-3.1/resources/images/libpalette/BookmarkCategory.svg
 create mode 100644 Sankore-3.1/resources/images/libpalette/bookmarkIcon.svg
 create mode 100644 Sankore-3.1/resources/images/roundeRrectangle.svg
 delete mode 100644 Sankore-3.1/resources/images/teacher_close_disabled.png
 delete mode 100644 Sankore-3.1/resources/images/teacher_open_disabled.png
 create mode 100644 Sankore-3.1/resources/images/toolbar/bookmark.png
 create mode 100644 Sankore-3.1/resources/images/toolbar/bookmark.svg
 create mode 100644 Sankore-3.1/resources/images/trapFlashPalette/downloadToBoard.svg
 create mode 100644 Sankore-3.1/resources/images/trapFlashPalette/downloadToLibrary.svg
 create mode 100644 Sankore-3.1/resources/images/trapFlashPalette/linkToBoard.svg
 create mode 100644 Sankore-3.1/resources/images/trapFlashPalette/linkToLibrary.svg
 create mode 100644 Sankore-3.1/resources/images/trapFlashPalette/trappedFlashIcon.svg
 create mode 100644 Sankore-3.1/resources/images/trapFlashPalette/trappedIcon.svg
 create mode 100644 Sankore-3.1/resources/images/trapFlashPalette/trappedSoundIcon.svg
 create mode 100644 Sankore-3.1/resources/images/trapFlashPalette/trappedVideoIcon.svg
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/js/script.js
 rename Sankore-3.1/resources/library/interactivities/Ass images.wgt/{ => locales/en}/img/drop_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/en/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/en/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/js/script.js
 rename Sankore-3.1/resources/library/interactivities/Ass sons.wgt/{ => locales/en}/img/drop_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/en/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/en/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/en/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/en/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/img/drop_img.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/img/drop_img.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/en/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/en/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/en/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/en/scripts/selQuestionApp.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/scripts/selQuestionApp.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/en/index.html
 rename Sankore-3.1/resources/library/interactivities/Contraste.wgt/{ => locales/en}/scripts/blackYellow.js (100%)
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/en/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/en/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/js/script.js
 rename Sankore-3.1/resources/library/interactivities/Ordre images.wgt/{ => locales/en}/img/drop_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/en/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/en/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/en/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/en/js/script.js
 rename Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/{beep.mp3 => example_en.mp3} (100%)
 copy Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/{locales/fr/objects/exemple.mp3 => objects/example_fr.mp3} (100%)
 copy Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/{locales/ru/objects/example.mp3 => objects/example_ru.mp3} (100%)
 copy Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/{fr => en}/index.html (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/en/scripts/template2.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/scripts/template2.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/en/index.html
 rename Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/{scripts => locales/en/script}/template2.js (100%)
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/en/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/en/js/script.js
 copy Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/{fr => en}/index.html (100%)
 rename Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/{ => locales/en}/scripts/wcontainer.js (100%)
 copy Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/{fr => en}/index.html (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/en/scripts/wcontainer.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/wcontainer.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/en/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/en/scripts/wcontainer.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/wcontainer.js
 copy Sankore-3.1/resources/library/{pictures/Animaux => interactivities/Transformation.wgt/images}/boeuf.png (100%)
 copy Sankore-3.1/resources/library/{pictures/Animaux => interactivities/Transformation.wgt/images}/coq.png (100%)
 copy Sankore-3.1/resources/library/{pictures/Animaux => interactivities/Transformation.wgt/images}/poule.png (100%)
 copy Sankore-3.1/resources/library/{pictures/Animaux => interactivities/Transformation.wgt/images}/vache.png (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Application Planete.wgs}/config.xml (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Application Planete.wgs}/css/basic.css (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Application Planete.wgs/icon.png
 create mode 100644 Sankore-3.1/resources/library/search/Application Planete.wgs/icon.thumbnail.png
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Application Planete.wgs}/images/down.png (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Application Planete.wgs}/images/greySquare.png (100%)
 copy Sankore-3.1/resources/library/{interactivities/Contraste.wgt => search/Application Planete.wgs}/images/icon-close.png (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Application Planete.wgs}/images/popupBack.png (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Application Planete.wgs}/images/search.png (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Application Planete.wgs}/images/search_app.png (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Application Planete.wgs/images/thumbnail_icon.png
 copy Sankore-3.1/resources/library/{interactivities/Contraste.wgt => search/Application Planete.wgs}/images/trgDown.png (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Application Planete.wgs}/images/trgUp.png (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Application Planete.wgs}/images/up.png (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Application Planete.wgs/index.html
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Application Planete.wgs}/scripts/jquery-1.6.2.min.js (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Interactivite Planete.wgs}/config.xml (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Interactivite Planete.wgs}/css/basic.css (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Interactivite Planete.wgs/icon.png
 create mode 100644 Sankore-3.1/resources/library/search/Interactivite Planete.wgs/icon.thumbnail.png
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Interactivite Planete.wgs}/images/down.png (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Interactivite Planete.wgs}/images/greySquare.png (100%)
 copy Sankore-3.1/resources/library/{interactivities/Contraste.wgt => search/Interactivite Planete.wgs}/images/icon-close.png (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Interactivite Planete.wgs}/images/popupBack.png (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Interactivite Planete.wgs}/images/search.png (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Interactivite Planete.wgs}/images/search_app.png (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/thumbnail_icon.png
 copy Sankore-3.1/resources/library/{interactivities/Contraste.wgt => search/Interactivite Planete.wgs}/images/trgDown.png (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Interactivite Planete.wgs}/images/trgUp.png (100%)
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Interactivite Planete.wgs}/images/up.png (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Interactivite Planete.wgs/index.html
 copy Sankore-3.1/resources/library/search/{Audio Planete.wgs => Interactivite Planete.wgs}/scripts/jquery-1.6.2.min.js (100%)
 create mode 100644 Sankore-3.1/resources/startupHints/config.xml
 create mode 100644 Sankore-3.1/resources/startupHints/css/basic.css
 copy Sankore-3.1/resources/{library/interactivities/Ass images.wgt => startupHints}/icon.svg (100%)
 create mode 100644 Sankore-3.1/resources/startupHints/images/left.png
 create mode 100644 Sankore-3.1/resources/startupHints/images/right.png
 create mode 100644 Sankore-3.1/resources/startupHints/index.html
 copy Sankore-3.1/resources/{library/search/Audio Planete.wgs/scripts => startupHints/js}/jquery-1.6.2.min.js (100%)
 create mode 100644 Sankore-3.1/resources/startupHints/js/jquery-ui-1.8.9.custom.min.js
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/1.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/2.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/3.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/4.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/5.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/error.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0021.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0022.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0033.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0041.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0051.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0052.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0061.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0071.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0081.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0091.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0101.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0102.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0111.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0121.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0122.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0131.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image01401.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0141.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0142.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0151.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0152.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0161.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0171.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0172.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0181.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0191.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0201.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0211.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0241.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0261.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/en/images/image0271.png
 copy Sankore-3.1/resources/{etc/Tutorial/tutorial_en/images/logo_open_sankore.png => startupHints/locales/en/images/opensankore.png} (100%)
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/1.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/10.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/11.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/12.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/13.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/14.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/14_01.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/15.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/16.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/17.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/18.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/19.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/2.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/20.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/21.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/22.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/23.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/24.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/25.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/26.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/3.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/4.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/5.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/6.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/7.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/8.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/9.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/error.html
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0021.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0022.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0033.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0041.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0051.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0052.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0061.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0071.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0081.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0091.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0101.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0102.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0111.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0121.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0122.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0131.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image01401.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0141.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0142.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0151.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0152.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0161.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0171.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0172.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0181.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0191.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0201.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0211.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0241.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0261.png
 create mode 100644 Sankore-3.1/resources/startupHints/locales/fr/images/image0271.png
 copy Sankore-3.1/resources/{etc/Tutorial/tutorial_en/images/logo_open_sankore.png => startupHints/locales/fr/images/opensankore.png} (100%)
 copy Sankore-3.1/resources/{library/interactivities/Ass images.wgt => startupHints}/objects/0.gif (100%)
 copy Sankore-3.1/resources/{library/interactivities/Ass images.wgt => startupHints}/objects/1.gif (100%)
 copy Sankore-3.1/resources/{library/interactivities/Ass images.wgt => startupHints}/objects/2.gif (100%)
 copy Sankore-3.1/resources/{library/interactivities/Ass images.wgt => startupHints}/objects/3.gif (100%)
 copy Sankore-3.1/resources/{library/interactivities/Ass images.wgt => startupHints}/objects/4.gif (100%)
 create mode 100644 Sankore-3.1/src/adaptors/UBExportDocumentSetAdaptor.cpp
 create mode 100644 Sankore-3.1/src/adaptors/UBExportDocumentSetAdaptor.h
 create mode 100644 Sankore-3.1/src/adaptors/UBImportDocumentSetAdaptor.cpp
 create mode 100644 Sankore-3.1/src/adaptors/UBImportDocumentSetAdaptor.h
 create mode 100644 Sankore-3.1/src/customWidgets/UBGraphicsItemAction.cpp
 create mode 100644 Sankore-3.1/src/customWidgets/UBGraphicsItemAction.h
 create mode 100644 Sankore-3.1/src/gui/UBCreateLinkPalette.cpp
 create mode 100644 Sankore-3.1/src/gui/UBCreateLinkPalette.h
 create mode 100644 Sankore-3.1/src/gui/UBStartupHintsPalette.cpp
 create mode 100644 Sankore-3.1/src/gui/UBStartupHintsPalette.h
 create mode 100644 Sankore-3.1/src/web/browser/WBTrapWebPageContent.cpp
 create mode 100644 Sankore-3.1/src/web/browser/WBTrapWebPageContent.h

The diff of changes is:
diff --git a/Sankore-3.1/C++StandardHeaderFile.txt b/Sankore-3.1/C++StandardHeaderFile.txt
new file mode 100644
index 0000000..f55fd45
--- /dev/null
+++ b/Sankore-3.1/C++StandardHeaderFile.txt
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
diff --git a/Sankore-3.1/COPYING b/Sankore-3.1/COPYING
index 94a9ed0..e6eb58d 100644
--- a/Sankore-3.1/COPYING
+++ b/Sankore-3.1/COPYING
@@ -1,674 +1,495 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
 
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
                             Preamble
 
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
 
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
 
   When we speak of free software, we are referring to freedom, not
 price.  Our General Public Licenses are designed to make sure that you
 have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
 
   The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+  In addition, as a special exception, the Open-Sankoré authors
+give permission to link the code of its release of Open-Sankoré with the
+OpenSSL project's "OpenSSL" library (or with modified versions of it
+that use the same license as the "OpenSSL" library), and distribute
+the linked executables.  You must obey the GNU Library General Public License
+in all respects for all of the code used other than "OpenSSL".  If you
+modify this file, you may extend this exception to your version of the
+file, but you are not obligated to do so.  If you do not wish to do
+so, delete this exception statement from your version.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
 this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
 otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
 
                      END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
 
-            How to Apply These Terms to Your New Programs
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
 
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
 
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) [year] Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
 
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
+    This file is part of Open-Sankoré.
 
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
+    Open-Sankoré is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation, version 2,
+    with a specific linking exception for the OpenSSL project's
+    "OpenSSL" library (or with modified versions of it that use the
+    same license as the "OpenSSL" library).
 
-    This program is distributed in the hope that it will be useful,
+    Open-Sankoré is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
 
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+    You should have received a copy of the GNU Library General Public
+    License along with Open-Sankoré, if not, see
+    <http://www.gnu.org/licenses/>.
 
 Also add information on how to contact you by electronic and paper mail.
 
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/Sankore-3.1/JournalDesModifications.pdf b/Sankore-3.1/JournalDesModifications.pdf
index a889a67..d04bd45 100644
Binary files a/Sankore-3.1/JournalDesModifications.pdf and b/Sankore-3.1/JournalDesModifications.pdf differ
diff --git a/Sankore-3.1/LICENSE.txt b/Sankore-3.1/LICENSE.txt
new file mode 100644
index 0000000..c60ab7c
--- /dev/null
+++ b/Sankore-3.1/LICENSE.txt
@@ -0,0 +1,687 @@
+Copyright (C) 2013 Groupement d'Intert Public pour l'Education NumŽrique en Afrique (GIP ENA)
+
+Open-SankorŽ is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 3 of the License,
+with a specific linking exception for the OpenSSL project's
+"OpenSSL" library (or with modified versions of it that use the
+same license as the "OpenSSL" library).
+
+Here is the full text of the GNU General Public License version 3.
+
+--8<---------------cut here---------------start------------->8---
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+--8<---------------cut here---------------end--------------->8---
diff --git a/Sankore-3.1/ReleaseNotes.pdf b/Sankore-3.1/ReleaseNotes.pdf
index 68bb159..205b450 100644
Binary files a/Sankore-3.1/ReleaseNotes.pdf and b/Sankore-3.1/ReleaseNotes.pdf differ
diff --git a/Sankore-3.1/Sankore_3.1.pro b/Sankore-3.1/Sankore_3.1.pro
index 2a70422..f72a52b 100644
--- a/Sankore-3.1/Sankore_3.1.pro
+++ b/Sankore-3.1/Sankore_3.1.pro
@@ -9,9 +9,9 @@ CONFIG += debug_and_release \
 
 
 VERSION_MAJ = 2
-VERSION_MIN = 00 
+VERSION_MIN = 1 
 VERSION_TYPE = r # a = alpha, b = beta, r = release, other => error
-VERSION_PATCH = 00 
+VERSION_PATCH = 0 
 
 VERSION = "$${VERSION_MAJ}.$${VERSION_MIN}.$${VERSION_TYPE}.$${VERSION_PATCH}"
 VERSION = $$replace(VERSION, "\\.r", "")
@@ -96,7 +96,7 @@ BUILD_DIR = build
 
 macx:BUILD_DIR = $$BUILD_DIR/macx
 win32:BUILD_DIR = $$BUILD_DIR/win32
-linux-g++*:BUILD_DIR = $$BUILD_DIR/linux
+linux-*:BUILD_DIR = $$BUILD_DIR/linux
 
 CONFIG(debug, debug|release):BUILD_DIR = $$BUILD_DIR/debug
 CONFIG(release, debug|release) {
@@ -352,7 +352,25 @@ macx {
        TRANSLATION_mg.path = "$$RESOURCES_DIR/mg.lproj"
        QMAKE_BUNDLE_DATA += TRANSLATION_mg
    }
-   
+   exists(resources/i18n/sankore_hi.qm) {
+       TRANSLATION_hi.files = resources/i18n/sankore_hi.qm \
+           resources/i18n/localizable.strings
+       TRANSLATION_hi.path = "$$RESOURCES_DIR/hi.lproj"
+       QMAKE_BUNDLE_DATA += TRANSLATION_hi
+   }
+   exists(resources/i18n/sankore_co.qm) {
+       TRANSLATION_co.files = resources/i18n/sankore_co.qm \
+           resources/i18n/localizable.strings
+       TRANSLATION_co.path = "$$RESOURCES_DIR/co.lproj"
+       QMAKE_BUNDLE_DATA += TRANSLATION_co
+   }
+   exists(resources/i18n/sankore_eu.qm) {
+       TRANSLATION_eu.files = resources/i18n/sankore_eu.qm \
+           resources/i18n/localizable.strings
+       TRANSLATION_eu.path = "$$RESOURCES_DIR/eu.lproj"
+       QMAKE_BUNDLE_DATA += TRANSLATION_eu
+   }
+
    QMAKE_BUNDLE_DATA += UB_ETC \
        UB_LIBRARY \
        UB_FONTS \
@@ -372,7 +390,7 @@ macx {
    system(printf "%02x%02x%02x%02x" `printf $$VERSION_RC | cut -d ',' -f 1` `printf $$VERSION_RC | cut -d ',' -f 2` `printf $$VERSION_RC | cut -d ',' -f 3` `printf $$VERSION_RC | cut -d ',' -f 4` | xxd -r -p > "$$VERSION_RC_PATH")
 }
 
-linux-g++* {
+linux-* {
     CONFIG += link_prl
     LIBS += -lcrypto
     LIBS += -lX11
@@ -387,6 +405,11 @@ linux-g++* {
     system(echo "$$VERSION" > $$BUILD_DIR/version)
     system(echo "$$LONG_VERSION" > $$BUILD_DIR/longversion)
     system(echo "$$SVN_VERSION" > $$BUILD_DIR/svnversion)
+
+    linux-clang {
+        QMAKE_CXXFLAGS_WARN_ON += -Wno-unknown-pragmas
+        QMAKE_CXXFLAGS_WARN_ON += -Wno-overloaded-virtual
+    }
 }
 
 RESOURCES += resources/sankore.qrc
@@ -421,7 +444,10 @@ TRANSLATIONS = resources/i18n/sankore_en.ts \
    resources/i18n/sankore_el.ts \
    resources/i18n/sankore_tr.ts \
    resources/i18n/sankore_cs.ts \
-   resources/i18n/sankore_mg.ts
+   resources/i18n/sankore_mg.ts \
+   resources/i18n/sankore_hi.ts \
+   resources/i18n/sankore_co.ts \
+   resources/i18n/sankore_eu.ts
 
 INSTALLS = UB_ETC \
    UB_I18N \
diff --git a/Sankore-3.1/buildDebianPackage.sh b/Sankore-3.1/buildDebianPackage.sh
index d093931..e798a5d 100644
--- a/Sankore-3.1/buildDebianPackage.sh
+++ b/Sankore-3.1/buildDebianPackage.sh
@@ -179,7 +179,7 @@ else
     LAST_COMMITED_VERSION="`git describe $(git rev-list --tags --max-count=1)`"
     if [ "v$VERSION" != "$LAST_COMMITED_VERSION" ]; then
         if [ $MAKE_TAG == true ]; then
-            git tag -a "v$VERSION" -m "Generating setup for v$VERSION"
+            git tag -a "v${VERSION}" -m "Generating setup for v$VERSION"
             git push origin --tags
         fi 
     fi
@@ -196,6 +196,9 @@ cp -R $PLUGINS_PATH $PRODUCT_PATH/
 # copying customization
 cp -R resources/customizations $PRODUCT_PATH/
 
+# copying startup hints
+cp -R resources/startupHints $PRODUCT_PATH/
+
 if [ $STANDARD_QT_USED == false ]; then 
 #copying custom qt library
   mkdir -p $QT_LIBRARY_DEST_PATH
@@ -387,7 +390,7 @@ if [ $CREATE_DIENA_DISTRIBUTION_ZIP == true ]; then
 
     ZIP_NAME="Open-Sankoré_`lsb_release -is`_`lsb_release -rs`_${VERSION}_${ARCHITECTURE}.zip"
     cd install/linux
-    $ZIP_PATH -1 --junk-paths ${ZIP_NAME} ${DEBIAN_PACKAGE_NAME} ../../ReleaseNotes.pdf ../../JournalDesModifications.pdf
+    $ZIP_PATH -1 --junk-paths ${ZIP_NAME} ${DEBIAN_PACKAGE_NAME} ../../ReleaseNotes.pdf ../../JournalDesModifications.pdf ../../LICENSE.txt
     cd -
     notifyProgress "Open-Sankore" "Build Diena zip file for distribution"
 fi
diff --git a/Sankore-3.1/lgplC++StandardHeaderFile.txt b/Sankore-3.1/lgplC++StandardHeaderFile.txt
deleted file mode 100644
index b738626..0000000
--- a/Sankore-3.1/lgplC++StandardHeaderFile.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2012 Webdoc SA
- *
- * This file is part of Open-Sankoré.
- *
- * Open-Sankoré is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation, version 2,
- * with a specific linking exception for the OpenSSL project's
- * "OpenSSL" library (or with modified versions of it that use the
- * same license as the "OpenSSL" library).
- *
- * Open-Sankoré is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with Open-Sankoré; if not, see
- * <http://www.gnu.org/licenses/>.
- */
-
diff --git a/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.cpp b/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.cpp
index 771be29..b9a135a 100644
--- a/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.cpp
+++ b/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBCFFAdaptor.h"
 
 #include <QtCore>
diff --git a/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.h b/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.h
index da14d40..99f5739 100644
--- a/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.h
+++ b/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.h
@@ -1,23 +1,22 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
- * Open-Sankoré is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation, version 2,
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
  *
  * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with Open-Sankoré; if not, see
- * <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor_global.h b/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor_global.h
index cb21a4a..3f060b9 100644
--- a/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor_global.h
+++ b/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor_global.h
@@ -1,23 +1,22 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
- * Open-Sankoré is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation, version 2,
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
  *
  * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with Open-Sankoré; if not, see
- * <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/Sankore-3.1/plugins/cffadaptor/src/UBCFFConstants.h b/Sankore-3.1/plugins/cffadaptor/src/UBCFFConstants.h
index 8968fda..588ea69 100644
--- a/Sankore-3.1/plugins/cffadaptor/src/UBCFFConstants.h
+++ b/Sankore-3.1/plugins/cffadaptor/src/UBCFFConstants.h
@@ -1,23 +1,22 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
- * Open-Sankoré is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation, version 2,
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
  *
  * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with Open-Sankoré; if not, see
- * <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/Sankore-3.1/plugins/cffadaptor/src/UBGlobals.h b/Sankore-3.1/plugins/cffadaptor/src/UBGlobals.h
index 46c3940..1c2864d 100644
--- a/Sankore-3.1/plugins/cffadaptor/src/UBGlobals.h
+++ b/Sankore-3.1/plugins/cffadaptor/src/UBGlobals.h
@@ -1,23 +1,22 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
- * Open-Sankoré is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation, version 2,
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
  *
  * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with Open-Sankoré; if not, see
- * <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/Sankore-3.1/release.macx.sh b/Sankore-3.1/release.macx.sh
index 44fc5ee..2790d86 100644
--- a/Sankore-3.1/release.macx.sh
+++ b/Sankore-3.1/release.macx.sh
@@ -124,6 +124,7 @@ $LRELEASE $BASE_QT_TRANSLATIONS_DIRECTORY/translations.pro
 addQtTranslations
 
 cp -R resources/customizations $PRODUCT_DIR/Open-Sankore.app/Contents/Resources
+cp -R resources/startupHints $PRODUCT_DIR/Open-Sankore.app/Contents/Resources
 
 notify "Tagging ..."
 VERSION=`cat "$BUILD_DIR/version"`
@@ -134,8 +135,8 @@ else
     LAST_COMMITED_VERSION="`git describe $(git rev-list --tags --max-count=1)`"
     if [ "v$VERSION" != "$LAST_COMMITED_VERSION" ]; then
 	echo creating a tag with the version $VERSION
-	#git tag -a "v$VERSION" -m "Generated setup for v$VERSION"
-	#git push origin --tags
+	git tag -a "v$VERSION" -m "Generated setup for v$VERSION"
+	git push origin --tags
     fi
 fi
   
@@ -204,15 +205,17 @@ umount "$VOLUME" 2> /dev/null
 $DMGUTIL --open --volume="$NAME" "$DMG"
 
 cp *.pdf "$VOLUME"
+cp LICENSE.txt "$VOLUME"
 cp -R "$APP" "$VOLUME"
 ln -s /Applications "$VOLUME"
 
 $DMGUTIL --set --iconsize=96 --toolbar=false --icon=resources/macx/UniboardDmg.icns "$VOLUME"
-$DMGUTIL --set --x=20 --y=60 --width=580 --height=440 "$VOLUME"
-$DMGUTIL --set --x=180 --y=120 "$VOLUME/`basename \"$APP\"`"
-$DMGUTIL --set --x=400 --y=120 "$VOLUME/Applications"
-$DMGUTIL --set --x=180 --y=280 "$VOLUME/ReleaseNotes.pdf"
-$DMGUTIL --set --x=400 --y=280 "$VOLUME/JournalDesModifications.pdf"
+$DMGUTIL --set --x=20 --y=60 --width=580 --height=520 "$VOLUME"
+$DMGUTIL --set --x=180 --y=80 "$VOLUME/`basename \"$APP\"`"
+$DMGUTIL --set --x=400 --y=80 "$VOLUME/Applications"
+$DMGUTIL --set --x=180 --y=240 "$VOLUME/ReleaseNotes.pdf"
+$DMGUTIL --set --x=400 --y=240 "$VOLUME/JournalDesModifications.pdf"
+$DMGUTIL --set --x=180 --y=400 "$VOLUME/LICENSE.txt"
 
 $DMGUTIL --close --volume="$NAME" "$DMG"
 
diff --git a/Sankore-3.1/release.win7.vc9.64.bat b/Sankore-3.1/release.win7.vc9.64.bat
deleted file mode 100644
index b344d2f..0000000
--- a/Sankore-3.1/release.win7.vc9.64.bat
+++ /dev/null
@@ -1,74 +0,0 @@
-REM --------------------------------------------------------------------
-REM This program is free software: you can redistribute it and/or modify
-REM it under the terms of the GNU General Public License as published by
-REM the Free Software Foundation, either version 3 of the License, or
-REM (at your option) any later version.
-REM 
-REM This program is distributed in the hope that it will be useful,
-REM but WITHOUT ANY WARRANTY; without even the implied warranty of
-REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-REM GNU General Public License for more details.
-REM 
-REM You should have received a copy of the GNU General Public License
-REM along with this program.  If not, see <http://www.gnu.org/licenses/>.
-REM ---------------------------------------------------------------------
-
-set QT_DIR=..\Qt-sankore3.1
-set QT_BIN=%QT_DIR%\bin
-
-set PROGRAMS_FILE_PATH=C:\Program Files (x86)
-
-set GIT_BIN=%PROGRAMS_FILE_PATH%\Git\bin
-set VS_BIN=%PROGRAMS_FILE_PATH%\Microsoft Visual Studio 9.0\VC\bin
-set WIN_SDK_BIN=%PROGRAMS_FILE_PATH%\Microsoft SDKs\Windows\v6.0A\Bin
-set INNO_EXE=%PROGRAMS_FILE_PATH%\Inno Setup 5\iscc.exe 
-set BUILD_DIR=build\win32\release
-set LRELEASE=%QT_DIR%\bin\lrelease
-set BASE_QT_TRANSLATIONS_DIRECTORY=%QT_DIR%\translations
-
-set PATH=%QT_BIN%;%PATH%;%WIN_SDK_BIN%;%GIT_BIN%
-
-call "%VS_BIN%\vcvars32.bat"
-
-echo %PATH%
-
-REM this checks if the custom qt directory path
-REM is correct. This is important because installer
-REM pick up dll from this directory
-IF NOT EXIST "..\Qt-sankore3.1\lib\QtCore4.dll" GOTO EXIT_WITH_ERROR
-
-REM rmdir /S /Q %BUILD_DIR%
-
-set EDITION=MNEMIS_EDITION
-
-"%QT_BIN%\qmake.exe" "DEFINES+=%EDITION%"
-
-%LRELEASE% Sankore_3.1.pro
-
-set /p VERSION= < build\win32\release\version
-git rev-list --tags --max-count=1 > tmp
-set /p LAST_TAG= < tmp
-erase tmp
-git describe %LAST_TAG% > tmp
-set /p LAST_TAG_VERSION=< tmp
-erase tmp
-
-echo %VERSION%
-echo %LAST_TAG_VERSION%
-
-REM if not v%VERSION%==%LAST_TAG_VERSION% GOTO EXIT_WITH_ERROR
-
-nmake release-install
-copy %BASE_QT_TRANSLATIONS_DIRECTORY%\qt_*.qm build\win32\release\product\i18n\
-del build\win32\release\product\i18n\qt_help*
-
-del "build\win32\release\product\Sankore.pdb"
-
-set INSTALLER_NAME=Open-Sankore
-
-set INSTALLER_PATH=.\install\win32\%INSTALLER_NAME%.exe
-
-call "%INNO_EXE%" "Sankore 3.1.iss" /F"%INSTALLER_NAME%"
-
-:EXIT_WITH_ERROR
-	echo ERROR
diff --git a/Sankore-3.1/release.win7.vc9.bat b/Sankore-3.1/release.win7.vc9.bat
index fd45308..74af74b 100644
--- a/Sankore-3.1/release.win7.vc9.bat
+++ b/Sankore-3.1/release.win7.vc9.bat
@@ -70,6 +70,10 @@ set CUSTOMIZATIONS=build\win32\release\product\customizations
 mkdir %CUSTOMIZATIONS%
 xcopy /s resources\customizations %CUSTOMIZATIONS%
 
+set STARTUP_HINTS=build\win32\release\product\startupHints
+mkdir %STARTUP_HINTS%
+xcopy /s resources\startupHints %STARTUP_HINTS%
+
 set I18n=build\win32\release\product\i18n
 xcopy /s %BASE_QT_TRANSLATIONS_DIRECTORY%\qt_*.qm %I18n%\
 
@@ -85,8 +89,9 @@ call "%INNO_EXE%" "Sankore 3.1.iss" /F"%INSTALLER_NAME%"
 
 set INSTALL_DIRECTORY=install\win32\
 xcopy *.pdf %INSTALL_DIRECTORY%
+xcopy LICENSE.txt %INSTALL_DIRECTORY%
 cd %INSTALL_DIRECTORY%
-call %SEVEN_ZIP_EXE% a Open-Sankor‚_Windows_%VERSION%.zip *.exe *.pdf
+call %SEVEN_ZIP_EXE% a Open-Sankor‚_Windows_%VERSION%.zip *.exe *.pdf *.txt
 cd ..\..\
 GOTO END
 
diff --git a/Sankore-3.1/resources/etc/Tutorial/tutorial_en/index.html b/Sankore-3.1/resources/etc/Tutorial/tutorial_en/index.html
index c47a787..f7ea5a1 100644
--- a/Sankore-3.1/resources/etc/Tutorial/tutorial_en/index.html
+++ b/Sankore-3.1/resources/etc/Tutorial/tutorial_en/index.html
@@ -44,15 +44,15 @@ body {
 
 <div class="g200">
 
-<a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/User+manual+EN+2.00" target="_blank"><img src="images/manuel.png" style="width: 188px; border: 1px solid #999"/></a>
-<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/User+manual+EN+2.00" target="_blank">
+<a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/User+manual+EN+2.10" target="_blank"><img src="images/manuel.png" style="width: 188px; border: 1px solid #999"/></a>
+<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/User+manual+EN+2.10" target="_blank">
 <h5 style="text-align: center;">The user manual</h5></a>
 
 </div>
 <div class="g200">
 
 <a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/WebHome_EN" target="_blank"><img src="images/pedago.png" style="width: 188px; border: 1px solid #999"/></a>
-<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Tutoriels" target="_blank">
+<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/WebHome_EN" target="_blank">
 <h5 style="text-align: center;">The teaching space</h5></a>
 
 </div>
diff --git a/Sankore-3.1/resources/etc/Tutorial/tutorial_fr/index.html b/Sankore-3.1/resources/etc/Tutorial/tutorial_fr/index.html
index 66467cf..bf25537 100644
--- a/Sankore-3.1/resources/etc/Tutorial/tutorial_fr/index.html
+++ b/Sankore-3.1/resources/etc/Tutorial/tutorial_fr/index.html
@@ -44,15 +44,15 @@ body {
 
 <div class="g200">
 
-<a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Le+manuel+du+logiciel+FR+2.00" target="_blank"><img src="images/manuel.png" style="width: 188px; border: 1px solid #999"/></a>
-<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Le+manuel+du+logiciel+FR+2.00" target="_blank">
+<a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Le+manuel+du+logiciel+FR+2.10" target="_blank"><img src="images/manuel.png" style="width: 188px; border: 1px solid #999"/></a>
+<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Le+manuel+du+logiciel+FR+2.10" target="_blank">
 <h5 style="text-align: center;">Le manuel d'utilisation</h5></a>
 
 </div>
 <div class="g200">
 
 <a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/WebHome" target="_blank"><img src="images/pedago.png" style="width: 188px; border: 1px solid #999"/></a>
-<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Tutoriels" target="_blank">
+<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/WebHome" target="_blank">
 <h5 style="text-align: center;">L'espace pédagogique</h5></a>
 
 </div>
diff --git a/Sankore-3.1/resources/etc/Uniboard.css b/Sankore-3.1/resources/etc/Uniboard.css
index 935c028..de3b10f 100644
--- a/Sankore-3.1/resources/etc/Uniboard.css
+++ b/Sankore-3.1/resources/etc/Uniboard.css
@@ -193,6 +193,11 @@ QToolButton#ubActionPaletteButton
     margin: 0px;
 }
 
+WBTrapBar QToolButton
+{
+    color: black;
+}
+
 QFrame#newDocumentFolderFrame,
 QFrame#newDocumentFrame,
 QFrame#newFolderFrame 
diff --git a/Sankore-3.1/resources/forms/documents.ui b/Sankore-3.1/resources/forms/documents.ui
index fc72345..0eefdf3 100644
--- a/Sankore-3.1/resources/forms/documents.ui
+++ b/Sankore-3.1/resources/forms/documents.ui
@@ -63,6 +63,46 @@
           <number>0</number>
          </property>
          <item>
+          <widget class="UBDocumentTreeView" name="documentTreeView">
+           <property name="minimumSize">
+            <size>
+             <width>400</width>
+             <height>0</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>400</width>
+             <height>16777215</height>
+            </size>
+           </property>
+           <property name="frameShape">
+            <enum>QFrame::NoFrame</enum>
+           </property>
+           <property name="frameShadow">
+            <enum>QFrame::Plain</enum>
+           </property>
+           <property name="autoScroll">
+            <bool>true</bool>
+           </property>
+           <property name="autoScrollMargin">
+            <number>65</number>
+           </property>
+           <property name="selectionBehavior">
+            <enum>QAbstractItemView::SelectRows</enum>
+           </property>
+           <property name="verticalScrollMode">
+            <enum>QAbstractItemView::ScrollPerItem</enum>
+           </property>
+           <property name="animated">
+            <bool>true</bool>
+           </property>
+           <property name="headerHidden">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
           <widget class="UBDocumentTreeWidget" name="documentTreeWidget">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Maximum" vsizetype="Expanding">
@@ -242,9 +282,12 @@
    <extends>QTreeWidget</extends>
    <header>gui/UBDocumentTreeWidget.h</header>
   </customwidget>
+  <customwidget>
+   <class>UBDocumentTreeView</class>
+   <extends>QTreeView</extends>
+   <header>document/UBDocumentController.h</header>
+  </customwidget>
  </customwidgets>
- <resources>
-  <include location="../sankore.qrc"/>
- </resources>
+ <resources/>
  <connections/>
 </ui>
diff --git a/Sankore-3.1/resources/forms/mainWindow.ui b/Sankore-3.1/resources/forms/mainWindow.ui
index 06ea51a..e3064f5 100644
--- a/Sankore-3.1/resources/forms/mainWindow.ui
+++ b/Sankore-3.1/resources/forms/mainWindow.ui
@@ -111,6 +111,7 @@
    <addaction name="actionWebReload"/>
    <addaction name="actionStopLoading"/>
    <addaction name="actionHome"/>
+   <addaction name="actionBookmark"/>
    <addaction name="separator"/>
    <addaction name="actionWebBigger"/>
    <addaction name="actionWebSmaller"/>
@@ -558,7 +559,7 @@
    <property name="text">
     <string>Bookmark</string>
    </property>
-   <property name="toolTip">
+   <property name="iconText">
     <string>Add Bookmark</string>
    </property>
   </action>
@@ -1462,18 +1463,6 @@
     <string>Configure Podcast Recording</string>
    </property>
   </action>
-  <action name="actionWebTrapFlash">
-   <property name="icon">
-    <iconset resource="../sankore.qrc">
-     <normaloff>:/images/toolbar/addToolToLibrary.png</normaloff>:/images/toolbar/addToolToLibrary.png</iconset>
-   </property>
-   <property name="text">
-    <string>Flash Trap</string>
-   </property>
-   <property name="toolTip">
-    <string>Trap Flash Content</string>
-   </property>
-  </action>
   <action name="actionWebTrap">
    <property name="checkable">
     <bool>true</bool>
@@ -1514,21 +1503,6 @@
     <string>Capture a Window</string>
    </property>
   </action>
-  <action name="actionWebOEmbed">
-   <property name="enabled">
-    <bool>false</bool>
-   </property>
-   <property name="icon">
-    <iconset resource="../sankore.qrc">
-     <normaloff>:/images/extraPalette/oEmbed.png</normaloff>:/images/extraPalette/oEmbed.png</iconset>
-   </property>
-   <property name="text">
-    <string>Embed Web Content</string>
-   </property>
-   <property name="toolTip">
-    <string>Capture Embeddable Web Content</string>
-   </property>
-  </action>
   <action name="actionWebShowHideOnDisplay">
    <property name="checkable">
     <bool>true</bool>
@@ -1678,6 +1652,90 @@
     <string>Remove the backgound</string>
    </property>
   </action>
+  <action name="actionBookmark">
+   <property name="icon">
+    <iconset resource="../sankore.qrc">
+     <normaloff>:/images/toolbar/bookmark.png</normaloff>:/images/toolbar/bookmark.png</iconset>
+   </property>
+   <property name="text">
+    <string>Bookmark</string>
+   </property>
+   <property name="iconText">
+    <string comment="tooltip">Bookmark</string>
+   </property>
+   <property name="toolTip">
+    <string extracomment="tooltip">Bookmark</string>
+   </property>
+  </action>
+  <action name="actionWebTrapContent">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="icon">
+    <iconset resource="../sankore.qrc">
+     <normaloff>:/images/toolbar/addToolToLibrary.png</normaloff>:/images/toolbar/addToolToLibrary.png</iconset>
+   </property>
+   <property name="text">
+    <string>Web Trap</string>
+   </property>
+   <property name="toolTip">
+    <string>Trap Web Content</string>
+   </property>
+  </action>
+  <action name="actionWebTrapToLibrary">
+   <property name="enabled">
+    <bool>false</bool>
+   </property>
+   <property name="icon">
+    <iconset resource="../sankore.qrc">
+     <normaloff>:/images/trapFlashPalette/downloadToLibrary.svg</normaloff>:/images/trapFlashPalette/downloadToLibrary.svg</iconset>
+   </property>
+   <property name="text">
+    <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></string>
+   </property>
+   <property name="toolTip">
+    <string>Download to library</string>
+   </property>
+  </action>
+  <action name="actionWebTrapToCurrentPage">
+   <property name="enabled">
+    <bool>false</bool>
+   </property>
+   <property name="icon">
+    <iconset resource="../sankore.qrc">
+     <normaloff>:/images/trapFlashPalette/downloadToBoard.svg</normaloff>:/images/trapFlashPalette/downloadToBoard.svg</iconset>
+   </property>
+   <property name="text">
+    <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></string>
+   </property>
+   <property name="toolTip">
+    <string>Download to current page</string>
+   </property>
+  </action>
+  <action name="actionWebTrapLinkToLibrary">
+   <property name="icon">
+    <iconset resource="../sankore.qrc">
+     <normaloff>:/images/trapFlashPalette/linkToLibrary.svg</normaloff>:/images/trapFlashPalette/linkToLibrary.svg</iconset>
+   </property>
+   <property name="text">
+    <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></string>
+   </property>
+   <property name="toolTip">
+    <string>Add link to library</string>
+   </property>
+  </action>
+  <action name="actionWebTrapLinkToPage">
+   <property name="icon">
+    <iconset resource="../sankore.qrc">
+     <normaloff>:/images/trapFlashPalette/linkToBoard.svg</normaloff>:/images/trapFlashPalette/linkToBoard.svg</iconset>
+   </property>
+   <property name="text">
+    <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></string>
+   </property>
+   <property name="toolTip">
+    <string>Add link to current page</string>
+   </property>
+  </action>
  </widget>
  <resources>
   <include location="../sankore.qrc"/>
diff --git a/Sankore-3.1/resources/forms/preferences.ui b/Sankore-3.1/resources/forms/preferences.ui
index a87956c..e2729ac 100644
--- a/Sankore-3.1/resources/forms/preferences.ui
+++ b/Sankore-3.1/resources/forms/preferences.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>601</width>
-    <height>686</height>
+    <width>829</width>
+    <height>694</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -21,6 +21,55 @@
      </property>
     </widget>
    </item>
+   <item row="3" column="0">
+    <widget class="QFrame" name="frame">
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Raised</enum>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <property name="margin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QPushButton" name="defaultSettingsButton">
+        <property name="text">
+         <string>Default Settings</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="bottomHSpacer">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout">
+        <item>
+         <widget class="QPushButton" name="closeButton">
+          <property name="text">
+           <string>Close</string>
+          </property>
+          <property name="default">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
    <item row="1" column="0">
     <widget class="QTabWidget" name="mainTabWidget">
      <property name="currentIndex">
@@ -30,28 +79,142 @@
       <attribute name="title">
        <string>Display</string>
       </attribute>
-      <layout class="QGridLayout" name="gridLayout_3">
-       <item row="3" column="0">
-        <spacer name="toolbarSpacer">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>40</height>
-          </size>
-         </property>
-        </spacer>
+      <layout class="QVBoxLayout" name="verticalLayout_4">
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_10">
+         <item>
+          <widget class="QGroupBox" name="languageGroupBox">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="title">
+            <string>Language</string>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_3">
+            <item row="0" column="0">
+             <spacer name="horizontalSpacer_7">
+              <property name="orientation">
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeType">
+               <enum>QSizePolicy::Preferred</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>40</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item row="0" column="2">
+             <layout class="QVBoxLayout" name="languageVerticalLayout">
+              <property name="sizeConstraint">
+               <enum>QLayout::SetFixedSize</enum>
+              </property>
+              <item>
+               <layout class="QHBoxLayout" name="languageHAlert">
+                <item>
+                 <widget class="QLabel" name="languageLabel">
+                  <property name="text">
+                   <string>Select a language</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QComboBox" name="languageComboBox">
+                  <property name="minimumSize">
+                   <size>
+                    <width>200</width>
+                    <height>0</height>
+                   </size>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <spacer name="horizontalSpacer_8">
+                  <property name="orientation">
+                   <enum>Qt::Horizontal</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>40</width>
+                    <height>20</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <layout class="QHBoxLayout" name="alertHLayout">
+                <item>
+                 <widget class="QLabel" name="closeOpenSankoreAlertLabel">
+                  <property name="text">
+                   <string>The new language will be loaded on next restart</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QPushButton" name="quitOpenSankorePushButton">
+                  <property name="text">
+                   <string>Close Open-Sankoré</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </item>
+         <item>
+          <widget class="QGroupBox" name="startupGroupBox">
+           <property name="title">
+            <string>Start up tips</string>
+           </property>
+           <layout class="QVBoxLayout" name="verticalLayout_5">
+            <item>
+             <layout class="QGridLayout" name="gridLayout_17">
+              <item row="1" column="0">
+               <spacer name="horizontalSpacer_9">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item row="1" column="1">
+               <widget class="QCheckBox" name="startupTipsCheckBox">
+                <property name="text">
+                 <string>Show start up tips</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </item>
+        </layout>
        </item>
-       <item row="9" column="0">
-        <spacer name="keyboardSpacer">
+       <item>
+        <spacer name="verticalSpacer_6">
          <property name="orientation">
           <enum>Qt::Vertical</enum>
          </property>
-         <property name="sizeType">
-          <enum>QSizePolicy::Expanding</enum>
-         </property>
          <property name="sizeHint" stdset="0">
           <size>
            <width>20</width>
@@ -60,7 +223,7 @@
          </property>
         </spacer>
        </item>
-       <item row="2" column="0">
+       <item>
         <widget class="QGroupBox" name="multiDisplayGroupBox">
          <property name="title">
           <string>Multi display</string>
@@ -112,8 +275,8 @@
          </layout>
         </widget>
        </item>
-       <item row="12" column="0">
-        <spacer name="modeSpacer">
+       <item>
+        <spacer name="toolbarSpacer">
          <property name="orientation">
           <enum>Qt::Vertical</enum>
          </property>
@@ -125,210 +288,217 @@
          </property>
         </spacer>
        </item>
-       <item row="8" column="0">
-        <widget class="QGroupBox" name="toolbarGroupBox">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="title">
-          <string>Toolbar</string>
-         </property>
-         <layout class="QGridLayout" name="gridLayout_9">
-          <item row="0" column="1">
-           <layout class="QGridLayout" name="gridLayout_10">
-            <item row="0" column="0">
-             <widget class="QRadioButton" name="toolbarAtTopRadioButton">
-              <property name="text">
-               <string>Positioned at the Top (recommended for tablets)</string>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="0">
-             <widget class="QRadioButton" name="toolbarAtBottomRadioButton">
-              <property name="text">
-               <string>Positioned at the Bottom (recommended for white boards)</string>
-              </property>
-             </widget>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_12">
+         <item>
+          <widget class="QGroupBox" name="toolbarGroupBox">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="title">
+            <string>Toolbar</string>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_9">
+            <item row="0" column="1">
+             <layout class="QGridLayout" name="gridLayout_10">
+              <item row="0" column="0">
+               <widget class="QRadioButton" name="toolbarAtTopRadioButton">
+                <property name="text">
+                 <string>Positioned at the Top (recommended for tablets)</string>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="0">
+               <widget class="QRadioButton" name="toolbarAtBottomRadioButton">
+                <property name="text">
+                 <string>Positioned at the Bottom (recommended for white boards)</string>
+                </property>
+               </widget>
+              </item>
+              <item row="2" column="0">
+               <spacer name="verticalSpacer">
+                <property name="orientation">
+                 <enum>Qt::Vertical</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+             </layout>
             </item>
-            <item row="2" column="0">
-             <spacer name="verticalSpacer">
+            <item row="0" column="0">
+             <spacer name="toolbarLSpacer">
               <property name="orientation">
-               <enum>Qt::Vertical</enum>
+               <enum>Qt::Horizontal</enum>
               </property>
               <property name="sizeType">
-               <enum>QSizePolicy::Fixed</enum>
+               <enum>QSizePolicy::Preferred</enum>
               </property>
               <property name="sizeHint" stdset="0">
                <size>
-                <width>20</width>
+                <width>40</width>
                 <height>20</height>
                </size>
               </property>
              </spacer>
             </item>
-           </layout>
-          </item>
-          <item row="0" column="0">
-           <spacer name="toolbarLSpacer">
-            <property name="orientation">
-             <enum>Qt::Horizontal</enum>
-            </property>
-            <property name="sizeType">
-             <enum>QSizePolicy::Preferred</enum>
-            </property>
-            <property name="sizeHint" stdset="0">
-             <size>
-              <width>40</width>
-              <height>20</height>
-             </size>
-            </property>
-           </spacer>
-          </item>
-          <item row="0" column="2">
-           <spacer name="toolbarRSpacer">
-            <property name="orientation">
-             <enum>Qt::Horizontal</enum>
-            </property>
-            <property name="sizeType">
-             <enum>QSizePolicy::Expanding</enum>
-            </property>
-            <property name="sizeHint" stdset="0">
-             <size>
-              <width>40</width>
-              <height>20</height>
-             </size>
-            </property>
-           </spacer>
-          </item>
-          <item row="1" column="1">
-           <widget class="QCheckBox" name="toolbarDisplayTextCheckBox">
-            <property name="text">
-             <string>Display Text Under Button</string>
-            </property>
-           </widget>
-          </item>
-         </layout>
-        </widget>
-       </item>
-       <item row="7" column="0">
-        <spacer name="verticalSpacer_3">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>40</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item row="4" column="0" rowspan="2">
-        <widget class="QGroupBox" name="stylusPaletteGroupBox">
-         <property name="minimumSize">
-          <size>
-           <width>0</width>
-           <height>0</height>
-          </size>
-         </property>
-         <property name="title">
-          <string>Stylus Palette</string>
-         </property>
-         <layout class="QGridLayout" name="gridLayout_14">
-          <property name="leftMargin">
-           <number>12</number>
-          </property>
-          <item row="0" column="1">
-           <layout class="QGridLayout" name="gridLayout_5">
-            <property name="sizeConstraint">
-             <enum>QLayout::SetDefaultConstraint</enum>
-            </property>
-            <item row="0" column="0">
-             <widget class="QRadioButton" name="horizontalChoice">
-              <property name="sizePolicy">
-               <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-                <horstretch>1</horstretch>
-                <verstretch>0</verstretch>
-               </sizepolicy>
+            <item row="0" column="2">
+             <spacer name="toolbarRSpacer">
+              <property name="orientation">
+               <enum>Qt::Horizontal</enum>
               </property>
-              <property name="minimumSize">
+              <property name="sizeType">
+               <enum>QSizePolicy::Expanding</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
                <size>
-                <width>0</width>
-                <height>0</height>
+                <width>40</width>
+                <height>20</height>
                </size>
               </property>
+             </spacer>
+            </item>
+            <item row="1" column="1">
+             <widget class="QCheckBox" name="toolbarDisplayTextCheckBox">
               <property name="text">
-               <string>Horizontal</string>
-              </property>
-              <property name="checked">
-               <bool>false</bool>
+               <string>Display Text Under Button</string>
               </property>
              </widget>
             </item>
-            <item row="1" column="0">
-             <widget class="QRadioButton" name="verticalChoice">
-              <property name="text">
-               <string>Vertical</string>
+           </layout>
+          </widget>
+         </item>
+         <item>
+          <widget class="QGroupBox" name="stylusPaletteGroupBox">
+           <property name="minimumSize">
+            <size>
+             <width>0</width>
+             <height>0</height>
+            </size>
+           </property>
+           <property name="title">
+            <string>Stylus Palette</string>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_14">
+            <property name="leftMargin">
+             <number>12</number>
+            </property>
+            <item row="0" column="1">
+             <layout class="QGridLayout" name="gridLayout_5">
+              <property name="sizeConstraint">
+               <enum>QLayout::SetDefaultConstraint</enum>
+              </property>
+              <item row="2" column="0">
+               <spacer name="verticalSpacer_5">
+                <property name="orientation">
+                 <enum>Qt::Vertical</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>40</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item row="0" column="0">
+               <widget class="QRadioButton" name="horizontalChoice">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                  <horstretch>1</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>0</width>
+                  <height>0</height>
+                 </size>
+                </property>
+                <property name="text">
+                 <string>Horizontal</string>
+                </property>
+                <property name="checked">
+                 <bool>false</bool>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="0">
+               <widget class="QRadioButton" name="verticalChoice">
+                <property name="text">
+                 <string>Vertical</string>
+                </property>
+                <property name="checked">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="0" column="2">
+             <spacer name="horizontalSpacer_3">
+              <property name="orientation">
+               <enum>Qt::Horizontal</enum>
               </property>
-              <property name="checked">
-               <bool>true</bool>
+              <property name="sizeType">
+               <enum>QSizePolicy::Preferred</enum>
               </property>
-             </widget>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>40</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
             </item>
-            <item row="2" column="0">
-             <spacer name="verticalSpacer_5">
+            <item row="0" column="0">
+             <spacer name="horizontalSpacer_4">
               <property name="orientation">
-               <enum>Qt::Vertical</enum>
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeType">
+               <enum>QSizePolicy::Preferred</enum>
               </property>
               <property name="sizeHint" stdset="0">
                <size>
-                <width>20</width>
-                <height>40</height>
+                <width>40</width>
+                <height>20</height>
                </size>
               </property>
              </spacer>
             </item>
            </layout>
-          </item>
-          <item row="0" column="2">
-           <spacer name="horizontalSpacer_3">
-            <property name="orientation">
-             <enum>Qt::Horizontal</enum>
-            </property>
-            <property name="sizeType">
-             <enum>QSizePolicy::Preferred</enum>
-            </property>
-            <property name="sizeHint" stdset="0">
-             <size>
-              <width>40</width>
-              <height>20</height>
-             </size>
-            </property>
-           </spacer>
-          </item>
-          <item row="0" column="0">
-           <spacer name="horizontalSpacer_4">
-            <property name="orientation">
-             <enum>Qt::Horizontal</enum>
-            </property>
-            <property name="sizeType">
-             <enum>QSizePolicy::Preferred</enum>
-            </property>
-            <property name="sizeHint" stdset="0">
-             <size>
-              <width>40</width>
-              <height>20</height>
-             </size>
-            </property>
-           </spacer>
-          </item>
-         </layout>
-        </widget>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <spacer name="keyboardSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
        </item>
-       <item row="10" column="0">
+       <item>
         <widget class="QGroupBox" name="keyboardGroupBox">
          <property name="sizePolicy">
           <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
@@ -386,34 +556,31 @@
          </layout>
         </widget>
        </item>
-       <item row="13" column="0">
-        <widget class="QGroupBox" name="modeGroupBox">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
+       <item>
+        <spacer name="modeSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
          </property>
-         <property name="title">
-          <string>Mode</string>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
          </property>
-         <layout class="QGridLayout" name="gridLayout_15">
-          <item row="0" column="0">
-           <spacer name="horizontalSpacer_5">
-            <property name="orientation">
-             <enum>Qt::Horizontal</enum>
-            </property>
-            <property name="sizeType">
-             <enum>QSizePolicy::Preferred</enum>
-            </property>
-            <property name="sizeHint" stdset="0">
-             <size>
-              <width>40</width>
-              <height>20</height>
-             </size>
-            </property>
-           </spacer>
-          </item>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="modeGroupBox">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="title">
+          <string>Mode</string>
+         </property>
+         <layout class="QGridLayout" name="gridLayout_15">
           <item row="0" column="1" rowspan="2">
            <layout class="QGridLayout" name="gridLayout_16">
             <item row="0" column="0">
@@ -452,11 +619,27 @@
             </item>
            </layout>
           </item>
+          <item row="0" column="0">
+           <spacer name="horizontalSpacer_5">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Preferred</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>40</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
          </layout>
         </widget>
        </item>
-       <item row="14" column="0">
-        <spacer name="verticalSpacer_7">
+       <item>
+        <spacer name="verticalSpacer_4">
          <property name="orientation">
           <enum>Qt::Vertical</enum>
          </property>
@@ -752,11 +935,11 @@
           <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></string>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></string>
          </property>
          <property name="textInteractionFlags">
           <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
@@ -784,6 +967,9 @@ p, li { white-space: pre-wrap; }
              <property name="acceptDrops">
               <bool>false</bool>
              </property>
+             <property name="documentTitle">
+              <string notr="true"/>
+             </property>
              <property name="undoRedoEnabled">
               <bool>false</bool>
              </property>
@@ -931,6 +1117,9 @@ p, li { white-space: pre-wrap; }
              <property name="acceptDrops">
               <bool>false</bool>
              </property>
+             <property name="documentTitle">
+              <string notr="true"/>
+             </property>
              <property name="undoRedoEnabled">
               <bool>false</bool>
              </property>
@@ -973,318 +1162,644 @@ jloup at gzip.org          madler at alumni.caltech.edu</string>
              <property name="acceptDrops">
               <bool>false</bool>
              </property>
+             <property name="documentTitle">
+              <string notr="true"/>
+             </property>
              <property name="undoRedoEnabled">
               <bool>false</bool>
              </property>
              <property name="plainText">
               <string notr="true">Copyright (C) 1996-2011 Glyph & Cog, LLC.
 
-Xpdf is licensed under the GNU General Public License (GPL), version
-2.  In my opinion, the GPL is a convoluted, confusing, ambiguous mess.
-But it's also pervasive, and I'm sick of arguing.  And even if it is
-confusing, the basic idea is good.
-
-In order to cut down on the confusion a little bit, here are some
-informal clarifications:
-
-- I don't mind if you redistribute xpdf in source and/or binary form,
-  as long as you include all of the documentation: README, man pages
-  (or help files), and COPYING.  (Note that the README file contains a
-  pointer to a web page with the source code.)
-
-- Selling a CD-ROM that contains xpdf is fine with me, as long as it
-  includes the documentation.  I wouldn't mind receiving a sample
-  copy, but it's not necessary.
+Xpdf is licensed under the GNU General Public License (GPL), version 2
+or 3.  This means that you can distribute derivatives of Xpdf under
+any of the following:
+  - GPL v2 only
+  - GPL v3 only
+  - GPL v2 or v3
 
-- If you make useful changes to xpdf, please make the source code
-  available -- post it on a web site, email it to me, whatever.
-
-For information on commercial licensing and consulting, please see the
-Glyph & Cog web site:
-
-    http://www.glyphandcog.com/
-
-Here is the full text of the GNU General Public License version 2.
+Here is the full text of the GNU General Public License version 3.
 
 --8<---------------cut here---------------start------------->8---
                     GNU GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
+                       Version 3, 29 June 2007
 
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
                             Preamble
 
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
 
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
 
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
 
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
 
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
 
-                            NO WARRANTY
+  The precise terms and conditions for copying, distribution and
+modification follow.
 
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
 
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
 
                      END OF TERMS AND CONDITIONS
 
@@ -1296,55 +1811,50 @@ free software which everyone can redistribute and change under these terms.
 
   To do so, attach the following notices to the program.  It is safest
 to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
+state the exclusion of warranty; and each file should have at least
 the "copyright" line and a pointer to where the full notice is found.
 
     <one line to give the program's name and a brief idea of what it does.>
     Copyright (C) <year>  <name of author>
 
-    This program is free software; you can redistribute it and/or modify
+    This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License.
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
 
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 Also add information on how to contact you by electronic and paper mail.
 
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
 
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
     This is free software, and you are welcome to redistribute it
     under certain conditions; type `show c' for details.
 
 The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
 --8<---------------cut here---------------end--------------->8---</string>
              </property>
              <property name="textInteractionFlags">
@@ -1364,12 +1874,21 @@ Public License instead of this License.
              <property name="acceptDrops">
               <bool>false</bool>
              </property>
+             <property name="documentTitle">
+              <string notr="true"/>
+             </property>
              <property name="undoRedoEnabled">
               <bool>false</bool>
              </property>
              <property name="plainText">
               <string notr="true">Copyright (C) 2005-2007 Sergey A. Tachenov
 
+QuaZIP is licensed under the GNU General Pulbic License (GPL), either
+version 2 or (at your option) any later version.
+
+Here is the full text of the GNU General Public License version 2.
+
+--8<---------------cut here---------------start------------->8---
                     GNU GENERAL PUBLIC LICENSE
                        Version 2, June 1991
 
@@ -1708,7 +2227,8 @@ This General Public License does not permit incorporating your program into
 proprietary programs.  If your program is a subroutine library, you may
 consider it more useful to permit linking proprietary applications with the
 library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.</string>
+Public License instead of this License.
+--8<---------------cut here---------------end--------------->8---</string>
              </property>
              <property name="textInteractionFlags">
               <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
@@ -1727,504 +2247,700 @@ Public License instead of this License.</string>
              <property name="acceptDrops">
               <bool>false</bool>
              </property>
+             <property name="documentTitle">
+              <string notr="true"/>
+             </property>
+             <property name="undoRedoEnabled">
+              <bool>false</bool>
+             </property>
              <property name="plainText">
-              <string notr="true">Copyright (C) 2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+              <string notr="true">Copyright (C) 2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
 
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
+Open-Sankoré is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 3 of the License,
+with a specific linking exception for the OpenSSL project's
+"OpenSSL" library (or with modified versions of it that use the
+same license as the "OpenSSL" library).
+
+Here is the full text of the GNU General Public License version 3.
+
+--8<---------------cut here---------------start------------->8---
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
 
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
                             Preamble
 
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
 
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
 
   When we speak of free software, we are referring to freedom, not
 price.  Our General Public Licenses are designed to make sure that you
 have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
 
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
 
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
 
   The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-  In addition, as a special exception, the Open-Sankoré authors
-give permission to link the code of its release of Open-Sankoré with the
-OpenSSL project's "OpenSSL" library (or with modified versions of it
-that use the same license as the "OpenSSL" library), and distribute
-the linked executables.  You must obey the GNU Library General Public License
-in all respects for all of the code used other than "OpenSSL".  If you
-modify this file, you may extend this exception to your version of the
-file, but you are not obligated to do so.  If you do not wish to do
-so, delete this exception statement from your version.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
+modification follow.
 
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
 this License.
 
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
 otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
 
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
 
                      END OF TERMS AND CONDITIONS
 
-           How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
+            How to Apply These Terms to Your New Programs
 
-  To apply these terms, attach the following notices to the library.  It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
 
-    <one line to give the library's name and a brief idea of what it does.>
-    Copyright (C) <year> Webdoc SA
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
 
-    This file is part of Open-Sankoré.
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
 
-    Open-Sankoré is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Library General Public
-    License as published by the Free Software Foundation, version 2,
-    with a specific linking exception for the OpenSSL project's
-    "OpenSSL" library (or with modified versions of it that use the
-    same license as the "OpenSSL" library).
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
 
-    Open-Sankoré is distributed in the hope that it will be useful,
+    This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Library General Public License for more details.
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
 
-    You should have received a copy of the GNU Library General Public
-    License along with Open-Sankoré, if not, see
-    <http://www.gnu.org/licenses/>.
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 Also add information on how to contact you by electronic and paper mail.
 
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
 
-  <signature of Ty Coon>, 1 April 1990
-  Ty Coon, President of Vice
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
 
-That's all there is to it!</string>
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+--8<---------------cut here---------------end--------------->8---</string>
              </property>
              <property name="textInteractionFlags">
               <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
@@ -2247,16 +2963,22 @@ That's all there is to it!</string>
       <layout class="QVBoxLayout" name="verticalLayout_2">
        <item>
         <widget class="QTextBrowser" name="copyrightTextBrowser">
+         <property name="acceptDrops">
+          <bool>false</bool>
+         </property>
          <property name="html">
-          <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+          <string notr="true"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 2.0, Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></string>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Open-Sankoré version 2.1.0, Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la GNU General Public Licence (GNU GPL) telle que publiée par la Free Software Foundation en version 3, avec une exception OpenSSL.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu';"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu';">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License, with a specific linking exception for the OpenSSL project's &quot;OpenSSL&quot; library (or with modified versions of it that use the same license as the &quot;OpenSSL&quot; library). You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu';"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu';">&quot;</span></p></td></tr></table></body></html></string>
+         </property>
+         <property name="openLinks">
+          <bool>false</bool>
          </property>
         </widget>
        </item>
@@ -2308,62 +3030,55 @@ p, li { white-space: pre-wrap; }
        <item>
         <widget class="QTextBrowser" name="credentialTextBrowser">
          <property name="html">
-          <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+          <string notr="true"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></string>
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></string>
          </property>
          <property name="textInteractionFlags">
           <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
@@ -2385,25 +3100,29 @@ p, li { white-space: pre-wrap; }
           <string notr="true"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:18px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Translations</span></p>
-<p style=" margin-top:16px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">A special thanks to:</span></p>
-<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-size:medium; font-weight:600;" style=" margin-top:16px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium; font-weight:400;">Alexander Angelov and Iva Ninova for Bulgarian</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Francesc Busquets for Catalan</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Jaroslav Krejčí, Janek Wagner for Czech</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Geert Kraeye and Derk Klomp for Dutch</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Christian Oïhénart and François Bocquet for French</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Hans-Peter Zahno and Klaus Tenner for German</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Yannis Kiolalis for Greek</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Antonello Comi and Marco Menardi for Italian</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Didier Clerc for Japanese</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Faraniaina Domoina Rabarijaona for Malagasy</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Patricia Fisch and César Marques for Portuguese</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Ilia Ryabokon for Russian</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Anki Chen for Traditional Chinese</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Jaroslav Ryník for Slovak</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Dorian Fuentes and Juan José Gutiérrez Aparicio for Spanish</span></li>
-<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Ferhat Ozkasgarli for Turkish</span></li></ul></body></html></string>
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Translations</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">A special thanks to:</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Alexander Angelov and Iva Ninova for Bulgarian</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Francesc Busquets and Toni Hortal for Catalan</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Christophe Gallego for Corsican</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Jaroslav Krejčí, Janek Wagner for Czech</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Geert Kraeye and Derk Klomp for Dutch</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Christian Oïhénart and François Bocquet for French</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Hans-Peter Zahno and Klaus Tenner for German</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Yannis Kaskamanidis for Greek</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Lalit Mohan for Hindi</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Antonello Comi and Marco Menardi for Italian</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Didier Clerc for Japanese</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Faraniaina Domoina Rabarijaona for Malagasy</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Patricia Fisch and César Marques for Portuguese</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Ilia Ryabokon for Russian</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Anki Chen for Traditional Chinese</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Jaroslav Ryník for Slovak</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Dorian Fuentes and Juan José Gutiérrez Aparicio for Spanish</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">        • Ferhat Ozkasgarli for Turkish</p></body></html></string>
          </property>
         </widget>
        </item>
@@ -2411,55 +3130,6 @@ p, li { white-space: pre-wrap; }
      </widget>
     </widget>
    </item>
-   <item row="3" column="0">
-    <widget class="QFrame" name="frame">
-     <property name="frameShape">
-      <enum>QFrame::NoFrame</enum>
-     </property>
-     <property name="frameShadow">
-      <enum>QFrame::Raised</enum>
-     </property>
-     <layout class="QHBoxLayout" name="horizontalLayout_2">
-      <property name="margin">
-       <number>0</number>
-      </property>
-      <item>
-       <widget class="QPushButton" name="defaultSettingsButton">
-        <property name="text">
-         <string>Default Settings</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <spacer name="bottomHSpacer">
-        <property name="orientation">
-         <enum>Qt::Horizontal</enum>
-        </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>40</width>
-          <height>20</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout">
-        <item>
-         <widget class="QPushButton" name="closeButton">
-          <property name="text">
-           <string>Close</string>
-          </property>
-          <property name="default">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
   </layout>
  </widget>
  <tabstops>
diff --git a/Sankore-3.1/resources/i18n/sankore_ar.ts b/Sankore-3.1/resources/i18n/sankore_ar.ts
index 71d422a..d885669 100644
--- a/Sankore-3.1/resources/i18n/sankore_ar.ts
+++ b/Sankore-3.1/resources/i18n/sankore_ar.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>اشارة مرجعية</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>ضبط تسجيل البودكاست</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>قلاش تراب</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>محتوى فلاش تراب</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>ويب تراب</translation>
     </message>
@@ -728,14 +721,6 @@
         <translation>التقاط نافذة</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>تضمين محتوى ويب</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>التقاط محتوى ويب قابل للتضمين</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>اظهار العرض</translation>
     </message>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation>تجميع</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">التنزيل إلى</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">المكتبة</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>التنزيل إلى المكتبة</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">التنزيل إلى</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">الصفحة الحالية</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>التنزيل في الصفحة الحالية</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">إضافة الرابط إلى</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">المكتبة</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>اضافة الرابط إلى المكتبة</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">إضافة الرابط إلى</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">الصفحة الحالية</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>إضافة الرابط إلى الصفحة الحالية</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">اشارة مرجعية</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -988,13 +1010,110 @@
         <translation>الشكل:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>الحجم:</translation>
+        <source>Alpha:</source>
+        <translation>ألفا:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translatorcomment>اغلاق:</translatorcomment>
-        <translation>Close</translation>
+        <source>Geometry:</source>
+        <translation>الهندسة:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>العرض:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>الارتفاع:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>الحفاظ على النسب</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>نسق:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>معاينة:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>اغلاق التخزين المؤقت</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><إسقاط المحتوى></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>لم يقع قبول الصور </translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>لا يمكن عرض البيانات</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>لم يقع التعرّف على الملف المسقط كملفّ صوتي</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>تشغيل ملف صوتي</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>إضافة رابط إلى الصفحة</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>إضافة رابط إلى صفحة الويب</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>سحب الملف الصوتي من المكتبة وإسقاطه في هذا الصندوق</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>موافق</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>الصفحة التالية</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>الصفحة السابقة</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>صفحة العنوان</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>الصفحة الأخيرة</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>رقم الصفحة</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>ادخال نص محدد موقع المعلومات هنا</translation>
     </message>
 </context>
 <context>
@@ -1059,42 +1178,6 @@
         <translation>ازالة الصفحة</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>ازالة الوثيقة</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>هل تريدون حقا ازالة الوثيقة '1%'؟</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>إفراغ سلة المهملات</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>هل تريدون حقا إفراغ سلة المهملات؟</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>يجري افراغ سلة المهملات</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>تمّ افراغ سلة المهملات</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>ازالة مجلد</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>هل تريدون حقا ازالة المجلد '1%' وكل محتوياته؟</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>لم يقع اختيار وثيقة!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>فتح الملف المدعوم</translation>
     </message>
@@ -1165,6 +1248,14 @@
         <source>Untitled Documents</source>
         <translation>وثائق غير معنونة</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>هذه عملية لا رجعة فيها! </translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1252,6 +1343,64 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>موافقة</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>تعويض</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>إلغاء </translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>إنّ الاسم %1 هو قيد الاستعمال.
+إنّ الحفاظ على هذا الاسم سيعوّض الوثيقة.
+سيترتّب عن تقديم اسم جديد إنشاء وثيقة جديدة.
+</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>وثائقي</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>نماذج</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>سلة المهملات</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>وثائق غير معنونة</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">نسخ الصفحة 1% / 2%</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 صفحة منسوخة</numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1274,6 +1423,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>فشل التنزيل.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>لقد رفض الملقم البعيد الاتصال (لا يقبل الملقم الطلبات)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>لقد أغلق الملقم البعيد الاتصال بصورة مبكّرة، قبل استلام كامل الإجابة ومعالجتها</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>لم يقع العثور على اسم المضيف البعيد (اسم مضيف غير صالح)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>لقد انتهت المدة المحددة للاتصال بالملقم البعيد </translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>تم إلغاء العملية عبر طلبات لإلغاء() أو إغلاق() قبل أن تنتهي.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>لقد فشل التعارف SSL/TLS ولم يقع إنشاء قناة مشفّرة. وكان من المفروض بثّ إشارة sslErrors().</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>تم قطع الاتصال بسبب انقطاع عن الشبكة، لكن أطلق النظام التجوال نحو نقطة دخول أخرى. يجب إعادة تقديم الطلب وستتم معالجته بمجرد إعادة ربط الاتصال.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>تم رفض الاتصال بالملقم الوكيل (لا يقبل الملقم الوكيل الطلبات)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>لقد أغلق الملقم الوكيل الاتصال بصورة مبكّرة، قبل استلام كامل الإجابة ومعالجتها</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>لم يقع العثور على اسم المضيف الوكيل (اسم مضيف الوكيل غير صالح)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>لقد انتهت المدة المحددة للاتصال بالملقم الوكيل أو الملقم الوكيل لم يجب في الوقت المحدد على الطلب المرسل</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>يطلب الملقم الوكيل مصادقة قصد تلبية الطلب لكنّه لم يقبل بيانات الاعتماد المقدمة (إن وجدت)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>تم رفض الوصول إلى المحتوى البعيد (على غرار HTTP error 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>العملية المطلوبة على المحتوى البعيد غير مسموح بها</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>لم يقع العثور على المحتوى البعيد في الملقم (على غرار HTTP error 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>يطلب الملقم البعيد مصادقة قصد تقديم المحتوى لكن لم يتم قبول بيانات الاعتماد المقدمة (إن وجدت)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>يجب إرسال الطلب مرة أخرى، لكن هذا الطلب فشل على سبيل المثال بسبب عدم إمكانية قراءة بيانات التحميل للمرة الثانية.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>لا يمكن لشبكة الاتصال API الاستجابة للطبل لأنّ البروتوكول غير معروف</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>العملية المطلوبة غير صالحة لهذا البروتوكول</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>تمّ اكتشاف خطأ مجهول متعلّق بالشبكة</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>تمّ اكتشاف خطأ مجهول متعلّق بالوكيل</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>تمّ اكتشاف خطأ مجهول متعلّق بالمحتوى البعيد</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>تم اكتشاف عطل في البروتوكول (خطأ تحليل، إجابات غير صالحة أو غير متوقعة...)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1342,6 +1590,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>فشل في تصدير... </translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>التصدير كملف UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>تصدير الوثيقة...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>تصدير ناجح.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>فشل التصدير.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>التصدير إلى شكل Sankore UBX</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1428,6 +1703,10 @@
         <source>Object informations</source>
         <translation>معلومات حول الأشياء</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation>اضافة</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1510,6 +1789,14 @@
         <source>Trash</source>
         <translation>سلة المهملات</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>اشارات مرجعية</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>الويب</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1543,6 +1830,22 @@
         <source>Visible on Extended Screen</source>
         <translation>مرئي على الشاشة الكبيرة</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>اضافة عملية</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>إزالة الرابط إلى الصوت</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>إزالة الرابط إلى الصفحة</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>إزالة الرابط إلى عنوان الويب</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1558,6 +1861,22 @@
         <source>Go to Content Source</source>
         <translation>الذهاب الى مصدر المحتوى</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>اضافة عملية</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>إزالة الرابط إلى الصوت</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>إزالة الرابط إلى الصفحة</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>إزالة الرابط إلى عنوان الويب</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1578,13 +1897,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>الويب</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1645,6 +1957,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (مجموعة الوثائق) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1853,6 +2172,142 @@ Do you want to ignore these errors for this host?</source>
         <source>Marker is pressure sensitive</source>
         <translation>العلامة حساسة للضغط</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>إعداد أصلي</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>العربية</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>البلغارية</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>الكاتالونية</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>التشيكية</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>الدنماركية</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>الألمانية</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>اليونانية</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>الانجليزية</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>الانجليزية المملكة المتحدة</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>الاسبانية</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>الفرنسية</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>الفرنسية السويسرية</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>الايطالية</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>العبرية</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>اليابانية</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>الكورية</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>الملغاشية</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>النرويجية</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>الهولندية</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>البولونية</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>الرومانشية</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>الرومانية</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>الروسية</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>السلوفاكية</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>السويدية</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>التركية</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>الصينية</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>الصينية المبسطة</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>الصينية التقليدية</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>الكورسية</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>الهندية</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1894,6 +2349,17 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation>أفلامي</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>مرئي في المرّة القادمة</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2014,27 +2480,27 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NoDerivs CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-ShareAlike CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NonCommercial CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
@@ -2107,21 +2573,16 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>تخزين مؤقت</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translatorcomment>More context needed</translatorcomment>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>صفحة كاملة</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>الويب</translation>
+        <source>Embed </source>
+        <translation>تضمين</translation>
     </message>
 </context>
 <context>
@@ -2469,6 +2930,49 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>اختيار محتوى للامساك به:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>اسم التطبيق</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>تقييد وإخلاء المسؤولية.</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>تم تطوير هذه الوظيفة للعمل على صفحات الويب الأكثر شيوعا.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>يرجى احترام حقوق التأليف والنشر فيما يتعلق بإنشاء روابط أو استعمال محتويات من شبكة الإنترنت.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>التنزيل إلى المكتبة</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>التنزيل في الصفحة الحالية</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>اضافة الرابط إلى المكتبة</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>إضافة الرابط إلى الصفحة الحالية</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
@@ -2545,6 +3049,10 @@ p, li { white-space: pre-wrap; }
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">بالضغط على 'تحميل'، تشهدون أنكم تملكون كل حقوق المحتوى أو أنكم تملكون رخصة من مالك الحقوق لنشر المحتوى على اليوتوب، وأنه يخترم شروط استعمال لبيوتوب الموجودة في </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html>
 </translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>استعادة بيانات الاعتماد عند إعادة التمهيد</translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2725,22 +3233,10 @@ p, li { white-space: pre-wrap; }
         <translation>رخص</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>About</source>
         <translation>حول</translation>
     </message>
@@ -2800,10 +3296,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>المرور:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation>معرّف كوكب  Sankoré </translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>المستعمل:</translation>
@@ -2813,558 +3305,72 @@ p, li { white-space: pre-wrap; }
         <translation>المرور:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>الشكر إلى</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Start up tips</source>
+        <translation>إطلاق الإرشادات</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> يقدّم البرنامج كما هو، دون أي ضمان صريح أو ضمني. ولن يكون مطورو البرنامج مسؤولين في أي حال من الأحوال عن أية أضرار ناتجة عن الاستعمال.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> يرخّص لأي شخص استعمال هذا البرنامج لأي غرض كان، بما في ذلك الاستعمالات التجارية وتغييره وإعادة توزيعه بحرية لكن مع احترام الشروط التالية:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 1. يجب عدم إخفاء مصدر البرنامج؛ لا يمكنكم ادعاء أنكم من طورتم البرنامج الأصلي. في حال استعمالكم للبرنامج في منتج ما، من المستحسن ذكر ذلك في دليل المنتج ولكن يبقى ذلك اختياريا.
-</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 2. يجب الإعلان صراحة عن النسخ الأصلية التي وقع تغييرها ويجب عدم تقديمها بصفتها المنتج الأصلي.
-</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 3.لا يمكن إزالة هذه الوثيقة أو تغييرها في أي توزيع للبرنامج.
-</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html>
-</translation>
+        <source>Show start up tips</source>
+        <translation>إظهار إطلاق الإرشادات</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>اللغة</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>اختيار اللغة</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>سيتمّ تحميل اللغة الجديدة عند تشغيل البرنامج من جديد</translation>
+    </message>
+    <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>إغلاق Open-Sankoré</translation>
     </message>
     <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>هوية Planète Sankoré لتصدير الوثيقة</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>استعادة بيانات الاعتماد عند إعادة التمهيد</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré نسخة 1.4 ؛ حقوق التأليف 2010-2012 لـGroupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
-(GIP ENA)<br /><br />Open-Sankoré هو برنامج حرّ: يمكنكم إعادة توزيعه و/أو تغيير شرط احترام شروط Lesser GNU general Public Licence (GNU LGPL) كما هي منشورة من قبل Free Software Foundation في النسخة الثانية والنسخ التالية.
-<br />يمكنكم الاطلاع على مصدر التعليمات البرمجية للبرنامج وتحميله على</span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />يقع توزيع Open-Sankoré بأمل أن يكون مفيدا لكن دون أي ضمان، من دون حتى ضمان ضمني للتسويق أو التكييف مع منتج بعينه.<br />يمكنكم الاطلاع على رخصة Lesser GNU General Public Licence  الموجود في باب الرخص أو زيارة الموقع </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />الهاتف:  01 43 17 68 08<br />البريد الإلكتروني: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">إنّ التراخيص هي باللغة الانجليزية لاحترام الترجمة الرسمية والقانونية المصادق عليها.</span></p></td></tr></table></body></html>
 </translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
     <name>trapFlashDialog</name>
diff --git a/Sankore-3.1/resources/i18n/sankore_bg.ts b/Sankore-3.1/resources/i18n/sankore_bg.ts
index e96f00b..13e5681 100644
--- a/Sankore-3.1/resources/i18n/sankore_bg.ts
+++ b/Sankore-3.1/resources/i18n/sankore_bg.ts
@@ -189,6 +189,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Отметка</translation>
     </message>
     <message>
@@ -708,14 +709,6 @@
         <translation>Конфигурации на записа на подкаст</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Инструмент за Flash съдържание</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Съдържание на Flash</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Инструмент за съдържание от мрежата</translation>
     </message>
@@ -736,14 +729,6 @@
         <translation>Снимане на прозорец</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Вмъкване на съдържание от мрежата</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Снимане на съдържание от мрежата</translation>
-    </message>
-    <message>
         <source>Show Main Screen on Display Screen</source>
         <translation>Покажи главния екран </translation>
     </message>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation>Групирай</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation>Изтегли в библиотеката</translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Изтегли в библиотеката</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation>Изтегли на текущата страница</translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Изтегли на текущата страница</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation>Добави линка към библиотеката</translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Добави линка към библиотеката</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation>Добави линка към текущата страница</translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Добави линка към текущата страница</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Отметка</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -988,12 +1010,110 @@
         <translation>Форма:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Размер:</translation>
+        <source>Alpha:</source>
+        <translation>Алфа</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Затвори</translation>
+        <source>Geometry:</source>
+        <translation>Геометрия</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Ширина</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Височина</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Запази пропорцийте</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Вид</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Предварителен преглед</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Затвори кеша</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation>пусни съдържанието</translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Изображенията не са приети</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Не може да покаже данни</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Пуснатият файл не е разпознат като аудио файл</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Възпроизвеждане на аудио файл</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Добавяне на връзка към страницата</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Добавяне на връзка към Уеб страница</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Плъзнете и пуснете аудио файла от библиотеката в това поле</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Добре</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Следваща страница</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Предишна страница</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Заглавна страница</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Последна страница</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Страница номер</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Вмъкнете URL текст тук</translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1178,6 @@
         <translation>Премахни страницата</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Премахни документа</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Сигурни ли сте, че искате да премахнете документа '%1'?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Изпразни кошчето</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Сигурни ли сте, че искате да изпразните кошчето?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Изпразване на кошче</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Кошчето е изпразнено</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Премахни папка</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Сигурни ли сте, че искате да премахнете папка '%1' и всичко което съдържа? </translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Не е избран документ!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Отвори поддържани файлове</translation>
     </message>
@@ -1161,6 +1245,14 @@
         <source>Untitled Documents</source>
         <translation>Неозаглавени документи</translation>
     </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1248,6 +1340,59 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Приеми</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Смени</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Откажи</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Името %1 е вече изпозлвано.
+Запазването на името ще замени документа.
+Осигуряването на ново име ще създаде нов документ.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Моите документи</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Модели</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Кошче</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Неозаглавени документи</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Копиране на страница %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 страница копирана</numerusform>
+            <numerusform>%1 страници копирани</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1266,6 +1411,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Изтеглянето се провали</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>отдалеченият сървър отказа свързване(сървърът не приема заявки)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>отдалеченият сървър затвори връзката преждевременно, преди целият отговор да бъде приет и обработен</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>отдалеченото хост име не беше намерено(невалидно хост име)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>връзката с отдалечения сървър изтече</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>операцията беше отменена през повиквания за abort() или close() преди да бъде завършена.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>SSL/TLS ръкостискането се провали и криптираният канал не може да бъде достигнат. Сигналът sslErrors() е трябвало да бъде освободен.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>връзката беше прекъсната поради изключване от мрежата, обаче системата инициира роуминг до друга достъпна точка. Заявката трябва да бъде препратена и ще бъде обработена веднага след като връзката бъде преустановена.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>връзката към proxy сървъра беше отказана(proxy сървъра не приема заявки)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>proxy сървърът затвори връзката преждевременно, преди целият отговор да бъде приет и обработен</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>proxy хост името не беше намерено (невалидно proxy хост име)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>връзката към proxy изтече или proxy сървърът не е отговорил на време на изпратената заявка</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>proxy сървърът изисква удостоверение, за да уважи заявката, но не приема никакви предложени пълномощия(ако има такива)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>достъпът до дистанционното съдържание е отказан(подобно на HTTP грешка 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>изискана операция върху дистанционнот съдържание не е разрешена</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>дистанционното съдържание не беше намерено на сървъра(подобно на HTTP грешка 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>дистанционният сървър изисква удостоверение да предостави съдържанието, но предоставените предложения не бяха приети(ако има такива)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>заявката трябваше да бъде изпратена отново, но изпращането се провали защото качената информация не можа да се прочете втори път.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>API мрежата за достъп не може да уважи заявката, защото протколът е непознат.</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>изискана операция е невалидна за този протокол</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>непознат, свързан с мрежата проблем, беше засечен</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>непознат, свързан с proxy сървъра проблем, беше засечен</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>непознат, свързан с дистанционното съдържание проблем, беше засечен</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>счупване в протокола, беше засечено (разборна грешка, невалидни или неочаквани отговори и т.н.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1334,6 +1578,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Не можа да се експортира...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Експортирай като UBX файл</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Експортиране на документа...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Експортирането беше успешно.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Експортирането се провали.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Експортирай като Sankore UBX Format</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1420,6 +1691,10 @@
         <source>Object informations</source>
         <translation>Информация за обекта</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">Добави</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1502,6 +1777,14 @@
         <source>Trash</source>
         <translation>Кошче</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Отметки</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Мрежа</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1535,6 +1818,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Видим на втория екран</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Въведете действие</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Премахни аудио линк</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Премахни линк към страница</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Премахни линк към уеб страница</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1550,6 +1849,22 @@
         <source>Go to Content Source</source>
         <translation>Отиди към източника на съдържанието</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Въведете действие</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Премахни аудио линк</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Премахни линк към страница</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Премахни линк кум уеб страница</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1570,13 +1885,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Мрежа</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1637,6 +1945,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Отвори-Sankore (пореди от документи) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1851,6 +2166,142 @@ Do you want to ignore these errors for this host?</source>
         <source>Marker is pressure sensitive</source>
         <translation>Чувствителен на натиск маркер</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Арабски</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Български</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Каталонски</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Чешки</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Датски</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Немски</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Гръцки</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Английски</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Ангийски Обединеното кралство</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Испански</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Френски</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Щвейцарски френски</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Италиански</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Иврит</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Японски</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Корейски</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Мадагаскарски</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Норвежки</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Холандски</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Полски</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Румънски</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Руски</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Словашки</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Шведски</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Турски</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Китайски</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Опростен Китайски</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Традиционен Китайски</translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1882,15 +2333,26 @@ Do you want to ignore these errors for this host?</source>
         <translation>Описание:</translation>
     </message>
     <message>
-        <source>Publish</source>
-        <translation>Публикувай</translation>
+        <source>Publish</source>
+        <translation>Публикувай</translation>
+    </message>
+</context>
+<context>
+    <name>UBSettings</name>
+    <message>
+        <source>My Movies</source>
+        <translation>Моите филми</translation>
+    </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Уеб</translation>
     </message>
 </context>
 <context>
-    <name>UBSettings</name>
+    <name>UBStartupHintsPalette</name>
     <message>
-        <source>My Movies</source>
-        <translation>Моите филми</translation>
+        <source>Visible next time</source>
+        <translation>Видим следващия път</translation>
     </message>
 </context>
 <context>
@@ -2105,20 +2567,16 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>Кеш</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation type="obsolete">Аристо</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Цялата страница</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Мрежа</translation>
+        <source>Embed </source>
+        <translation>Вгради</translation>
     </message>
 </context>
 <context>
@@ -2464,6 +2922,49 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Изберете съдържание, което да заемете:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Име на приложението</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Ограничаване и поемане на отговорност</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Тази функция е разработена да работи с най - разпространените уеб страници.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Моля, спазвайте авторските права за създаване на връзки или заемане на съдържание от мрежата.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2541,7 +3042,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Restore credentials on reboot</source>
-        <translation type="unfinished"></translation>
+        <translation>Възстановяване на пълномощията при рестартиране</translation>
     </message>
 </context>
 <context>
@@ -2739,22 +3240,10 @@ p, li { white-space: pre-wrap; }
         <translation>Лиценз</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>ОтворенSSI</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>мрежа</translation>
     </message>
@@ -2798,10 +3287,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Парола:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="obsolete">Planete Санкоре ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Потребител:</translation>
@@ -2811,1034 +3296,62 @@ p, li { white-space: pre-wrap; }
         <translation>Парола:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation>                 GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS</translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Изготвили</translation>
     </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Planète Sankoré ID - за експортиране на файл</translation>
+    </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Лицензите са на английски език, за да се запази пълния смисъл на одобрения текст.</span></p></td></tr></table></body></html></translation>
+        <source>Restore credentials on reboot  </source>
+        <translation>Възстановяване на пълномощията при рестартиране  </translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Този софтуер е предоставен във вида в който го виждате, без гаранции. В никакъв случай авторите не могат да бъдат държани отговорни за вреди породени от използването на този софтуер.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Дава се разрешение за ползване на този софтуер, разрешението се дава на всеки и за всякакви цели, вкл. комерсиални цели, както свободна промяна на съдържанието и свободно копиране и разпространение. Съществуват следните ограничения:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. Източника на софтуера трябва да бъде представен, той не може да бъде злепоставян, нямате право да си присвоявате правата за авторство на този софтуер. Ако ползвате този софтуер, цитирането на неговите автори ще бъде прието добре, но не е задължително.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Ако създадете различна версия на този софтуер трябва да го обявите видно, и да не представяте своята версия за оригиналната.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. Това съобщение не може да бъде премахвано от вашата нова версия или модификация на този софтуер.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+        <source>Start up tips</source>
+        <translation>Съвети при стратиране</translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré версия 1.4 , Всички права са запазени (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    <message>
+        <source>Show start up tips</source>
+        <translation>Показване на съвети при стратиране</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Език</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Избери език</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Новият език ще бъде зареден на следващият рестарт</translation>
     </message>
     <message utf8="true">
-        <source>Planète Sankoré ID for exporting file</source>
-        <translation type="unfinished"></translation>
+        <source>Close Open-Sankoré</source>
+        <translation>Затоври Отвори-Sankoré</translation>
     </message>
     <message>
-        <source>Restore credentials on reboot  </source>
-        <translation type="unfinished"></translation>
+        <source>OpenSSL</source>
+        <translation>Отвори SSL</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_ca.ts b/Sankore-3.1/resources/i18n/sankore_ca.ts
index b7ee62c..97e68d3 100644
--- a/Sankore-3.1/resources/i18n/sankore_ca.ts
+++ b/Sankore-3.1/resources/i18n/sankore_ca.ts
@@ -265,6 +265,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Adreça d'interès</translation>
     </message>
     <message>
@@ -628,14 +629,6 @@
         <translation>Captura una finestra</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Incrusta contingut web</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Captura contingut web incrustable</translation>
-    </message>
-    <message>
         <source>Show Main Screen on Display Screen</source>
         <translation>Mostra la pantalla principal a la pantalla</translation>
     </message>
@@ -736,14 +729,6 @@
         <translation>Configura l'enregistrament del podcast</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Captura d'objectes Flash</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Captura un objecte Flash</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Captura de contingut web</translation>
     </message>
@@ -823,6 +808,44 @@
         <source>Group</source>
         <translation>Agrupa</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Descarrega-ho a</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">biblioteca</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translatorcomment>Descarrega-ho a la biblioteca</translatorcomment>
+        <translation>Download to library</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Descarrega-ho a</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">pàgina actual</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Descarrega-ho a la pàgina actual</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Afegeix un enllaç a</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">biblioteca</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Afegeix un enllaç a la biblioteca</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Afegeix un enllaç a</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">pàgina actual</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Afegeix un enllaç a la pàgina actual</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Adreça d'interès</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -988,12 +1011,110 @@
         <translation>Forma:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Mida:</translation>
+        <source>Alpha:</source>
+        <translation>Opacitat:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Tanca</translation>
+        <source>Geometry:</source>
+        <translation>Geometria:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Amplada:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Alçada:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Mantén les proporcions</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Modalitat:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Previsualització:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Tanca la memòria cau</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><deixa-hi caure quelcom></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>No s'accepten imatges</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Les dades no es poden mostrar</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>El fitxer que heu deixat caure no és de so digital</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Reprodueix un fitxer de so</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Afegeix un enllaç a la pàgina</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Afegeix un enllaç a una pàgina web</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Arrossega i deixa caure un fitxer de so de la llibreria dins d'aquesta caixa</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>D'acord</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Pàgina següent</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Pàgina anterior</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Pàgina de títol</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Darrera pàgina</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Número de pàgina</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Inseriu aquí el text de l'URL</translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1179,6 @@
         <translation>Suprimeix la pàgina</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Suprimeix el document</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Esteu segur que voleu eliminar el document '%1'?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Buida la paperera</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Esteu segur que voleu buidar la paperera?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>S'està buidant la paperera</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>S'ha buidat la paperera</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Suprimeix la carpeta</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Esteu segur que voleu suprimir la carpeta '%1' i tot el seu contingut?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>No hi ha cap document seleccionat!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Obre un fitxer acceptat</translation>
     </message>
@@ -1161,6 +1246,14 @@
         <source>Untitled Documents</source>
         <translation>Documents sense títol</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1248,6 +1341,60 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>D'acord</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Reemplaça</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Cancel·la</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>El nom %1 ja s'està utilitzant.
+Si manteniu aquest nom es reemplaçarà el document.
+Si indiqueu un nom diferent es crearà un document nou.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Els meus documents</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Models</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Paperera</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Documents sense nom</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">S'està copiant la pàgina %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 pàgina copiada</numerusform>
+            <numerusform>%1 pàgines copiades</numerusform>
+            <numerusform>%1 pàgines copiades</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1267,6 +1414,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>No s'ha pogut baixar.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>el servidor remot ha refusat la connexió (el servidor no està acceptant peticions)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>el servidor remot ha tancat la connexió de manera prematura, abans que la resposta pogués ser rebuda i processada del tot</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>no s'ha trobat el nom del servidor remot (invalid hostname)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>la connexió al servidor remot ha caducat</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>l'operació ha estat cancel·lada mitjançant crides a les funcions avorta() o tanca() abans de finalitzar.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>la conformitat de connexió SSL/TLS ha fallat i no s'ha pogut establir el canal de comunicació encriptada. S'hauria d'haver emès el senyal sslErrors().</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>la connexió s'ha tallat degut a una desconnexió de la xarxa, però el sistema ha iniciat l'itinerari cap a un altre punt d'accés. La petició s'ha de tornar a enviar i serà processada tan aviat com es restableixi la connexió.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>la connexió amb el servidor intermediari ha estat refusada (el servidor intermediari no està acceptant peticions)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>el servidor intermediari ha tallat la connexió prematurament, abans que la resposta pogués ser rebuda i processada del tot</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>no s'ha trobat el nom del servidor intermediari (invalid proxy hostname)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>la connexió amb el servidor intermediari ha caducat, o el servidor no ha respost a temps a la petició enviada</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>el servidor intermediari requereix d'autenticació per tal d'acceptar la petició, però no ha acceptat cap de les  credencials que li heu presentat (si és que n'heu presentat alguna)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>l'accés al contingut remot ha estat denegat (semblant a l'error HTTP 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>l'operació sol·licitada al contingut remot no està permesa</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>el contingut remot no s'ha trobat al servidor (similar a l'error HTTP 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>el servidor remot requereix d'autenticació per tal d'acceptar la petició, però no ha acceptat cap de les  credencials que li heu presentat (si és que n'heu presentat alguna)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>la petició s'ha de tornar a enviar, però això no és possible (per exemple perquè les dades que s'havien d'enviar no es poden llegir per segona vegada).</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>el servei d'accés a la xarxa no pot acceptar la petició perquè el protocol és desconegut</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>l'operació sol·licitada és invàlida per a aquest protocol</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>s'ha detectat un error desconegut relacionat amb la xarxa</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>s'ha detectat un error desconegut relacionat amb el servidor intermediari</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>s'ha detectat un error desconegut relacionat amb el contingut remot</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>s'ha detectat un trencament en el protocol (error d'ànàlisi, respostes invàlides o inesperades, etc.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1335,6 +1581,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Ha fallat l'exportació...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Exporta com a fitxer UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>S'està exportant el document...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>L'exportació ha estat correcta.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>L'exportació ha fallat.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Exporta al format UBX del Sankoré</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1421,6 +1694,10 @@
         <source>Object informations</source>
         <translation>Informacions de l'objecte</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">Afegeix</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1503,6 +1780,14 @@
         <source>Trash</source>
         <translation>Paperera</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Adreces d'interès</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1536,6 +1821,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Visible a la pantalla estesa</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Afegeix una acció</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Elimina l'enllaç al so</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Elimina l'enllaç a la pàgina</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Elimina l'enllaç a l'adreça web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1551,6 +1852,22 @@
         <source>Go to Content Source</source>
         <translation>Ves a la font de contingut</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Afegeix una acció</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Elimina l'enllaç al so</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Elimina l'enllaç a la pàgina</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Elimina l'enllaç a l'adreça web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1571,13 +1888,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1638,7 +1948,14 @@
     </message>
 </context>
 <context>
-    <name>UBImportImage</name>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open Sankoré (conjunt de documents) (*.ubx)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
         <translation>Format d'imatge (</translation>
@@ -1852,6 +2169,142 @@ Voleu ignorar aquests errors per a aquest amfitrió?</translation>
         <source>Marker is pressure sensitive</source>
         <translation>El marcador és sensible a la pressió</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>Per defecte</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Àrab</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Búlgar</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Català</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Txec</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Danès</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Alemany</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Grec</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Anglès</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Anglès (UK)</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Espanyol</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francès</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Francès de Suïssa</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Italià</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Hebreu</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Japonès</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Coreà</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Malgaix</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Noruec</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Neerlandès</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Polonès</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Romanx</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Romanès</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Rus</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Eslovac</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Suec</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Turc</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Xinès</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Xinès simplificat</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Xinès tradicional</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1893,6 +2346,17 @@ Voleu ignorar aquests errors per a aquest amfitrió?</translation>
         <source>My Movies</source>
         <translation>Les meves pel·lícules</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Visible la propera vegada</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2101,20 +2565,16 @@ Voleu ignorar aquests errors per a aquest amfitrió?</translation>
         <source>Cache</source>
         <translation>Memòria cau</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation type="obsolete">Cartabó Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Pàgina sencera</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <source>Embed </source>
+        <translation>Incrustat </translation>
     </message>
 </context>
 <context>
@@ -2461,6 +2921,49 @@ Reinicieu l'aplicació per accedir als documents actualitzats.</translation
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Seleccioneu el contingut a capturar:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Nom de l'aplicació</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Restricció i renúncia a drets.</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Aquesta funcionalitat s'ha desenvolupat per funcionar a la majoria de pàgines web.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Si us plau, respecteu els drets d'autor quan creeu enllaços o captureu continguts de la web.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2538,7 +3041,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Restore credentials on reboot</source>
-        <translation type="unfinished"></translation>
+        <translation>Restableix les credencials en tornar a arrencar</translation>
     </message>
 </context>
 <context>
@@ -2736,22 +3239,10 @@ p, li { white-space: pre-wrap; }
         <translation>Llicències</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSL</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Xarxa</translation>
     </message>
@@ -2791,10 +3282,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Contrasenya:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="obsolete">Planète Sankoré ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Usuari:</translation>
@@ -2808,1135 +3295,62 @@ p, li { white-space: pre-wrap; }
         <translation>Open-Sankoré</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Crèdits</translation>
     </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Identificador del Planète Sankoré per al fitxer a exportar</translation>
+    </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Les llic&egrave;ncies es mostren en angl&egrave;s per respectar la traducci&oacute; legalment aprovada.</span></p></td></tr></table></body></html></translation>
+        <source>Restore credentials on reboot  </source>
+        <translation>Restableix les credencials quan tornis a engegar</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+        <source>Start up tips</source>
+        <translation>Consells a l'inici</translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré és programari lliure : podeu redistribuir-lo i/o modificar-lo sempre que respecteu els termes de la Lesser GNU general Public Licence (GNU LGPL) tal com ha estat publicada per la Free Software Foundation en la seva versió 2 o qualsevol versió més recent.<br />podeu consultar i descarregar el codi font del programari des de </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré es distribueix amb l'esperança de ser útil, però SENSE CAP GARANTIA, ni tan sols la garantia implícita de COMERCIALITZACIÖ o D'ADAPTACIÓ A UN OBJECTIU PARTICULAR.<br />Consulteu la llicència Lesser GNU General Public Licence situada a la pestanya Llicències o bé el lloc web </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contacte : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    <message>
+        <source>Show start up tips</source>
+        <translation>Mostra consells a l'inici</translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crèdits del tipus de lletra escolar Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">El tipus de lletra Andika Basic disposa d'una llicència Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Llicència OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Els tipus de lletra escolars que s'esmenten tot seguit són obra de Jean-Marie Douteau i disposen d'una llicència OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Els tipus de lletra escolars que s'esmenten tot seguit són obra de Jean-Marie Douteau i disposen d'una llicència Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Els tipus de lletra lligada són obra d'Antoine Fetet (antoine.fetet at laposte.net) a partir d'un tipus de lletra proposat per Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'autor m'autoritza l'ús en el marc del programari open-Sankoré, sempre que es tracti d'un ús no comercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Els tipus de lletra lligada (Ecole et CaseEcole) són obra d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Se n'autoritza l'ús no comercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">El tipus de lletra fonètica Alphonet és obra d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Se n'autoritza l'ús no comercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    <message>
+        <source>Language</source>
+        <translation>Idioma</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Seleccioneu un idioma</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>El nou idioma es carregarà quan reinicieu</translation>
     </message>
     <message utf8="true">
-        <source>Planète Sankoré ID for exporting file</source>
-        <translation type="unfinished"></translation>
+        <source>Close Open-Sankoré</source>
+        <translation>Tanca l'Open-Sankoré</translation>
     </message>
     <message>
-        <source>Restore credentials on reboot  </source>
-        <translation type="unfinished"></translation>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_co.ts b/Sankore-3.1/resources/i18n/sankore_co.ts
new file mode 100644
index 0000000..0d5e634
--- /dev/null
+++ b/Sankore-3.1/resources/i18n/sankore_co.ts
@@ -0,0 +1,3407 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>BlackoutWidget</name>
+    <message>
+        <source>Click to Return to Application</source>
+        <translation>Cliccà par vultà à l'appiicazione</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadDialog</name>
+    <message>
+        <source>Downloads</source>
+        <translation>Caricamenti</translation>
+    </message>
+    <message>
+        <source>Clean Up</source>
+        <translation>Nittà</translation>
+    </message>
+    <message>
+        <source>0 Items</source>
+        <translation>0 item</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadItem</name>
+    <message>
+        <source>Form</source>
+        <translation>Furmulariu</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Nome di schedariu</translation>
+    </message>
+    <message>
+        <source>Try Again</source>
+        <translation>Pruvà torna</translation>
+    </message>
+    <message>
+        <source>Stop</source>
+        <translation>Piantà</translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <translation>Apre</translation>
+    </message>
+</context>
+<context>
+    <name>IntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Publicà Podcast nantu à YouTube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Titulu</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Descrizzione</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Autore</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <source>Board</source>
+        <translation>Tavulone </translation>
+    </message>
+    <message>
+        <source>Stylus</source>
+        <translation>Stile </translation>
+    </message>
+    <message>
+        <source>Backgrounds</source>
+        <translation>Fondi </translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation>Annuli </translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation>Rifà</translation>
+    </message>
+    <message>
+        <source>Previous</source>
+        <translation>Nanzu</translation>
+    </message>
+    <message>
+        <source>PgUp</source>
+        <translation>Pagina alta</translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translation>Dopu
+</translation>
+    </message>
+    <message>
+        <source>PgDown</source>
+        <translation>Pagina bassa</translation>
+    </message>
+    <message>
+        <source>Documents</source>
+        <translation>Ducumenti </translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web </translation>
+    </message>
+    <message>
+        <source>Ctrl+T</source>
+        <translation>Ctrl+T </translation>
+    </message>
+    <message>
+        <source>Grid Light Background</source>
+        <translation>Quatratura nantu à fondu chjaru</translation>
+    </message>
+    <message>
+        <source>Grid Dark Background</source>
+        <translation>Quatratura nantu à fondu scuru</translation>
+    </message>
+    <message>
+        <source>Start Screen Recording</source>
+        <translation>Principià l'arregistramentu di u screnu </translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Segnu</translation>
+    </message>
+    <message>
+        <source>Selector</source>
+        <translation>Scigliadore</translation>
+    </message>
+    <message>
+        <source>Hand</source>
+        <translation>Manu </translation>
+    </message>
+    <message>
+        <source>Zoom In</source>
+        <translatorcomment>Avvicinera/Zoom +</translatorcomment>
+        <translation>Avvicinera </translation>
+    </message>
+    <message>
+        <source>Zoom Out</source>
+        <translation>Alluntanera/zoom - </translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation>Scrittu </translation>
+    </message>
+    <message>
+        <source>Capture</source>
+        <translation>Chjappà
+ </translation>
+    </message>
+    <message>
+        <source>Add To Current Page</source>
+        <translation>Aghjunghje à a pagina in via</translation>
+    </message>
+    <message>
+        <source>Add To New Page</source>
+        <translation>Aghjunghje à a pagina nova</translation>
+    </message>
+    <message>
+        <source>Add To Library</source>
+        <translation>Aghjunghje à a bibbiuteca </translation>
+    </message>
+    <message>
+        <source>Pages</source>
+        <translation>Pagine </translation>
+    </message>
+    <message>
+        <source>New Page</source>
+        <translation>Pagina nova </translation>
+    </message>
+    <message>
+        <source>Configure Podcast Recording</source>
+        <translation>Cunfigurà u podcast </translation>
+    </message>
+    <message>
+        <source>Web Trap</source>
+        <translation>Piglià Web </translation>
+    </message>
+    <message>
+        <source>Trap Web Content</source>
+        <translation>Piglià u cuntinutu Web </translation>
+    </message>
+    <message>
+        <source>Window Capture</source>
+        <translation>Chjappà a finestra</translation>
+    </message>
+    <message>
+        <source>Show on Display</source>
+        <translation>Mustrà à l'affissera</translation>
+    </message>
+    <message>
+        <source>Ctrl+D</source>
+        <translation>Ctrl+D </translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <translation>Ctrl+W </translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation>Linea diritta </translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation>Lascià </translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>Penna /stilò</translation>
+    </message>
+    <message>
+        <source>Eraser</source>
+        <translation>Squassaghjola </translation>
+    </message>
+    <message>
+        <source>Change Background</source>
+        <translation>Cambià u fon' di screnu</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Pagina nanzu</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Pagina dopu </translation>
+    </message>
+    <message>
+        <source>Manage Documents</source>
+        <translation>Gestisce i ducumenti</translation>
+    </message>
+    <message>
+        <source>Web Browsing</source>
+        <translation>Percorre u Web </translation>
+    </message>
+    <message>
+        <source>Small Line</source>
+        <translation>Linea fine</translation>
+    </message>
+    <message>
+        <source>Medium Line</source>
+        <translation>Linea media </translation>
+    </message>
+    <message>
+        <source>Large Line</source>
+        <translation>Linea larga </translation>
+    </message>
+    <message>
+        <source>Smalle Eraser</source>
+        <translation>Squassaghjola fine </translation>
+    </message>
+    <message>
+        <source>Medium Eraser</source>
+        <translation>Squassaghjola media </translation>
+    </message>
+    <message>
+        <source>Large Eraser</source>
+        <translation>Squassaghjola larga </translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translation>Culore </translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation>Nanzu </translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation>Manca </translation>
+    </message>
+    <message>
+        <source>Forward</source>
+        <translation>Dopu </translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation>Diritta </translation>
+    </message>
+    <message>
+        <source>Reload</source>
+        <translation>Ricaricà </translation>
+    </message>
+    <message>
+        <source>Reload Current Page</source>
+        <translation>Ricaricà a pagina in via</translation>
+    </message>
+    <message>
+        <source>Load Home Page</source>
+        <translation>Caricà a pagina d'accolta </translation>
+    </message>
+    <message>
+        <source>Show Bookmarks</source>
+        <translation>Affissà prascelti/preferiti</translation>
+    </message>
+    <message>
+        <source>Add Bookmark</source>
+        <translation>Aghjunghje prasceltu/preferitu</translation>
+    </message>
+    <message>
+        <source>Display Board</source>
+        <translation>Affissà u tavulone </translation>
+    </message>
+    <message>
+        <source>Ctrl+B</source>
+        <translation>Ctrl+B </translation>
+    </message>
+    <message>
+        <source>Erase</source>
+        <translation>Squassà </translation>
+    </message>
+    <message>
+        <source>Erase Content</source>
+        <translation>Squassà u cuntinutu </translation>
+    </message>
+    <message>
+        <source>Display Preferences</source>
+        <translation>Affissà e preferenze </translation>
+    </message>
+    <message>
+        <source>Show Library</source>
+        <translation>Affissà a bibbiuteca </translation>
+    </message>
+    <message>
+        <source>Show Computer Desktop</source>
+        <translation>Affissà u scagnu di l'ordinatore </translation>
+    </message>
+    <message>
+        <source>Create a New Folder</source>
+        <translation>Crià un cartulare novu </translation>
+    </message>
+    <message>
+        <source>Create a New Document</source>
+        <translation>Crià un ducumentu novu </translation>
+    </message>
+    <message>
+        <source>Import a Document</source>
+        <translation>Impurtà un ducumentu </translation>
+    </message>
+    <message>
+        <source>Export a Document</source>
+        <translation>Spurtà un ducumentu </translation>
+    </message>
+    <message>
+        <source>Open Page in Board</source>
+        <translation>Apre a pagina nantu à u tavulone </translation>
+    </message>
+    <message>
+        <source>Duplicate Selected Content</source>
+        <translation>Cupià u cuntinutu sceltu </translation>
+    </message>
+    <message>
+        <source>Delete Selected Content</source>
+        <translation>Squassà u cuntinutu sceltu </translation>
+    </message>
+    <message>
+        <source>Add Content to Document</source>
+        <translation>Aghjunghje u cuntinutu à u ducumentu </translation>
+    </message>
+    <message>
+        <source>Tutorial</source>
+        <translation>Tuturiali </translation>
+    </message>
+    <message>
+        <source>Show Desktop</source>
+        <translation>Affissà Scagnu </translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <translation>Ctrl+Maj+H </translation>
+    </message>
+    <message>
+        <source>Rename Content</source>
+        <translation>Dà un antru nome à u cuntinutu </translation>
+    </message>
+    <message>
+        <source>Display Tools</source>
+        <translation>Affissà l'attrazzi </translation>
+    </message>
+    <message>
+        <source>Use Document Wide Size (16/9)</source>
+        <translation>Aduprà un furmatu largu/una sesta larga (16/9)</translation>
+    </message>
+    <message>
+        <source>Use Document Regular Size (4/3)</source>
+        <translation>Aduprà un furmatu/una sesta nurmale (4/3)</translation>
+    </message>
+    <message>
+        <source>Use Custom Document Size</source>
+        <translation>Aduprà un furmatu/una sesta di ducumentu persunalizatu/persunalizata </translation>
+    </message>
+    <message>
+        <source>Stop Loading Web Page</source>
+        <translation>Arrestà/piantà u caricamentu di a pagina Web </translation>
+    </message>
+    <message>
+        <source>Put Presentation to Sleep</source>
+        <translation>Fà una arretta in a prisentazione</translation>
+    </message>
+    <message>
+        <source>Display Virtual Keyboard</source>
+        <translation>Affissà a tastera virtuale </translation>
+    </message>
+    <message>
+        <source>Record Presentation to Video</source>
+        <translation>Arrigistrà a prisentazione in video</translation>
+    </message>
+    <message>
+        <source>Erase Items</source>
+        <translation>Squassà l'item</translation>
+    </message>
+    <message>
+        <source>Erase All Items</source>
+        <translation>Squassà tutti l'item</translation>
+    </message>
+    <message>
+        <source>Erase Annotations</source>
+        <translation>Squassà l'annutazione</translation>
+    </message>
+    <message>
+        <source>Erase All Annotations</source>
+        <translation>Squassà tutte l'annutazione</translation>
+    </message>
+    <message>
+        <source>Clear Page</source>
+        <translation>Squassà a pagina </translation>
+    </message>
+    <message>
+        <source>Clear All Elements</source>
+        <translation>Squassà tutti l'elementi</translation>
+    </message>
+    <message>
+        <source>Annotate Document</source>
+        <translation>Annutà u ducumentu</translation>
+    </message>
+    <message>
+        <source>Ctrl+I</source>
+        <translation>Ctrl+I </translation>
+    </message>
+    <message>
+        <source>Erase Annotation</source>
+        <translation>Squassà l'annutazione</translation>
+    </message>
+    <message>
+        <source>Ctrl+E</source>
+        <translation>Ctrl+E </translation>
+    </message>
+    <message>
+        <source>Highlight </source>
+        <translation>Sopralineà</translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <translation>Ctrl+M </translation>
+    </message>
+    <message>
+        <source>Select And Modify Objects</source>
+        <translation>Sceglie è mudificà l'ogetti </translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <translation>Ctrl+F </translation>
+    </message>
+    <message>
+        <source>Scroll Page</source>
+        <translation>Sbucinà a pagina</translation>
+    </message>
+    <message>
+        <source>Laser Pointer</source>
+        <translation>Puntatore laser" </translation>
+    </message>
+    <message>
+        <source>Virtual Laser Pointer</source>
+        <translation>Puntatore laser virtuale</translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <translation>Ctrl+G</translation>
+    </message>
+    <message>
+        <source>Draw Lines</source>
+        <translation>Traccià una linea</translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <translation>Ctrl+J </translation>
+    </message>
+    <message>
+        <source>Write Text</source>
+        <translation>Scrive  </translation>
+    </message>
+    <message>
+        <source>Ctrl+K</source>
+        <translation>Ctrl+K </translation>
+    </message>
+    <message>
+        <source>Add Item To Current Page</source>
+        <translation>Aghjunghje l'item à a pagina in via</translation>
+    </message>
+    <message>
+        <source>Add Item To New Page</source>
+        <translation>Aghjunghje l'item à a pagina nova</translation>
+    </message>
+    <message>
+        <source>Add Item To Library</source>
+        <translation>Aghjunghje l'item à a bibbiuteca</translation>
+    </message>
+    <message>
+        <source>Create a New Page</source>
+        <translation>Crià una pagina nova </translation>
+    </message>
+    <message>
+        <source>Duplicate Page</source>
+        <translation>Cupià a pagina </translation>
+    </message>
+    <message>
+        <source>Duplicate the Current Page</source>
+        <translation>Cupià a pagina in via</translation>
+    </message>
+    <message>
+        <source>Import Page</source>
+        <translation>Impurtà a pagina </translation>
+    </message>
+    <message>
+        <source>Import an External Page</source>
+        <translation>Impurtà a pagina sterna </translation>
+    </message>
+    <message>
+        <source>Pause</source>
+        <translation>Arretta </translation>
+    </message>
+    <message>
+        <source>Pause Podcast Recording</source>
+        <translation>Fà una arretta in l'arrigistramentu di u podcast
+</translation>
+    </message>
+    <message>
+        <source>Podcast Config</source>
+        <translation>Cunfigurazione di u podcast</translation>
+    </message>
+    <message>
+        <source>Open the tutorial</source>
+        <translation>Apre i tuturiali</translation>
+    </message>
+    <message>
+        <source>Check Update</source>
+        <translation>Cuntrullà l' aghjurnera</translation>
+    </message>
+    <message>
+        <source>Ctrl+H</source>
+        <translation>Ctrl+H </translation>
+    </message>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Chjappà una parte di u screnu</translation>
+    </message>
+    <message>
+        <source>Custom Capture</source>
+        <translation>Chjappà persunalizatu</translation>
+    </message>
+    <message>
+        <source>Capture a Window</source>
+        <translation>Chjappà una finestra</translation>
+    </message>
+    <message>
+        <source>Show Main Screen on Display Screen</source>
+        <translation>Affissà u screnu principale nantu à u screnu d'afissera</translation>
+    </message>
+    <message>
+        <source>Erase all Annotations</source>
+        <translation>Squassà tutte l'annutazione</translation>
+    </message>
+    <message>
+        <source>eduMedia</source>
+        <translation>eduMedia</translation>
+    </message>
+    <message>
+        <source>Import eduMedia simulation</source>
+        <translation>Impurtà una simulazione eduMedia</translation>
+    </message>
+    <message>
+        <source>Del</source>
+        <translation>Squassà</translation>
+    </message>
+    <message>
+        <source>Add Selected Content to Open Document</source>
+        <translation>Aghjunghje u cuntinutu sceltu à u ducumentu apertu</translation>
+    </message>
+    <message>
+        <source>Stop Loading</source>
+        <translation>Piantà u caricamentu</translation>
+    </message>
+    <message>
+        <source>Sleep</source>
+        <translation>Vighjera</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Tastera virtuale </translation>
+    </message>
+    <message>
+        <source>Plain Light Background</source>
+        <translation>Fondu chjaru paru</translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translation>Chjaru</translation>
+    </message>
+    <message>
+        <source>Plain Dark Background</source>
+        <translation>Fondu scuru paru</translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translation>Scuru</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Podcast</translation>
+    </message>
+    <message>
+        <source>Record</source>
+        <translation>Arrigistrà</translation>
+    </message>
+    <message>
+        <source>Wide Size (16/9)</source>
+        <translation>Furmatu largu/Sesta larga (16/9)</translation>
+    </message>
+    <message>
+        <source>Regular Size (4/3)</source>
+        <translation>Furmatu nurmale/Sesta nurmale (4/3)</translation>
+    </message>
+    <message>
+        <source>Custom Size</source>
+        <translation>Furmatu persunalizatu/Sesta persunalizata</translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <translation>Ctrl+L</translation>
+    </message>
+    <message>
+        <source>Bigger</source>
+        <translation>Più maiò</translation>
+    </message>
+    <message>
+        <source>Ctrl++</source>
+        <translation>Ctrl++</translation>
+    </message>
+    <message>
+        <source>Smaller</source>
+        <translation>Più chjucu </translation>
+    </message>
+    <message>
+        <source>Ctrl+-</source>
+        <translation>Ctrl+-</translation>
+    </message>
+    <message>
+        <source>Open in Board</source>
+        <translation>Apre in u tavulone</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>Cut</source>
+        <translation>Taglià</translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation>Cupià</translation>
+    </message>
+    <message>
+        <source>Paste</source>
+        <translation>Appiccicà</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation>Attrazzi </translation>
+    </message>
+    <message>
+        <source>Multi Screen</source>
+        <translation>Multiscreni</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translation>Cartulare novu</translation>
+    </message>
+    <message>
+        <source>New Document</source>
+        <translation>Ducumentu novu</translation>
+    </message>
+    <message>
+        <source>Import</source>
+        <translation>Impurtà</translation>
+    </message>
+    <message>
+        <source>Export</source>
+        <translation>Spurtà</translation>
+    </message>
+    <message>
+        <source>Duplicate</source>
+        <translation>Cupià</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Squassà</translation>
+    </message>
+    <message>
+        <source>Add to Working Document</source>
+        <translation>Aghjunghje à u ducumentu</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translation>Aghjunghje
+</translation>
+    </message>
+    <message>
+        <source>Rename</source>
+        <translation>Dà un antru nome</translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <translation>Accolta</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Prascelti/Priferiti</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
+        <translation>Prasceltu/Preferitu</translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translation>Preferenze</translation>
+    </message>
+    <message>
+        <source>Library</source>
+        <translation>Bibbiuteca</translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <translation>Ctrl+Z</translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <translation>Ctrl+Y</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Apre-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Quit Open-Sankoré</source>
+        <translation>Lascià Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré Editor</source>
+        <translation>Apre Editore Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Show Open-Sankoré Widgets Editor</source>
+        <translation>Affissà l'editore di widget/appiichette Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré</source>
+        <translation>Piattà Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré Application</source>
+        <translation>Piattà l'appiicazione Open Sankoré</translation>
+    </message>
+    <message>
+        <source>Import Uniboard Documents</source>
+        <translation>Impurtà dcumenti Uniboard</translation>
+    </message>
+    <message>
+        <source>Import old Sankore or Uniboard documents</source>
+        <translation>Impurtà l'anziani ducumenti Sankorè o Uniboard</translation>
+    </message>
+    <message>
+        <source>Group items</source>
+        <translation>Aggruppà l'ogetti</translation>
+    </message>
+    <message>
+        <source>Play</source>
+        <translatorcomment>j'hésite avec Lancer (dépend du contexte d'usage)</translatorcomment>
+        <translation>Lancià </translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Interagisce cù l'item</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Squassà u fondu</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Caccià u fondu</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Aggruppà</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Caricà in a bibbiuteca</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Caricà in a pagina aperta</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Aghjunghje à a bibbiuteca</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Aghjunghje à a pagina aperta</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Prasceltu/Preferitu</translation>
+    </message>
+</context>
+<context>
+    <name>PasswordDialog</name>
+    <message>
+        <source>Authentication Required</source>
+        <translation>Autentificazione chersa
+</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Nome d'utilizatore</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Contrusegnu</translation>
+    </message>
+</context>
+<context>
+    <name>ProxyDialog</name>
+    <message>
+        <source>Proxy Authentication</source>
+        <translation>Autentificazione pè u proxy</translation>
+    </message>
+    <message>
+        <source>Connect to Proxy</source>
+        <translation>Cunnette si à u proxy  </translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Nome d'utilizatore</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Mot de passe :</translation>
+    </message>
+    <message>
+        <source>Save username and password for future use</source>
+        <translation>Arrighjistrà u nome d'utulizatore è u contrasegnu per a prossima volta</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Element ID = </source>
+        <translation>ID di l'elementu</translation>
+    </message>
+    <message>
+        <source>Content is not supported in destination format.</source>
+        <translation>U cuntinutu ùn si po apre in stu furmatu</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Squassà a pagina</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Vulete da veru squassà 1 pagina da u ducumentu sceltu %0 ?</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplication</name>
+    <message>
+        <source>Page Size</source>
+        <translation>Misura di a pagina</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Podcast</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplicationController</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+    <message>
+        <source>New update available, would you go to the web page ?</source>
+        <translation>Nuvella aghjurnera pussibule/dispunibule, vulete andà à a pagina web ?</translation>
+    </message>
+    <message>
+        <source>No update available</source>
+        <translation>Aghjurnera micca pussibule/dispunibule</translation>
+    </message>
+    <message>
+        <source>Update available</source>
+        <translation>Aghjurnera pussibule/dispunibule</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Aghjurnà</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardController</name>
+    <message>
+        <source>Downloading content %1 failed</source>
+        <translation>Sbagliu di caricamentu cù fiascu di 1%</translation>
+    </message>
+    <message>
+        <source>Download finished</source>
+        <translation>Caricamentu compiu</translation>
+    </message>
+    <message>
+        <source>Unknown tool type %1</source>
+        <translation>Tippu d'attrazzu scunnisciutu %1</translation>
+    </message>
+    <message>
+        <source>Add Item</source>
+        <translation>Aghjunghje un item</translation>
+    </message>
+    <message>
+        <source>All Supported (%1)</source>
+        <translation>Tutti accittati(%1)</translation>
+    </message>
+    <message>
+        <source>Unknown content type %1</source>
+        <translation>Tippu di cuntinutu scunnisciutu</translation>
+    </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Squassà a pagina %1 da u ducumentuSupprimer la page  du document</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Pagina %1 squassata</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Fiascu pè aghjunghje u schedariu : sbagliu cupiendu u schedariu</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Aggruppà</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Sgruppà</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardPaletteManager</name>
+    <message>
+        <source>Error Adding Image to Library</source>
+        <translation>Sbagliu per mette e maghjine in a bibbiuteca</translation>
+    </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>Image capturée</translation>
+    </message>
+</context>
+<context>
+    <name>UBCachePropertiesWidget</name>
+    <message>
+        <source>Cache Properties</source>
+        <translation>Prupietà di u cache/a tana</translation>
+    </message>
+    <message>
+        <source>Color:</source>
+        <translation>Culore :</translation>
+    </message>
+    <message>
+        <source>Shape:</source>
+        <translation>Forma :</translation>
+    </message>
+    <message>
+        <source>Alpha:</source>
+        <translation>Alfa</translation>
+    </message>
+    <message>
+        <source>Geometry:</source>
+        <translation>Geumetria</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Largezza</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Altezza</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Tene ste misure</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Modu</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Previsualizazione</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Chjode u cache/a tana</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation>Mette u cuntinutu</translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Un sò accettate e maghjine</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>I dati ùn si ponu affissà</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>U schedariu ùn hè ricunnusciutu da schedariu audio</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Lancià un schedariu audio</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Aghjunghje a leia à a pagina</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Aghjunghje a leia à una pagina Web</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Arrecà u schedariu audio da a bibbiuteca è mette lu in sta scatula</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Pagina dopu </translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Pagina nanzu</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Titulu di a pagina</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Ultima pagina</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Numeru di a pagina</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Inserì u scrittu url quì</translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Chjappà una parte di u screnu</translation>
+    </message>
+    <message>
+        <source>Capture the Screen</source>
+        <translation>Chjappà u screnu</translation>
+    </message>
+    <message>
+        <source>Show the stylus palette</source>
+        <translation>Affissà a paletta di u stilucciu</translation>
+    </message>
+    <message>
+        <source>Show Board on Secondary Screen</source>
+        <translation>Affissà u Tavulone nant'à u  screnu sicondariu</translation>
+    </message>
+    <message>
+        <source>Show Desktop on Secondary Screen</source>
+        <translation>Affissà u scagnu nat'à u screnu sicondariu</translation>
+    </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Affissà Open-Sankoré</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentController</name>
+    <message>
+        <source>Open Supported File</source>
+        <translation>Apre un schedariu accettatu</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translation>Cartulare novu</translation>
+    </message>
+    <message>
+        <source>Add Folder of Images</source>
+        <translation>Aghjunghje un cartulare di maghjine</translation>
+    </message>
+    <message>
+        <source>Add Images</source>
+        <translation>Aghjunghje e maghjine</translation>
+    </message>
+    <message>
+        <source>Add Pages from File</source>
+        <translation>Aghjunghje pagine à parte da un schedariu</translation>
+    </message>
+    <message>
+        <source>Duplicating Document %1</source>
+        <translation>In via pè cupià u ducumentu %1</translation>
+    </message>
+    <message>
+        <source>Document %1 copied</source>
+        <translation>Ducumentu %1 cupiatu</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Squassà a pagina</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Importu di u schedariu %1...</translation>
+    </message>
+    <message>
+        <source>Failed to import file ... </source>
+        <translation>Fiascu pè impurtà u schedariu ...</translation>
+    </message>
+    <message>
+        <source>Import all Images from Folder</source>
+        <translation>Impurtà tutte e maghjine da un cartulare</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Squassà</translation>
+    </message>
+    <message>
+        <source>Empty</source>
+        <translation>Viutà</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Biconzu</translation>
+    </message>
+    <message>
+        <source>Open Document</source>
+        <translation>Apre u ducumentu</translation>
+    </message>
+    <message>
+        <source>Add all Images to Document</source>
+        <translation>Aghjunghje tutte e maghjine à u ducumentu</translation>
+    </message>
+    <message>
+        <source>All Images (%1)</source>
+        <translation>Tutte e maghjine (%1)</translation>
+    </message>
+    <message>
+        <source>Selection does not contain any image files!</source>
+        <translation>Un ci hè nisun' schedariu di maghjina in sta scelta</translation>
+    </message>
+    <message>
+        <source>Page %1</source>
+        <translation>Pagina %1</translation>
+    </message>
+    <message>
+        <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
+        <translation>U ducumentu '%1' hè statu criatu cù una versione di Sankoré menu anziana (%2). Si vo l'aprite pudete perde l'infurmazione. Vulete cuntinuvà?</translation>
+    </message>
+    <message numerus="yes">
+        <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
+        <translation>
+            <numerusform>Vulete da veru squassà %n pagina(e) da stu ducumentu '%1'?</numerusform>
+            <numerusform>Voulez-vous vraiment effacer %n pages de ce document '%1'?</numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Pagina di titulu</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Un ci hè nisun' schedariu di maghjine in u cartulare</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Ducumenti senza tituli</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentManager</name>
+    <message>
+        <source>images</source>
+        <translation>maghjine
+</translation>
+    </message>
+    <message>
+        <source>videos</source>
+        <translation>video</translation>
+    </message>
+    <message>
+        <source>objects</source>
+        <translation>ogetti</translation>
+    </message>
+    <message>
+        <source>widgets</source>
+        <translation>widgets</translation>
+    </message>
+    <message>
+        <source>All supported files (*.%1)</source>
+        <translation>Tutti i schedarii so accittati(*.%1)</translation>
+    </message>
+    <message>
+        <source>File %1 saved</source>
+        <translation>Fichier %1 enregistré</translation>
+    </message>
+    <message>
+        <source>Inserting page %1 of %2</source>
+        <translation>Ajout de la page %1 sur %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Importation réussie.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Importation du document %1 réussie.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translatorcomment>j'ai raccourci la phrase pour eviter les soucis de place !</translatorcomment>
+        <translation>Importation de %1 en cours</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentNavigator</name>
+    <message>
+        <source>Page %0</source>
+        <translation>Pagina %0</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Pagina di titulu</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentPublisher</name>
+    <message>
+        <source>Export failed.</source>
+        <translation>Fiascu di u sportu.</translation>
+    </message>
+    <message>
+        <source>Export canceled ...</source>
+        <translation>Sportu annulitu...</translation>
+    </message>
+    <message>
+        <source>Converting page %1/%2 ...</source>
+        <translation>Cunversione di a pagina %1/%2 ...</translation>
+    </message>
+    <message>
+        <source>Credentials has to not been filled out yet.</source>
+        <translation>L'identificanti ùn sò ancu stati pichjati</translation>
+    </message>
+    <message>
+        <source>Uploading Sankore File on Web.</source>
+        <translation>Schedariu Open-Sankoré in via di trasferu versu Pianeta Sankoré/Planète-Sankoré.</translation>
+    </message>
+    <message>
+        <source>Document uploaded correctly on the web.</source>
+        <translation>Ducumentu Open-Sankoré trasferitu propiu bè nant'à Pianeta Sankoré/Planète-Sankoré.</translation>
+    </message>
+    <message>
+        <source>Failed to upload document on the web.</source>
+        <translation>Fiascu di u trasferu di u ducumentu versu Pianeta Sankoré/Planète-Sankoré.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Accittà</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Rimpiazzà</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Squassà</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Stu nome hè digià adupratu.
+U ducumentu serà rimpiazzatu s'ellu hè tenutu u listessu nome.
+Un nuvellu nome ferà un ducumentu novu.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>I mo ducumenti</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Mudelli</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Biconzu</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Ducumenti senza titulu</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Pagina in via di cupiera%1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 pagine cupiate</numerusform>
+            <numerusform>%1 pages copiées</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeWidget</name>
+    <message>
+        <source>%1 (copy)</source>
+        <translation>%1 (copia)</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation>Pagina in via di cupiera%1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation>
+            <numerusform>%1 pagine cupiate</numerusform>
+            <numerusform>%1 pages copiées</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Hè fiascatu u caricamentu</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>U servore distante hà ricusatu a cunnessione (u servore ùn accetta e dumande)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>U servore distante hà chjosu a cunnessione in avanza, nanzu ch'ella fussi ricevuta è tratta a risposta.</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>U nome di u servore distante ùn hè statu trovu (nome di servore micca validu)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>U tempu di cunnessione à u servore distante hè passatu</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>Hè stata annulita l'uperazione via e chjame pè piantà() o chjode () nanzu à a fine.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>hè fiascatu u neguziatu pè u SSL/TLS è ùn si pobbe stallà u canale crittatu. Ci vulia à lancià u signale di sbagliu() ssl </translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>Hè stata rotta a cunnessione per via di a scunnessione à a reta, ma u sistema hà iniziatu una ricerca pè un antru puntu d'accessu. Ci vole à rifà a dumanda da ch'ella sia trattata à quandu turnata a cunnessione.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>Hè stata ricusata a cunnessione à u servore proxy (u servore proxy ùn accetta e dumande)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>U servore proxy hà chjosu a cunnessione in avanza, nanzu ch'ella fussi ricevuta è tratta a risposta.</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>U nome di u servore proxy ùn hè statu trovu (u nome di u servore proxy ùn hè validu)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>U tempu di  cunnessione à u proxy hè passatu o u proxy ùn pobbe risponde à tempu à a dumanda</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>U proxy chere l'autentificazione da risponde à a dumanda ma hà ricusatu l'identificanti pruposti </translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>Hè statu ricusatu l'accessu à u cuntinutu distante (listessu à u sbagliu HTTP 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>Hè pruibita l'uperazione dumandata nant'à u cuntinutu distante.</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>U cuntinutu distante ùn hè statu trovu à u servore (listessu à u sbagliu HTTP 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>u servore distante chere l'autentificazione pè prisentà u cuntinutu ma l'identificanti dati funu ricusati</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>ci vulia à turnà à mandà a dumanda, ma hè fiascata per via  chi per un dettu u datu da caricamentu ùn si pobbe leghje una seconda volta.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>L'Accessu APi à a reta ùn pò risponda à a dumanda per via chì u prutucollu hè scunnusciutu.</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>l'uperazione chersa ùn hè valida pè stu prutucollu</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>Ci hè statu un sbagliu scunnusciutu in leia cù a reta</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>Ci hè statu un sbagliu scunnusciutu in leia cù u proxy</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>Ci hè statu un sbagliu scunnusciutu in leia cù u cuntinutu distante</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>Ci hè statu una rumpitura in u prutucollu (sbagliu in l'analisi sintassica, risposte false o inaspettate, ecc...)</translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadWidget</name>
+    <message>
+        <source>Downloading files</source>
+        <translation>In via di caricamentu di i schedarii</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Avvertimentu pè u sportu</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportCFF</name>
+    <message>
+        <source>Export to IWB</source>
+        <translation>Spurtà à u furmatut/a sesta CFF (*.iwb)</translation>
+    </message>
+    <message>
+        <source>Export as IWB File</source>
+        <translation>Spurtà à u furmatu CFF (*.iwb)</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Sportu di u ducumentu...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Sportu riesciutu.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Fiascu di u sportu.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocument</name>
+    <message>
+        <source>Export as UBZ File</source>
+        <translation>Spurtà à u furmatu UBZ (*.ubz)</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Sportu riesciutu.</translation>
+    </message>
+    <message>
+        <source>Page</source>
+        <translation>Pagina</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Sportu di u ducumentu...</translation>
+    </message>
+    <message>
+        <source>Exporting %1 %2 of %3</source>
+        <translation>Sportu %1 %2 sur %3</translation>
+    </message>
+    <message>
+        <source>Export to Sankore Format</source>
+        <translation>Spurtà à u furmatut Sankoré</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Fiascu di u sportu...
+</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Spurtà in tantu chì Schedariu UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Sportu di u ducumentu</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Sportu riesciutu.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Fiascu di u sportu.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Spurtà in u furmatu Sankore UBX</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportFullPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>Spurtà à u furmatut PDF (*.pdf)</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Sportu di u ducumentu...</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>Spurtà in PDF</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Sportu riesciutu.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>Spurtà à u furmatuPDF (*.pdf)</translation>
+    </message>
+    <message>
+        <source>Exporting page %1 of %2</source>
+        <translation>Sportu di a pagina %1 sur %2</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Sportu riesciutu.</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Sportu di u ducumentu</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>Spurtà in PDF (*.pdf)</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportWeb</name>
+    <message>
+        <source>Page</source>
+        <translation>Pagina</translation>
+    </message>
+    <message>
+        <source>Export as Web data</source>
+        <translation>Spurtà in tantu chè datu Web</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Sportu di u ducumentu</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Sportu riesciutu.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Fiascu di u sportu.</translation>
+    </message>
+    <message>
+        <source>Export to Web Browser</source>
+        <translation>Spurtà versu un navigatore web</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeatureProperties</name>
+    <message>
+        <source>Add to page</source>
+        <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
+        <translation>Aghjunghje à a pagina</translation>
+    </message>
+    <message>
+        <source>Set as background</source>
+        <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
+        <translation>Stallà cum'è fondu</translation>
+    </message>
+    <message>
+        <source>Add to library</source>
+        <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
+        <translation>Aghjunghje à a bibbiuteca</translation>
+    </message>
+    <message>
+        <source>Object informations</source>
+        <translation>Infurmazione nant'à l'ogettu</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">Aghjunghje
+</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesActionBar</name>
+    <message>
+        <source>Add to favorites</source>
+        <translation>Aghjunghje à i preferiti</translation>
+    </message>
+    <message>
+        <source>Share</source>
+        <translation>Sparte</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Ricercà</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Squassà</translation>
+    </message>
+    <message>
+        <source>Back to folder</source>
+        <translation>Vultà à u cartulare</translation>
+    </message>
+    <message>
+        <source>Remove from favorites</source>
+        <translation>Caccià da i prascelti/preferiti</translation>
+    </message>
+    <message>
+        <source>Create new folder</source>
+        <translation>Crià un nuvellu cartulare</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Turnà à anlizà u sistema di schedarii </translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesController</name>
+    <message>
+        <source>ImportedImage</source>
+        <translation>Maghjina impurtata</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Soni</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Filmi</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Maghjine</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animazione</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Interattività</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Appiicazione</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Forme</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Prascelti/Preferiti</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Ricerca Web</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Biconzu</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Prascelti/Priferiti</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Accittà</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulì</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Pichjà u nome di u nuvellu cartulare</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>In via di caricamentu </translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsGroupContainerItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>Chjosu</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Visibile nant'à u screnu stesu</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Aghjunghje una azzione</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Caccià a leia versu l'audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Caccià a leia versu a pagina</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Caccià a leia versu l'url web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>Chjosu</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Visibile nant'à u screnu stesu</translation>
+    </message>
+    <message>
+        <source>Go to Content Source</source>
+        <translation>Andà à a fonte di u cuntinutu</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Aghjunghje una azzione</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Caccià a leia versu l'audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Caccià a leia versu a pagina</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Caccià a leia versu l'url web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
+    <message>
+        <source><Type Text Here></source>
+        <translation>Pichjà u scrittu qui</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItemDelegate</name>
+    <message>
+        <source>Text Color</source>
+        <translation>Culore di u scrittu</translation>
+    </message>
+    <message>
+        <source>Editable</source>
+        <translation>Si pò mudificà</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>In via di caricamentu</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItemDelegate</name>
+    <message>
+        <source>Frozen</source>
+        <translation>Fermu</translation>
+    </message>
+    <message>
+        <source>Transform as Tool </source>
+        <translation>Transformer en outil</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportCFF</name>
+    <message>
+        <source>Common File Format (</source>
+        <translation>Furmatu di schedariu CFF (</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Schedariu in via di impurtera %1...</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>Fiascu di l'importu di u schedariu  %1.</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Importu riesciutu</translation>
+    </message>
+    <message>
+        <source>Import failed.</source>
+        <translation>Fiascu di l'mportu.</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocument</name>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Schedariu in via di impurtera %1...</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Importu riesciutu</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>Fiascu di l'importu di u schedariu  %1.</translation>
+    </message>
+    <message>
+        <source>Open-Sankore (*.ubz)</source>
+        <translation>Open-Sankoré (*.ubz)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Apre Sankore (assestu di i ducumenti) (*.ubx)/ Open-Sankore (assestu di i ducumenti) (*ubx)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
+    <message>
+        <source>Image Format (</source>
+        <translation>Furmatu di a maghjina (</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
+    <message>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation>Furmatu PDF (*.pdf)</translation>
+    </message>
+    <message>
+        <source>PDF import failed.</source>
+        <translation>Fiascu di l'importu di u PDF.</translation>
+    </message>
+    <message>
+        <source>Importing page %1 of %2</source>
+        <translation>Impurtera di a pagina %1 di %2</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
+    <message>
+        <source>Error while publishing video to intranet (%1)</source>
+        <translation>Sbagliu in a publichera di a video in intranet(%1)</translation>
+    </message>
+    <message>
+        <source>Publishing to Intranet in progress %1 %</source>
+        <translation>In via di publichera in Intranet %1 %</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish</source>
+        <translation>Publicà</translation>
+    </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
+    <message>
+        <source>Enter</source>
+        <translation>Entre </translation>
+    </message>
+</context>
+<context>
+    <name>UBMainWindow</name>
+    <message>
+        <source>Yes</source>
+        <translation>Iè</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>Nò</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Chjode</translation>
+    </message>
+</context>
+<context>
+    <name>UBNetworkAccessManager</name>
+    <message>
+        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <translation><qt>Entre u nome di l'utilizatore è u contrusegnu pè "%1" à %2</qt></translation>
+    </message>
+    <message>
+        <source>Failed to log to Proxy</source>
+        <translation>Identificazione à u proxy impussibule</translation>
+    </message>
+    <message>
+        <source>SSL Errors:
+
+%1
+
+%2
+
+Do you want to ignore these errors for this host?</source>
+        <translation>Sbaglii SSL 
+
+%1
+
+%2
+
+Vulete lascià corre sti sbaglii per stu servore ?</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Iè</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>Nò</translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translation>(copia)</translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translation>Ducumentu di u referenziale persu</translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Open Sankoré hà persu l'accessu à u ducumentu di u riferenziale. Per disgrazia l'appicazione s'hà da chjode da schisà a curruzzione di i dati. L'ultime mudifiche ponu esse perse dinò</translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation>Inglese</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Russiu</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Tedescu/Alimanu</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francese</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Francese di Sguizzera</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation>Fiascu di l'iniziu di l'incuditore     </translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation>Nisunu incuditore di podcast dispunibule..</translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation>Parte %1</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation>Nant'à u scagnu ...</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation>In u cartulare %1</translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation>Podcast creatu %1</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation>Sbagliu pè l'arrighjistramentu di u  podcast (%1)</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation>Entrata audio predefinita
+</translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation>Nisun arrighjistramentu audio</translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translation>Chjucu</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Mediu</translation>
+    </message>
+    <message>
+        <source>Full</source>
+        <translation>Cumplettu</translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translation>Publicà nant'à Intranet</translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translation>Publicà nant'à  Youtube</translation>
+    </message>
+    <message>
+        <source>Sankore Cast</source>
+        <translation>Sankoré Cast</translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translation>Stilucciu sensibile à a pressione
+</translation>
+    </message>
+    <message>
+        <source>version: </source>
+        <translation>versione: </translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation>Predefinita</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Arabu</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bùlgaru</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Catalanu</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>Corsu</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Ceccu</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Danese</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Tedescu/Alimanu</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Grecu</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Inglese</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Inglese RU</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Spagnolu</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francese</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Francese di Sguizzera</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Talianu</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>Hindi</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Ebreiu</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Giappunese</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Cureanu</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Malesianu</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Nurvegianu</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Ollandese</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Pulunese</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Rumanciu</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Rumenu</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Russiu</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Sluvaccu</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Svedese</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Turcu</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Chinese</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Chinese Simplificatu/Simplified</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Chinese tradiziunale/Traditional</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBProxyLoginDlg</name>
+    <message>
+        <source>Proxy Login</source>
+        <translation>Identificazione pè u Proxy</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Nome d'utulizatore:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Contrusegnu:</translation>
+    </message>
+</context>
+<context>
+    <name>UBPublicationDlg</name>
+    <message>
+        <source>Publish document on the web</source>
+        <translation>Publicà un ducumentu in ligna</translation>
+    </message>
+    <message>
+        <source>Title:</source>
+        <translation>Titulu :</translation>
+    </message>
+    <message>
+        <source>Description:</source>
+        <translation>Descrizzione :</translation>
+    </message>
+    <message>
+        <source>Publish</source>
+        <translation>Publicà</translation>
+    </message>
+</context>
+<context>
+    <name>UBSettings</name>
+    <message>
+        <source>My Movies</source>
+        <translation>I mo filmi</translation>
+    </message>
+    <message>
+        <source>/Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Visibile a prossima volta</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGActionWidget</name>
+    <message>
+        <source>Teacher</source>
+        <translation>Prufessore</translation>
+    </message>
+    <message>
+        <source>Student</source>
+        <translation>Studiente</translation>
+    </message>
+    <message>
+        <source>Type task here ...</source>
+        <translation>Scrive una faccenda quì...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGMediaWidget</name>
+    <message>
+        <source>drop media here ...</source>
+        <translation>Mette un mediu qui ...</translation>
+    </message>
+    <message>
+        <source>Type title here...</source>
+        <translation>Scrive u titulu quì...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGUrlWidget</name>
+    <message>
+        <source>Insert link title here...</source>
+        <translation>Entre u titulu di a leia...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherBarWidget</name>
+    <message>
+        <source></source>
+        <translatorcomment>cumentu in u cuntestu</translatorcomment>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuideEditionWidget</name>
+    <message>
+        <source>Type title here ...</source>
+        <translation>Scrive u titulu quì...</translation>
+    </message>
+    <message>
+        <source>Type comment here ...</source>
+        <translation>Scrive u cumentu quì</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Aghjunghje una azzione</translation>
+    </message>
+    <message>
+        <source>Add a media</source>
+        <translation>Aghjunghje un mediu</translation>
+    </message>
+    <message>
+        <source>Add a link</source>
+        <translation>Aghjunghje una leia web</translation>
+    </message>
+    <message>
+        <source>Page: %0</source>
+        <translation>Pagina: %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePageZeroWidget</name>
+    <message>
+        <source>Type session title here ...</source>
+        <translation>Scrive u titulu di a sessione
+</translation>
+    </message>
+    <message>
+        <source>Author(s)</source>
+        <translation>Autore (i)</translation>
+    </message>
+    <message>
+        <source>Type authors here ...</source>
+        <translation>Scrive l'autori quì
+</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Scopu(i)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Scrive i scopi quì...</translation>
+    </message>
+    <message>
+        <source>Resource indexing</source>
+        <translation>Indicizazione di a risorza</translation>
+    </message>
+    <message>
+        <source>Keywords:</source>
+        <translation>Parolle chjave</translation>
+    </message>
+    <message>
+        <source>Type keywords here ...</source>
+        <translation>Scrive e parolle chjave quì</translation>
+    </message>
+    <message>
+        <source>Level:</source>
+        <translation>Livellu</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Tema</translation>
+    </message>
+    <message>
+        <source>Type:</source>
+        <translation>Scrive</translation>
+    </message>
+    <message>
+        <source>Licence</source>
+        <translation>Licenza</translation>
+    </message>
+    <message>
+        <source>Attribution CC BY</source>
+        <translation>Attribuzione CC BY</translation>
+    </message>
+    <message>
+        <source>Attribution-NoDerivs CC BY-ND</source>
+        <translation>Attribuzione.Micca opare derivate CC BY-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-ShareAlike CC BY-SA</source>
+        <translation>Attribuzione-Sparte à paru CC BY-CA</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial CC BY-NC</source>
+        <translation>Attribuzione Nisun' adopru cumerciale di CC BY-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
+        <translation>Attribuzione Nisun' adopru cumerciale; Nisun'opara derivata di CC BY-NC-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
+        <translation>CC Attribuzione Nisun' adopru cumerciale-Sparte à paru di CC BY-NC-SA</translation>
+    </message>
+    <message>
+        <source>Public domain</source>
+        <translation>Duminiu publicu</translation>
+    </message>
+    <message>
+        <source>Copyright</source>
+        <translatorcomment>attention le copyright n'est pas une protection ou une licence puisque ca existe même pour les licences libres les plus ouvertes. C'est simplement la mention détenteur des droits de reproduction (celui qui fixe la licence) . Le terme est donc impropre même en anglais.</translatorcomment>
+        <translation>Diritti d'autore</translation>
+    </message>
+    <message>
+        <source>Created the:
+</source>
+        <translation>Creatu u:</translation>
+    </message>
+    <message>
+        <source>Updated the:
+</source>
+        <translation>Aghjurnatu u :</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Pagina di titulu</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePresentationWidget</name>
+    <message>
+        <source>Page: %0</source>
+        <translation>Pagina: %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBThumbnailAdaptor</name>
+    <message>
+        <source>Generating preview thumbnails ...</source>
+        <translation>In via di creazione di maghjinette da visualizà...</translation>
+    </message>
+    <message>
+        <source>%1 thumbnails generated ...</source>
+        <translation>%1 maghjinette fatte...</translation>
+    </message>
+</context>
+<context>
+    <name>UBToolsManager</name>
+    <message>
+        <source>Compass</source>
+        <translation>Cumpassu</translation>
+    </message>
+    <message>
+        <source>Ruler</source>
+        <translation>Riga</translation>
+    </message>
+    <message>
+        <source>Protractor</source>
+        <translation>Rapurtadore</translation>
+    </message>
+    <message>
+        <source>Mask</source>
+        <translation>Maschera</translation>
+    </message>
+    <message>
+        <source>Triangle</source>
+        <translation>Triangulu</translation>
+    </message>
+    <message>
+        <source>Magnifier</source>
+        <translation>Lente</translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translation>Cache/Tana</translation>
+    </message>
+</context>
+<context>
+    <name>UBTrapWebPageContentController</name>
+    <message>
+        <source>Whole page</source>
+        <translation>Pagina sana</translation>
+    </message>
+    <message>
+        <source>Embed </source>
+        <translation>Integratu</translation>
+    </message>
+</context>
+<context>
+    <name>UBUpdateDlg</name>
+    <message>
+        <source>Document updater</source>
+        <translation>Da attualizà u ducumentu</translation>
+    </message>
+    <message>
+        <source> files require an update.</source>
+        <translation>Bisognu ad aghjurnà i schedarii.</translation>
+    </message>
+    <message>
+        <source>Backup path: </source>
+        <translation>Salvera di sicurità: </translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>Percorre</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Aghjurnà</translation>
+    </message>
+    <message>
+        <source>Select a backup folder</source>
+        <translation>Sceglie un cartulare da u salvà</translation>
+    </message>
+    <message>
+        <source>Files update successful!
+Please reboot the application to access the updated documents.</source>
+        <translation>Aghjurnera di i schedarii riesciuta. Pè piacè turneti à lancià l'appicazione per ghjugne à i ducumenti aghjurnati</translation>
+    </message>
+    <message>
+        <source>An error occured during the update. The files have not been affected.</source>
+        <translation>Ci hè statu un sbagliu in l'aghjurnera. I schedarii sò salvi.</translation>
+    </message>
+    <message>
+        <source>Files update results</source>
+        <translation>Risultati di l'aghjurnera di i schedarii</translation>
+    </message>
+    <message>
+        <source>Updating file </source>
+        <translation>Aghjurnera di u schedariu</translation>
+    </message>
+    <message>
+        <source>Please wait the import process will start soon...</source>
+        <translation>Aspettate pè piacè, l'impurtera ùn hà da stà tantu à cumencià</translation>
+    </message>
+    <message>
+        <source>Remind me later</source>
+        <translation>Ramentà mi più tardi</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPluginWidget</name>
+    <message>
+        <source>Loading...</source>
+        <translation>Caricamentu...</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPublisher</name>
+    <message>
+        <source>Publish Document on Sankore Web</source>
+        <translation>Publicà un ducumentu in ligna nantu à Sankore </translation>
+    </message>
+</context>
+<context>
+    <name>UBWidgetUniboardAPI</name>
+    <message>
+        <source>%0 called (method=%1, status=%2)</source>
+        <translation>%0 chjamatu (metudu=%1, statutu=%2)</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublisher</name>
+    <message>
+        <source>YouTube authentication failed.</source>
+        <translation>Fiascu di l'identificazione YouTube.</translation>
+    </message>
+    <message>
+        <source>Error while uploading video to YouTube (%1)</source>
+        <translation>Sbagliu in u trasferu di a video versu YouTube (%1)</translation>
+    </message>
+    <message>
+        <source>Upload to YouTube in progress %1 %</source>
+        <translation>In via di trasferu versu YouTube %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublishingDialog</name>
+    <message>
+        <source>Upload</source>
+        <translation>Caricamentu</translation>
+    </message>
+    <message>
+        <source>Autos & Vehicles</source>
+        <translation>Vitture è altri veiculi</translation>
+    </message>
+    <message>
+        <source>Music</source>
+        <translation>Musica</translation>
+    </message>
+    <message>
+        <source>Pets & Animals</source>
+        <translation>Animali</translation>
+    </message>
+    <message>
+        <source>Sports</source>
+        <translation>Sporti</translation>
+    </message>
+    <message>
+        <source>Travel & Events</source>
+        <translation>Viaghji è evenimenti</translation>
+    </message>
+    <message>
+        <source>Gaming</source>
+        <translation>Ghjochi</translation>
+    </message>
+    <message>
+        <source>Comedy</source>
+        <translation>Comicu</translation>
+    </message>
+    <message>
+        <source>People & Blogs</source>
+        <translation>Persunalità è Blogghi</translation>
+    </message>
+    <message>
+        <source>News & Politics</source>
+        <translation>Attualità è Pulitica</translation>
+    </message>
+    <message>
+        <source>Entertainment</source>
+        <translation>Divertimentu</translation>
+    </message>
+    <message>
+        <source>Education</source>
+        <translation>Éducazione</translation>
+    </message>
+    <message>
+        <source>Howto & Style</source>
+        <translation>Praticu è Stili</translation>
+    </message>
+    <message>
+        <source>Nonprofits & Activism</source>
+        <translation>Associ di vulintarii è Militantisimu</translation>
+    </message>
+    <message>
+        <source>Science & Technology</source>
+        <translation>Scenze è tennulugie</translation>
+    </message>
+</context>
+<context>
+    <name>UBZoomPalette</name>
+    <message>
+        <source>%1 x</source>
+        <translation>%1 x</translation>
+    </message>
+</context>
+<context>
+    <name>UniboardSankoreTransition</name>
+    <message>
+        <source>Import old Uniboard/Sankore documents</source>
+        <translation>Impurtà ducumenti anziani da Uniboard o Sankoré  </translation>
+    </message>
+    <message>
+        <source>There are no documents that should be imported</source>
+        <translation>Ùn ci hè nisunu ducumentu da impurtà</translation>
+    </message>
+</context>
+<context>
+    <name>WBClearButton</name>
+    <message>
+        <source>Clear</source>
+        <translation>Squassà</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadItem</name>
+    <message>
+        <source>Save File</source>
+        <translation>Arrigistrà u schedariu</translation>
+    </message>
+    <message>
+        <source>Download canceled: %1</source>
+        <translation>Caricamentu annulitu : %1</translation>
+    </message>
+    <message>
+        <source>Error opening saved file: %1</source>
+        <translation>Sbagliu à l'apertura di u schedariu: %1</translation>
+    </message>
+    <message>
+        <source>Error saving: %1</source>
+        <translation>Sbagliu in a salvera : %1</translation>
+    </message>
+    <message>
+        <source>Network Error: %1</source>
+        <translation>Sbagliu di reta: %1</translation>
+    </message>
+    <message>
+        <source>seconds</source>
+        <translation>seconde</translation>
+    </message>
+    <message>
+        <source>minutes</source>
+        <translation>minuti</translation>
+    </message>
+    <message>
+        <source>- %4 %5 remaining</source>
+        <translation>Fermanu %4 %5 </translation>
+    </message>
+    <message>
+        <source>%1 of %2 (%3/sec) %4</source>
+        <translation>%1 de %2 (%3/sec) %4</translation>
+    </message>
+    <message>
+        <source>?</source>
+        <comment>unknown file size</comment>
+        <translatorcomment>si je me fie aux commentaires des développeurs...</translatorcomment>
+        <translation>Taille de fichier inconnue</translation>
+    </message>
+    <message>
+        <source>%1 of %2 - Stopped</source>
+        <translation>%1 de %2 -piantatu</translation>
+    </message>
+    <message>
+        <source>bytes</source>
+        <translation>ottetti</translation>
+    </message>
+    <message>
+        <source>KB</source>
+        <translation>CHo</translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translation>Mo</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadManager</name>
+    <message>
+        <source>1 Download</source>
+        <translation>1 caricamentu
+</translation>
+    </message>
+    <message>
+        <source>%1 Downloads</source>
+        <comment>always >= 2</comment>
+        <translation>%1 Caricamentu (i))</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryModel</name>
+    <message>
+        <source>Title</source>
+        <translation>Titulu</translation>
+    </message>
+    <message>
+        <source>Address</source>
+        <translation>Indirizzu</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryTreeModel</name>
+    <message>
+        <source>Earlier Today</source>
+        <translation>Più prestu Oghje</translation>
+    </message>
+    <message>
+        <source>%1 items</source>
+        <translation>%1 item</translation>
+    </message>
+</context>
+<context>
+    <name>WBSearchLineEdit</name>
+    <message>
+        <source>Search</source>
+        <translation>Ricerca</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabBar</name>
+    <message>
+        <source>New &Tab</source>
+        <translation>Nuvellu & Linguetta</translation>
+    </message>
+    <message>
+        <source>Clone Tab</source>
+        <translation>Ripruduce a linguetta</translation>
+    </message>
+    <message>
+        <source>&Close Tab</source>
+        <translation>&Chjode a linguetta</translation>
+    </message>
+    <message>
+        <source>Close &Other Tabs</source>
+        <translation>Chjode &altre linguette</translation>
+    </message>
+    <message>
+        <source>Reload Tab</source>
+        <translation>Ricaricà a linguetta</translation>
+    </message>
+    <message>
+        <source>Reload All Tabs</source>
+        <translation>Ricaricà tutte e linguette</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabWidget</name>
+    <message>
+        <source>Recently Closed Tabs</source>
+        <translation>Linguette chjose da pocu</translation>
+    </message>
+    <message>
+        <source>(Untitled)</source>
+        <translation>(Senza titulu)</translation>
+    </message>
+</context>
+<context>
+    <name>WBToolbarSearch</name>
+    <message>
+        <source>Search</source>
+        <translation>Ricerca</translation>
+    </message>
+    <message>
+        <source>No Recent Searches</source>
+        <translation>Nisuna ricerca da pocu</translation>
+    </message>
+    <message>
+        <source>Recent Searches</source>
+        <translation>Ricerche fatte da pocu</translation>
+    </message>
+    <message>
+        <source>Clear Recent Searches</source>
+        <translation>Squassà e ricerche fatte da pocu</translation>
+    </message>
+</context>
+<context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Sceglie u cuntinutu da chjappà</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Nome di l'appicazione</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Restrizzione è non rispunsabilità</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Sta caratteristica hè da viaghjà in e pagine più aduprate</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Pè piacè rispettate i dritti d'autori pè crià una leia o pè chjappà un cuntinutu da a tela.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>WBWebPage</name>
+    <message>
+        <source>Download</source>
+        <translation>Caricamentu</translation>
+    </message>
+    <message>
+        <source>Add to Current Document</source>
+        <translation>Aghjunghje à u ducumentu apertu</translation>
+    </message>
+    <message>
+        <source>PDF</source>
+        <translation>PDF</translation>
+    </message>
+    <message>
+        <source>Error loading page: %1</source>
+        <translation>Sbagliu in u caricamentu di a pagina : %1</translation>
+    </message>
+    <message>
+        <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
+        <translation>Caricamentu di u Ducumentu PDF: vulete caricà u schedariu PDF o aghjunghje lu à u ducumentu Sankoré apertu?</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebView</name>
+    <message>
+        <source>Open in New Tab</source>
+        <translation>Apre in una altra linguetta</translation>
+    </message>
+</context>
+<context>
+    <name>YouTubePublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Publicà u podcast nantu à YouTube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Titulu</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Descrizzione</translation>
+    </message>
+    <message>
+        <source>Keywords</source>
+        <translation>Parolle chjave</translation>
+    </message>
+    <message>
+        <source>Uniboard</source>
+        <translation>Uniboard</translation>
+    </message>
+    <message>
+        <source>Category</source>
+        <translation>Categuria</translation>
+    </message>
+    <message>
+        <source>YouTube Username</source>
+        <translation>Nome d'utilizatore YouTube</translation>
+    </message>
+    <message>
+        <source>YouTube Password</source>
+        <translation>Contrusegnu YouTube</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">En cliquant sur le bouton "Téléchargement", vous certifiez que vous respectez les conditions générales d'utilisation de YouTube </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>Risturà l'identificanti à u lancià</translation>
+    </message>
+</context>
+<context>
+    <name>brushProperties</name>
+    <message>
+        <source>Opacity</source>
+        <translation>Upacità</translation>
+    </message>
+    <message>
+        <source>On Light Background</source>
+        <translation>Nant'à fondu chjaru</translation>
+    </message>
+    <message>
+        <source>On Dark Background</source>
+        <translation>Nant'à fondu scuru</translation>
+    </message>
+    <message>
+        <source>Line Width</source>
+        <translation>Larghezza di a linea</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Mediu</translation>
+    </message>
+    <message>
+        <source>Strong</source>
+        <translation>Grossa</translation>
+    </message>
+    <message>
+        <source>Fine</source>
+        <translation>Fine</translation>
+    </message>
+    <message>
+        <source>Pen is Pressure Sensitive</source>
+        <translation>Stilò sensibile à a pressione
+</translation>
+    </message>
+</context>
+<context>
+    <name>capturePublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>Dialogu
+</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Titulu</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>Melu</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Autore</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Descrizzione</translation>
+    </message>
+</context>
+<context>
+    <name>documentPublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>Dialogu</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Titulu</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>Melu</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Autore</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Descrizzione</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable PDF Version</source>
+        <translation>Appiccià a versione PDF da caricà</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable Uniboard File (UBZ)</source>
+        <translation>Appiccià u schedariu Uniboard (UBZ)da caricà</translation>
+    </message>
+    <message>
+        <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
+        <translation>Attenti: ci hè una video in sti ducumenti; ùn si puderà affissà propiu bè nant'à u web</translation>
+    </message>
+</context>
+<context>
+    <name>documents</name>
+    <message>
+        <source>Uniboard Documents</source>
+        <translation>Ducumenti Uniboard
+</translation>
+    </message>
+</context>
+<context>
+    <name>preferencesDialog</name>
+    <message>
+        <source>Preferences</source>
+        <translation>Preferenze</translation>
+    </message>
+    <message>
+        <source>Default Settings</source>
+        <translation>Arrigulera predefinita
+</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Chjode</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translation>Affissà/Affissera</translation>
+    </message>
+    <message>
+        <source>Show Page with External Browser</source>
+        <translation>Affissà a pagina cù un navigatore sternu</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Tastera virtuale</translation>
+    </message>
+    <message>
+        <source>Keyboard button size:</source>
+        <translation>Misura di u buttonu di a tastera</translation>
+    </message>
+    <message>
+        <source>Positioned at the Top (recommended for tablets)</source>
+        <translation>Messa in sù (cunsigliatu pè e tavulette)</translation>
+    </message>
+    <message>
+        <source>Positioned at the Bottom (recommended for white boards)</source>
+        <translation>Messa in ghjò (cunsigliatu pè e tavuloni interattivi)</translation>
+    </message>
+    <message>
+        <source>Display Text Under Button</source>
+        <translation>Affissà i scritti sott'à u buttonu</translation>
+    </message>
+    <message>
+        <source>Software Update</source>
+        <translation>Aghjurnera di u lugiziale</translation>
+    </message>
+    <message>
+        <source>Check software update at launch</source>
+        <translation>Verificà l'aghjurnera di u lugiziale à u lancià</translation>
+    </message>
+    <message>
+        <source>Internet</source>
+        <translation>Internet</translation>
+    </message>
+    <message>
+        <source>Home Page:</source>
+        <translation>Pagina d'accolta :</translation>
+    </message>
+    <message utf8="true">
+        <source>version : …</source>
+        <translation>versione :...</translation>
+    </message>
+    <message>
+        <source>Toolbar</source>
+        <translation>Stanga d'attrazzi</translation>
+    </message>
+    <message>
+        <source>Stylus Palette</source>
+        <translation>Stanga di u stile</translation>
+    </message>
+    <message>
+        <source>Horizontal</source>
+        <translation>Urizontale</translation>
+    </message>
+    <message>
+        <source>Vertical</source>
+        <translation>Verticale</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>Stilò</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Segnu</translation>
+    </message>
+    <message>
+        <source>About</source>
+        <translation>In quant'à</translation>
+    </message>
+    <message>
+        <source>Licences</source>
+        <translation>Licenze</translation>
+    </message>
+    <message>
+        <source>zlib</source>
+        <translation>zlib</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <translation>Reta</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Apre-Sankoré</translation>
+    </message>
+    <message>
+        <source>Show internal web page content on secondary screen or projector</source>
+        <translation>Affissà u cuntinutu di a pagina web interna nant'à u screnu sicundariu o u prugettore</translation>
+    </message>
+    <message>
+        <source>Multi display</source>
+        <translation>Multi-affissera</translation>
+    </message>
+    <message>
+        <source>Swap control display and view display</source>
+        <translation>Inguerscià u screnu di cuntrollu è vede l'affissera I</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation>Modu</translation>
+    </message>
+    <message>
+        <source>Mode to start in:</source>
+        <translation>Modu da cumencià:</translation>
+    </message>
+    <message>
+        <source>Board</source>
+        <translation>Tavulone</translation>
+    </message>
+    <message>
+        <source>Desktop</source>
+        <translation>Scagnu</translation>
+    </message>
+    <message>
+        <source>Proxy User:</source>
+        <translation>Utilizatore di u Proxy :</translation>
+    </message>
+    <message>
+        <source>Pass:</source>
+        <translation>Contrusegnu :</translation>
+    </message>
+    <message>
+        <source>User:</source>
+        <translation>Utilizatore :</translation>
+    </message>
+    <message>
+        <source>Pass: </source>
+        <translation>Contrusegnu</translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translation>Crediti</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Identificante Planète Sankoré/Pianeta Sankoré pà spurtà u schedariu</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>Risturà l'identificanti à u lancià</translation>
+    </message>
+    <message>
+        <source>Start up tips</source>
+        <translation>Attrazzi da cumencià</translation>
+    </message>
+    <message>
+        <source>Show start up tips</source>
+        <translation>Affissà l'attrazzi da cumencià</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Lingua</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Sceglie una lingua</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>A nuvella lingua serà caricata à u prossimu lancià</translation>
+    </message>
+    <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Chjode Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>ApreSSl</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>trapFlashDialog</name>
+    <message>
+        <source>Trap flash</source>
+        <translation>Chjappà cuntinutu flash
+</translation>
+    </message>
+    <message>
+        <source>Select a flash to trap</source>
+        <translation>Sceglie un flash da chjappà</translation>
+    </message>
+    <message>
+        <source>about:blank</source>
+        <translation>in quant'à : viotu</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Nome di l'appicazione</translation>
+    </message>
+    <message>
+        <source>Create Application</source>
+        <translation>Creà una appicazione</translation>
+    </message>
+</context>
+</TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_cs.ts b/Sankore-3.1/resources/i18n/sankore_cs.ts
index df27f5a..be7eaf6 100644
--- a/Sankore-3.1/resources/i18n/sankore_cs.ts
+++ b/Sankore-3.1/resources/i18n/sankore_cs.ts
@@ -165,10 +165,6 @@
         <translation>Světlá</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Vložit obsah z webu</translation>
-    </message>
-    <message>
         <source>Pages</source>
         <translation>Stránky</translation>
     </message>
@@ -377,10 +373,6 @@
         <translation>Nová složka</translation>
     </message>
     <message>
-        <source>Trap Flash Content</source>
-        <translation>Přenést obsah ve Flashi</translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation>Otevřít</translation>
     </message>
@@ -466,6 +458,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Záložka</translation>
     </message>
     <message>
@@ -573,10 +566,6 @@
         <translation>V zobrazené části obrazovky zobrazit hlavní obrazovku</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Přenést Flash</translation>
-    </message>
-    <message>
         <source>Window Capture</source>
         <translation>Zachytit okno</translation>
     </message>
@@ -601,10 +590,6 @@
         <translation>Zobrazit editor widgetů Open-Sankoré</translation>
     </message>
     <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Zachytit část webové stránky</translation>
-    </message>
-    <message>
         <source>Write Text</source>
         <translation>Napsat text</translation>
     </message>
@@ -824,6 +809,43 @@
         <source>Group</source>
         <translation>Seskupit</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Stáhnout do</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">knihovny</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Stáhnout do knihovny</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Stáhnout do</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">aktuální stránky</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Stáhnout do aktuální stránky</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Přidat odkaz do</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">knihovny</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Přidat odkaz do knihovny</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Přidat odkaz na</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">aktuální stránku</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Přidat odkaz na aktuální stránku</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Záložka</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -867,7 +889,7 @@
     <name>QObject</name>
     <message>
         <source>Element ID = </source>
-        <translation type="unfinished">ID objektu = </translation>
+        <translation>ID objektu = </translation>
     </message>
     <message>
         <source>Content is not supported in destination format.</source>
@@ -977,14 +999,6 @@
 <context>
     <name>UBCachePropertiesWidget</name>
     <message>
-        <source>Close</source>
-        <translation>Zavřít</translation>
-    </message>
-    <message>
-        <source>Size:</source>
-        <translation>Velikost:</translation>
-    </message>
-    <message>
         <source>Color:</source>
         <translation>Barva:</translation>
     </message>
@@ -996,6 +1010,112 @@
         <source>Cache Properties</source>
         <translation>Vlastnosti baterky</translation>
     </message>
+    <message>
+        <source>Alpha:</source>
+        <translation>Průhlednost:</translation>
+    </message>
+    <message>
+        <source>Geometry:</source>
+        <translation>Geometrie:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Šířka:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Výška:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Zachovat proporce</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Mód:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Náhled:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Zavřít baterku</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><upustit obsah></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Obrázky nejsou akceptovány</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Není možné zobrazit data</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Upuštěný soubor nebyl rozpoznán jako zvukový soubor</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Přehrát zvukový soubor</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Přidat odkaz na stránku</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Přidat odkaz na webovou stránku</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Táhni a upusť zvukový soubor z knihovny do tohoto pole</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Další stránka</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Předchozí stránka</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Úvodní stránka</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Poslední stránka</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Číslo stránky</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Sem vložte url</translation>
+    </message>
 </context>
 <context>
     <name>UBDesktopPalette</name>
@@ -1035,22 +1155,10 @@
         <translation>Koš</translation>
     </message>
     <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Určitě chcete vyprázdnit koš?</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Určitě chcete odstranit složku "%1" a celý její obsah?</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Otevřít podporovaný soubor</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Odstranit dokument</translation>
-    </message>
-    <message>
         <source>All Images (%1)</source>
         <translation>Všechny obrázky (%1)</translation>
     </message>
@@ -1103,37 +1211,13 @@
         <translation>Soubor se nepodařilo otevřít...</translation>
     </message>
     <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Určitě chcete odstranit dokument "%1"?</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Koš byl vyprázdněn</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Vyprázdnit koš</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Odstranit složku</translation>
-    </message>
-    <message>
         <source>Remove Page</source>
         <translation>Odstranit stránku</translation>
     </message>
     <message>
-        <source>No document selected!</source>
-        <translation>Nevybrali jste žádný dokument!</translation>
-    </message>
-    <message>
         <source>Import all Images from Folder</source>
         <translation>Nahrát všechny obrázky ze složky</translation>
     </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Vyprazdňuje se koš</translation>
-    </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
         <translation>
@@ -1162,6 +1246,14 @@
         <source>Untitled Documents</source>
         <translation>Dokumenty bez názvu</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1249,6 +1341,60 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Přijmout</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Nahradit</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Název %1 již existuje.
+Použitím tohoto názvu bude nahrazen dokument.
+Poskytnutí nového názvu vytvoří nový dokument.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Moje dokumenty</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Příklady</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Koš</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Dokumenty bez názvu</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Kopíruje se stránka %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 zkopírovaná stránka</numerusform>
+            <numerusform>%1 zkopírované stránky</numerusform>
+            <numerusform>%1 zkopírovaných stránek</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message numerus="yes">
         <source>%1 pages copied</source>
@@ -1268,6 +1414,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Stahování se nezdařilo.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>vzdálený server odmítnul připojení (server odmítá požadavky)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>vzdálený server předčasně ukončil spojení, předtím než odpověď byla přijata a zpracována</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>jméno vzdáleného počítače nebylo nalezeno (neplatný hostname)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>připojení ke vzdálenému serveru vypršelo</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>operace byla přerušena zavoláním přerušit() nebo zavřít() předtím, než byla ukončena.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>Ustavení SSL/TLS spojení selhalo a šifrovaná komunikace nebyla založena. Měl by být vysílán signál sslErrors().</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>připojení se přerušilo - došlo k odpojení od sítě.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>spojení s proxy serverem bylo odmítnuto</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>proxy sever ukončil spojení</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>jméno proxy serveru nebylo nalezeno (neplatný proxy hostname)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>připojení k proxy serveru vypršelo</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>proxy server vyžaduje přihlašovací údaje</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>přístup ke vzdálenému obsahu byl odepřen (stejně jako HTTP chyba 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>operace požadovaná po vzdáleném obsahu není povolena</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>vzdálený obsah nebyl na serveru nalezen (stejně jako HTTP chyba 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>vzdálený server vyžaduje přihlašovací údaje</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>požadavek je nutné poslat znovu.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>požadavek nemůže být proveden, protokol je neznámý</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>požadovaná operace pro tento protokol je neplatná</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>byla detekována neznámá chyba sítě</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>byla detekována neznámá chyba proxy serveru</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>byla detekována neznámá chyba vzdáleného obsahu</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>byla detekována chyba v protokolu</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1336,6 +1581,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Soubor se nepodařilo exportovat...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Exportovat jako soubor UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Exportuje se dokument...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Export byl úspěšně dokončen.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Export se nezdařil.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Exportovat do formátu Sankoré UBX</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1422,6 +1694,10 @@
         <source>Object informations</source>
         <translation>Informace o objektu</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">Přidat</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1504,6 +1780,14 @@
         <source>Trash</source>
         <translation>Koš</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Záložky</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1537,6 +1821,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Viditelné na rozšířené obrazovce</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Přidat akci</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Odstranit odkaz na zvuk</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Odstranit odkaz na stránku</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Odstranit odkaz na web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1552,6 +1852,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Viditelné na rozšířené obrazovce</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Přidat akci</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Odstranit odkaz na zvuk</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Odstranit odkaz na stránku</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Odstranit odkaz na web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1572,13 +1888,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1639,6 +1948,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (soubor dokumentů) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1853,6 +2169,142 @@ Chcete ignorovat tyto chyby na tomto serveru?</translation>
         <source>Marker is pressure sensitive</source>
         <translation>Zvýrazňovač je citlivý na tlak</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>Výchozí</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Arabština</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bulharština</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Katalánština</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Čeština</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Dánština</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Němčina</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Řečtina</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Angličtina</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Angličtina UK</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Španělština</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francouzština</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Švýcarská francouzština</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Italština</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Hebrejština</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Japonština</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Korejština</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Madagaskarština</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Norština</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Holandština</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Polština</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Rétorománština</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Rumunština</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Ruština</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Slovenština</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Švédština</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Turečtina</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Čínština</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Zjednodušená čínština</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Tradiční čínština</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1894,6 +2346,17 @@ Chcete ignorovat tyto chyby na tomto serveru?</translation>
         <source>My Movies</source>
         <translation>Moje filmy</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Zobrazit při spuštění</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2107,21 +2570,17 @@ Chcete ignorovat tyto chyby na tomto serveru?</translation>
         <source>Magnifier</source>
         <translation>Lupa</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation type="obsolete">Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Celá stránka</translation>
     </message>
+    <message>
+        <source>Embed </source>
+        <translation>Vnořit </translation>
+    </message>
 </context>
 <context>
     <name>UBUpdateDlg</name>
@@ -2467,6 +2926,50 @@ Znovu spusťte aplikaci, abyste mohli pracovat s aktualizovanými dokumenty.</tr
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Vyberte obsah, který chcete přenést:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Název aplikace</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Omezení a vyloučení odpovědnosti. </translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translatorcomment>Tato funkce byla vyvíjena, aby fungovala na většině běžných webových stránkách.</translatorcomment>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Při vytváření odkazů či přenášení obsahu z webu, respektujte, prosím, autorská práva.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>PDF</source>
@@ -2544,7 +3047,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Restore credentials on reboot</source>
-        <translation type="unfinished"></translation>
+        <translation>Po restartu obnovit přihlašovací údaje</translation>
     </message>
 </context>
 <context>
@@ -2654,10 +3157,6 @@ p, li { white-space: pre-wrap; }
         <translation>Pero</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
@@ -2702,10 +3201,6 @@ p, li { white-space: pre-wrap; }
         <translation>Zvýrazňovač</translation>
     </message>
     <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Internet</source>
         <translation>Internet</translation>
     </message>
@@ -2714,10 +3209,6 @@ p, li { white-space: pre-wrap; }
         <translation>Je umístěný na vrchu (doporučeno pro tablety)</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>Virtual Keyboard</source>
         <translation>Virtuální klávesnice</translation>
     </message>
@@ -2801,10 +3292,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Heslo:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="obsolete">Planète Sankoré ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Uživatel:</translation>
@@ -2814,542 +3301,62 @@ p, li { white-space: pre-wrap; }
         <translation>Heslo:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Zásluhy</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID for exporting file</source>
-        <translation type="unfinished"></translation>
+        <translation>Planète Sankoré ID pro exportovaný soubor</translation>
     </message>
     <message>
         <source>Restore credentials on reboot  </source>
-        <translation type="unfinished"></translation>
+        <translation>Po restartu obnovit přihlašovací údaje </translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Start up tips</source>
+        <translation>Tipy při spuštění</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Show start up tips</source>
+        <translation>Zobrazovat tipy při spuštění</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Jazyk</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Vybrat jazyk</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Nový jazyk se nahraje po restartu aplikace</translation>
     </message>
     <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Zavřít Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_da.ts b/Sankore-3.1/resources/i18n/sankore_da.ts
index b0af95f..8a1396f 100644
--- a/Sankore-3.1/resources/i18n/sankore_da.ts
+++ b/Sankore-3.1/resources/i18n/sankore_da.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Bogmærke</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>Konfigurer podcast-optagelse</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Flash Trap</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Opsaml Flash-indhold</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Web Trap</translation>
     </message>
@@ -728,14 +721,6 @@
         <translation>Klip en del af vinduet</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Indlejring af web-indhold</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Klip web-indhold som kan indlejres</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>Vis på displayet</translation>
     </message>
@@ -824,6 +809,43 @@
         <source>Group</source>
         <translation>Gruppér</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download til</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">bibliotek</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Download til bibliotek</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation>Schweiz</translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Download til aktuel side</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tilføj link til</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">bibliotek</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Tilføj link til bibliotek</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">tilføj link til</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">aktuel side</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Tilføj link til aktuel side</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Bogmærke</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -989,12 +1011,110 @@
         <translation>Form:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Størrelse:</translation>
+        <source>Alpha:</source>
+        <translation>Alfa</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Luk</translation>
+        <source>Geometry:</source>
+        <translation>Geometri</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Bredde: </translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Højde:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Overhold proportioner</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Tilstand:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Forhåndsvisning:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Luk cache</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><drop indhold></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Billeder accepteres ikke</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Kan ikke vise data</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Sluppet fil genkendes ikke som en lydfil</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Afspil en lydfil</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Tilføj link til side</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Tilføj link til en hjemmeside</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>træk og slip lydfilen fra biblioteket til denne boks</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Næste side</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Forrige side</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Titelside</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Sidste side</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Sidetal</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Indsæt url-tekst her</translation>
     </message>
 </context>
 <context>
@@ -1059,42 +1179,6 @@
         <translation>Fjern side</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Fjern dokument</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Er du sikker på, at du ønsker at fjerne dokumentet '%1'?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Tøm papirkurv</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Er du sikker på, at du ønsker at tømme papirkurven?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Tømmer papirkurv</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Tømt papirkurv</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Fjern mappe</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Er du sikker på, at du ønsker at fjerne mappen ' %1' og hele dens indhold?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Der er ikke valgt noget dokument!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Åbn understøttet fil</translation>
     </message>
@@ -1161,6 +1245,14 @@
         <source>Untitled Documents</source>
         <translation>Unavngivne dokumenter</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>Denne handling kan ikke fortrydes!</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1248,6 +1340,59 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Accepter</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Erstat</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annuller</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Navnet %1 er allerede i brug.
+Hvis du beholder dette navn, vil dokumentet blive erstattet.
+Hvis du angiver et nyt navn, vil der blive oprettet et nyt dokument.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Mine dokumenter</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Modeller</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Papirkurv</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Ikke navngivne dokumenter</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Kopierer side %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 side kopieret</numerusform>
+            <numerusform>%1 sider kopieret</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1266,6 +1411,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Download mislykkedes.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>fjernserveren afviste forbindelsen (serveren accepterer ikke forespørgsler)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>fjernserveren afbrød forbindelsen for tidligt, før hele svaret blev modtaget og behandlet</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>fjernværtsnavnet blev ikke fundet (ugyldig t værtsnavn)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>timeout i forbindelsen til fjernserveren</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>handlingen blev afbrudt via opkadt for at afbryde() eller lukke(), før den var færdig.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>SSL/TLS-håndtryk mislykkedes, og den krypterede kanal kunne ikke oprettes. sslErrors()-signalet skulle have været udsendt.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>forbindelsen blev brudt på grund af frakobling fra netværket, men systemet har indledt roaming til et andet adgangspunkt. Forespørgslen skal foretages igen og vil blive behandlet, så snart forbindelsen er genoprettet.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>forbindelsen til proxyserveren blev nægtet (proxyserveren accepterer ikke forespørgsler)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>proxyserveren afbrød forbindelsen for tidligt, før hele svaret blev modtaget og behandlet</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>proxyværtsnavnet blev ikke fundet (ugyldigt proxyværtsnavn)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>timeout i forbindelsen til proxy eller proxyen har ikke svaret på den sendte forespørgsel  i tide</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>proxyen kræver godkendelse for at imødekomme forespørgslen, men har ikke accepteret nogen af de tilbudte legitimationsoplysninge (hvis de forefindes)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>adgang til eksternt indhold  nægtet (svarende til HTTP-fejl 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>handlingen, som blev forespurgt på fjernindholdet, er ikke tilladt</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>fjernindholdet blev ikke fundet på serveren (svarende til HTTP-fejl 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>fjernserveren kræver godkendelse til at behandle indholdet, men de medfølgende legitimationsoplysninger blev ikke accepteret (hvis de forefindes)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>forespørgslen skulle sendes igen, men dette mislykkedes, for eksempel fordi de uploadede data ikke kunne læses anden gang.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>Network Access API kan ikke imødekomme forespørgslen, fordi protokollen er ukendt</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>den ønskede handling er ugyldig for denne protokol</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>der blev fundet en ukendt netværksrelateret fejl</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>der blev fundet en ukendt proxyrelateret fejl</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>der blev påvist en ukendt fejl relateret til fjernindhold</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>der blev påvist et nedbrud i protokollen (parsingfejl, ugyldige eller uventede svar, osv.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1334,6 +1578,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Eksport mislykkedes...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Exporter som UBX-fil</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Eksporterer dokument...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Eksport gennemført.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Eksport mislykkedes.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Exporter til Sankore UBX-format</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1420,6 +1691,10 @@
         <source>Object informations</source>
         <translation>Objektinformationer</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation>Tilføj</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1502,6 +1777,14 @@
         <source>Trash</source>
         <translation>Papirkurv</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Bogmærker</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1535,6 +1818,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Synlig på udvidet skærm</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Tilføj en handling</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Fjern link til lydfil</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Fjern link til side</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Fjern link til web-url</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1550,6 +1849,22 @@
         <source>Go to Content Source</source>
         <translation>GÃ¥ til indholdskilde</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Tilføj en handling</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Fjern link til lydfil</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Fjern link til side</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Fjern link til web-url</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1570,13 +1885,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1637,6 +1945,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (sæt af dokumenter) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1851,7 +2166,143 @@ Do you want to ignore these errors for this host?</source>
         <source>Marker is pressure sensitive</source>
         <translation>Markøren er tryksensitiv</translation>
     </message>
-</context>
+    <message>
+        <source>Default</source>
+        <translation>Default</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Arabisk</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bulgarsk</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Katalansk</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Tjekkisk</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Dansk</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Tysk</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Græsk</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Engelsk</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Engelsk UK</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Spansk</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Fransk</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Schweizisk fransk</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Italiensk</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Hebræisk</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Japansk</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Koreansk</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Madagaskisk</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Norsk</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Hollandsk</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Polsk</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Rætoromansk</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Rumænsk</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Russisk</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Slovakisk</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Svensk</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Tyrkisk</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Kinesisk</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Kinesisk, forenklet</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Kinesisk, traditionelt</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>Korsikansk</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>Hindi</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>UBProxyLoginDlg</name>
     <message>
@@ -1892,6 +2343,17 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation>Mine Film</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Synligst næste gang</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2111,20 +2573,16 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>Cache</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation>Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Hel side</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <source>Embed </source>
+        <translation>Indlejr</translation>
     </message>
 </context>
 <context>
@@ -2471,6 +2929,53 @@ Genstart venligst applikationen for at få adgang til de opdaterede dokumenter.<
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Vælg indhold til fælde:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Navn på applikation</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Begrænsninger og ansvarsfraskrivelse.</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Denne funktion er udviklet til at fungere på de mest almindelige websider.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Vær venlig at respektere ophavsrettighederne, når du laver links eller henter indhold fra internettet.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>Download til
+bibliotek</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>Download til
+aktuel side</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>Tilføj link til
+bibliotek</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>Tilføj link til
+aktuel side</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2542,6 +3047,10 @@ p, li { white-space: pre-wrap; }
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
         <translation></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>Gendan legitimationsoplysninger på reboot</translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2738,22 +3247,10 @@ p, li { white-space: pre-wrap; }
         <translation>Licenser</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSI</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Netværk</translation>
     </message>
@@ -2797,10 +3294,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Adgangskode:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation>Planet Sankoré-ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Bruger:</translation>
@@ -2810,1042 +3303,70 @@ p, li { white-space: pre-wrap; }
         <translation>Adgangskode:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Anerkendelse</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></translation>
+        <source>Start up tips</source>
+        <translation>Tips til opstart</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+        <source>Show start up tips</source>
+        <translation>Vis tips til opstart</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Sprog</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Vælg et sprog</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Det nye sprog vil blive indlæst ved næste genstart</translation>
     </message>
     <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Luk Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Planète Sankoré ID til at eksportere fil</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>Gendan legitimationsoplysninger på reboot</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Licenserne er på engelsk for at overholde den officielle og juridisk godkendte oversættelse.</span></p></td></tr></table></body></html></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_de.ts b/Sankore-3.1/resources/i18n/sankore_de.ts
index 2afb6cc..8806207 100644
--- a/Sankore-3.1/resources/i18n/sankore_de.ts
+++ b/Sankore-3.1/resources/i18n/sankore_de.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Lesezeichen</translation>
     </message>
     <message>
@@ -700,20 +701,12 @@
         <translation>Podcast-Aufnahme konfigurieren</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Falle einblenden</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Eingeblendeten Inhalt einfangen</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
-        <translation>Webfalle</translation>
+        <translation>Web einschließen</translation>
     </message>
     <message>
         <source>Trap Web Content</source>
-        <translation>Webinhalt einfangen</translation>
+        <translation>Webinhalt einschließen</translation>
     </message>
     <message>
         <source>Custom Capture</source>
@@ -728,14 +721,6 @@
         <translation>Fenster erfassen</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Web-Inhalt einbinden</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Integrierbaren Webinhalt erfassen</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>Auf dem Bildschirm anzeigen</translation>
     </message>
@@ -821,7 +806,44 @@
     </message>
     <message>
         <source>Group</source>
-        <translation type="unfinished">Gruppieren</translation>
+        <translation>Gruppieren</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download in</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Bibliothek</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Download in Bibliothek</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download in</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">aktuelle Seite</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Download in aktuelle Seite</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Link hinzufügen zur</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Bibliothek</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Link zur Bibliothek hinzufügen</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Link hinzufügen zu</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">aktueller Seite</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Link zu aktueller Seite hinzufügen</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Lesezeichen</translation>
     </message>
 </context>
 <context>
@@ -866,19 +888,19 @@
     <name>QObject</name>
     <message>
         <source>Element ID = </source>
-        <translation type="unfinished">Element ID = </translation>
+        <translation>Element ID = </translation>
     </message>
     <message>
         <source>Content is not supported in destination format.</source>
-        <translation type="unfinished">Inhalt wird im Zielformat nicht unterstützt.</translation>
+        <translation>Inhalt wird im Zielformat nicht unterstützt.</translation>
     </message>
     <message>
         <source>Remove Page</source>
-        <translation type="unfinished">Seite entfernen</translation>
+        <translation>Seite entfernen</translation>
     </message>
     <message>
         <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
-        <translation type="unfinished">Wollen Sie wirklich 1 Seite des gewählten Dokuments '%0' entfernen?</translation>
+        <translation>Wollen Sie wirklich 1 Seite des gewählten Dokuments '%0' entfernen?</translation>
     </message>
 </context>
 <context>
@@ -943,23 +965,23 @@
     </message>
     <message>
         <source>Delete page %1 from document</source>
-        <translation type="unfinished">Seite %1 des Dokuments löschen</translation>
+        <translation>Seite %1 des Dokuments löschen</translation>
     </message>
     <message>
         <source>Page %1 deleted</source>
-        <translation type="unfinished">Seite %1 gelöscht</translation>
+        <translation>Seite %1 gelöscht</translation>
     </message>
     <message>
         <source>Add file operation failed: file copying error</source>
-        <translation type="unfinished">Dokument hinzufügen fehlgeschlagen: Fehler beim Kopieren</translation>
+        <translation>Dokument hinzufügen fehlgeschlagen: Fehler beim Kopieren</translation>
     </message>
     <message>
         <source>Group</source>
-        <translation type="unfinished">Gruppieren</translation>
+        <translation>Gruppieren</translation>
     </message>
     <message>
         <source>Ungroup</source>
-        <translation type="unfinished">Gruppierung auflösen</translation>
+        <translation>Gruppierung auflösen</translation>
     </message>
 </context>
 <context>
@@ -988,12 +1010,110 @@
         <translation>Form:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Größe:</translation>
+        <source>Alpha:</source>
+        <translation>Alpha:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Schließen</translation>
+        <source>Geometry:</source>
+        <translation>Geometrie:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Breite:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Höhe:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Proportionen erhalten</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Modus:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Vorschau:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Cache schließen</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><ablegen Inhalt></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Bilder werden nicht akzeptiert</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Daten können nicht angezeigt werden</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Abgelegtes File wird nicht als Audiofile erkannt</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Ein Audiofile abspielen</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Link zur Seite hinzufügen</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Link zu einer Webseite hinzufügen</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Audiofile aus der Bibliothek ziehen und in dieser Box ablegen</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Nächste Seite</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Vorherige Seite</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Titelseite</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Letzte Seite</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Seitennummer</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>URL Text hier eingeben</translation>
     </message>
 </context>
 <context>
@@ -1020,7 +1140,7 @@
     </message>
     <message>
         <source>Show Open-Sankore</source>
-        <translation type="unfinished">Open-Sankore anzeigen</translation>
+        <translation>Open-Sankore anzeigen</translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1178,6 @@
         <translation>Seite entfernen</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Dokument entfernen</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Möchten Sie das Dokument '%1' wirklich entfernen?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Leerer Papierkorb</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Möchten Sie den Papierkorb wirklich leeren?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Papierkorb wird geleert</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Papierkorb geleert</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Ordner entfernen</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Möchten Sie den Ordner '%1 mit dem gesamten Inhalt wirklich entfernen?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Kein Dokument ausgewählt!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Unterstützte Datei öffnen</translation>
     </message>
@@ -1154,11 +1238,19 @@
     </message>
     <message>
         <source>Folder does not contain any image files</source>
-        <translation type="unfinished">Das Verzeichnis enthält keine Bilder</translation>
+        <translation>Das Verzeichnis enthält keine Bilder</translation>
     </message>
     <message>
         <source>Untitled Documents</source>
-        <translation type="unfinished">Unbenanntes Dokument</translation>
+        <translation>Unbenanntes Dokument</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1177,7 +1269,7 @@
     </message>
     <message>
         <source>widgets</source>
-        <translation>Steuerelemente</translation>
+        <translation>Widgets</translation>
     </message>
     <message>
         <source>All supported files (*.%1)</source>
@@ -1189,19 +1281,19 @@
     </message>
     <message>
         <source>Inserting page %1 of %2</source>
-        <translation type="unfinished">Hinzufügen der Seite %1 von %2</translation>
+        <translation>Einfügen der Seite %1 von %2</translation>
     </message>
     <message>
         <source>Import successful.</source>
-        <translation type="unfinished">Import erfolgreich.</translation>
+        <translation>Import erfolgreich.</translation>
     </message>
     <message>
         <source>Import of file %1 successful.</source>
-        <translation type="unfinished">Import des Dokuments %1 erfolgreich.</translation>
+        <translation>Import des Dokuments %1 erfolgreich.</translation>
     </message>
     <message>
         <source>Importing file %1</source>
-        <translation type="unfinished">Importieren von %1</translation>
+        <translation>Importieren von %1</translation>
     </message>
 </context>
 <context>
@@ -1247,6 +1339,57 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Akzeptieren</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Ersetzen</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Abbrechen</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Der Name %1 wird bereits benutzt. Wenn Sie den Namen behalten möchten, wird das Dokument ersetzt. Wenn Sie einen neuen Namen wählen, wird ein neues Dokument erstellt.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Eigene Dokumente</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Modelle</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Papierkorb</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Unbenannte Dokumente</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Seite %1/%2 wird kopiert</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 Seite kopiert</numerusform>
+            <numerusform>%1 Seiten kopiert</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1265,6 +1408,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Download fehlgeschlagen.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>Der Remote-Server verweigerte die Verbindung (akzeptiert keine Anfragen)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>Der Remote-Server beendete die Verbindung, bevor die Anwort vollständig empfangen und verarbeitet werden konnte</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>Der Name des Remote-Servers wurde nicht gefunden (ungültiger Host-Name)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>Zeitüberschreitung bei der Verbindung zum Remote-Server</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>Die Operation wurde abgebrochen() oder geschlossen(), bevor sie beendet werden konnte.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>Der SSL/TLS-Handshake ist fehlgeschlagen, die verschlüsselte Verbindung konnte nicht hergestellt werden. Das SSL-Fehlersignal ist vermutlich gesendet worden.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>Die Verbindung wurde wegen Entfernung vom Netzwerk unterbrochen. Das System hat jedoch Roaming an einen anderen Access-Point veranlasst. Die Anfrage wird erneut gesendet und verarbeitet, sobald die Verbindung wieder hergestellt ist. </translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>Die Verbindung zum Proxy-Server wurde verweigert (Der Proxy-Server akzeptiert keine Anfragen)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>Der Proxy-Server hat die Verbindung beendet, bevor die vollständige Antwort empfangen und verarbeitet werden konnte</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>Der Name des Proxy-Servers wurde nicht gefunden (ungültiger Proxy-Hostname)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>Zeitüberschreitung bei der Verbindung zum Proxy oder verspätete Antwort des Proxy auf die Anfrage</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>Der Proxy benötigt Authentifizierung, um die Anfrage zu bearbeiten, akzeptierte aber ggf. keine Berechtigungsnachweise</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>Der Zugang zum Remote-Content wurde verweigert (vgl. HTTP-Fehler 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>Die gewünschte Operation mit dem Remote-Content ist nicht gestattet</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>Der Remote-Content wurde nicht auf diesem Server gefunden (vgl. HTTP-Fehler 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>Der Remote-Server benötigt Authentifizierung, um die Anfrage zu bearbeiten, akzeptierte aber ggf. keine Berechtigungsnachweise</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>Die Anfrage musste nochmals gesendet werden. Fehler: Die Daten für den Upload konnten nicht mehr gelesen werden.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>Der Netzwerk-API kann die Anfrage nicht bearbeiten: Protokoll unbekannt</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>Die gewünschte Operation ist in diesem Protokoll nicht gültig</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>unbekannter Netzwerkfehler</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>unbekannter Proxy-Fehler</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>unbekannter Fehler mit dem Remote-Content</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>Zusammenbruch des Protokoll (z.B. durch Parsing-Fehler, ungültige oder unerwartete Anworten, etc.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1279,7 +1521,7 @@
     <name>UBExportAdaptor</name>
     <message>
         <source>Warnings during export was appeared</source>
-        <translation type="unfinished">Warnungen beim Exportieren aufgetreten</translation>
+        <translation>Warnungen beim Exportieren aufgetreten</translation>
     </message>
 </context>
 <context>
@@ -1333,6 +1575,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Export fehlgeschlagen...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Exportieren als UBX-File</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Dokument wird exportiert...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Export erfolgreich.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Export fehlgeschlagen.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Export ins Sankore UBX-Format</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1419,6 +1688,10 @@
         <source>Object informations</source>
         <translation>Objektinformationen</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">Hinzufügen</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1463,76 +1736,100 @@
     </message>
     <message>
         <source>Audios</source>
-        <translation type="unfinished">Audiodateien</translation>
+        <translation>Audiodateien</translation>
     </message>
     <message>
         <source>Movies</source>
-        <translation type="unfinished">Filme</translation>
+        <translation>Filme</translation>
     </message>
     <message>
         <source>Pictures</source>
-        <translation type="unfinished">Bilder</translation>
+        <translation>Bilder</translation>
     </message>
     <message>
         <source>Animations</source>
-        <translation type="unfinished">Animationen</translation>
+        <translation>Animationen</translation>
     </message>
     <message>
         <source>Interactivities</source>
-        <translation type="unfinished">Interaktivitäten</translation>
+        <translation>Interaktivitäten</translation>
     </message>
     <message>
         <source>Applications</source>
-        <translation type="unfinished">Anwendungen</translation>
+        <translation>Anwendungen</translation>
     </message>
     <message>
         <source>Shapes</source>
-        <translation type="unfinished">Formen</translation>
+        <translation>Formen</translation>
     </message>
     <message>
         <source>Favorites</source>
-        <translation type="unfinished">Favoriten</translation>
+        <translation>Favoriten</translation>
     </message>
     <message>
         <source>Web search</source>
-        <translation type="unfinished">Websuche</translation>
+        <translation>Websuche</translation>
     </message>
     <message>
         <source>Trash</source>
-        <translation type="unfinished">Papierkorb</translation>
+        <translation>Papierkorb</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Lesezeichen</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Internet</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
     <message>
         <source>Accept</source>
-        <translation type="unfinished">Akzeptieren</translation>
+        <translation>Akzeptieren</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Abbrechen</translation>
+        <translation>Abbrechen</translation>
     </message>
     <message>
         <source>Enter a new folder name</source>
-        <translation type="unfinished">Geben Sie den Namen des Verzeichnisses ein</translation>
+        <translation>Geben Sie einen neuen Verzeichnisnamen an</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesProgressInfo</name>
     <message>
         <source>Loading </source>
-        <translation type="unfinished">Laden </translation>
+        <translation>Laden </translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">Gesperrt</translation>
+        <translation>Gesperrt</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">Auf erweitertem Bildschirm sichtbar</translation>
+        <translation>Auf erweitertem Bildschirm sichtbar</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>eine Aktion hinzufügen</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Link zum Audiofile entfernen</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Link zur Seite entfernen</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Link zur Web-URL entfernen</translation>
     </message>
 </context>
 <context>
@@ -1549,6 +1846,22 @@
         <source>Go to Content Source</source>
         <translation>Gehen Sie zum ursprünglichen Inhalt</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>eine Aktion hinzufügen</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Link zum Audiofile entfernen</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Link zur Seite entfernen</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Link zur Web-URL entfernen</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1569,17 +1882,10 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation type="unfinished">Web</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
-        <translation type="unfinished">Lädt...</translation>
+        <translation>Lädt...</translation>
     </message>
 </context>
 <context>
@@ -1636,6 +1942,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (Dokumentensammlung) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1701,7 +2014,7 @@
     <name>UBMessagesDialog</name>
     <message>
         <source>Close</source>
-        <translation type="unfinished">Schließen</translation>
+        <translation>Schließen</translation>
     </message>
 </context>
 <context>
@@ -1850,6 +2163,142 @@ Möchten Sie diese Fehler auf diesem Computer ignorieren?</translation>
         <source>Marker is pressure sensitive</source>
         <translation>Der Marker ist druckempfindlich</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>Voreinstellung</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>arabisch</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>bulgarisch</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>katalanisch</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>tschechisch</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>dänisch</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>deutsch</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>griechisch</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>englisch</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>englisch (UK)</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>spanisch</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>französisch</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>französisch (Schweiz)</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>italienisch</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>hebräisch</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>japanisch</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>koreanisch</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>madegassisch</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>norwegisch</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>niederländisch</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>polnisch</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>rätoromanisch</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>rumänisch</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>russisch</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>slowakisch</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>schwedisch</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>türkisch</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>chinesisch</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>chinesisch (vereinfacht)</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>chinesisch (traditionell)</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1891,6 +2340,17 @@ Möchten Sie diese Fehler auf diesem Computer ignorieren?</translation>
         <source>My Movies</source>
         <translation>Meine Filme</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>nächstes Mal sichtbar</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2114,14 +2574,14 @@ Möchten Sie diese Fehler auf diesem Computer ignorieren?</translation>
     </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Ganze Seite</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Internet</translation>
+        <source>Embed </source>
+        <translation>Einbetten</translation>
     </message>
 </context>
 <context>
@@ -2214,11 +2674,11 @@ Bitte starten Sie die Anwendung erneut, um auf die aktualisierten Dokumente zugr
     </message>
     <message>
         <source>Open-Sankore</source>
-        <translation type="unfinished">Open-Sankore</translation>
+        <translation>Open-Sankore</translation>
     </message>
     <message>
         <source>OpenSankore</source>
-        <translation type="unfinished">Open-Sankore</translation>
+        <translation>Open-Sankore</translation>
     </message>
 </context>
 <context>
@@ -2468,6 +2928,49 @@ Bitte starten Sie die Anwendung erneut, um auf die aktualisierten Dokumente zugr
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Inhalt zum Einschließen auswählen:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Name der Anwendung</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Einschränkungsklausel und Haftungsausschluss</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Diese Funktion wurde zur Anwendung auf den gängigsten Webseiten entwickelt.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Bitte beachten Sie das Urheberrecht, wenn Sie Links erstellen, oder fremde Inhalte aus dem Internet einschließen.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2545,7 +3048,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Restore credentials on reboot</source>
-        <translation type="unfinished"></translation>
+        <translation>Wiederherstellen der Anmeldeinformationen beim Neustart</translation>
     </message>
 </context>
 <context>
@@ -2743,22 +3246,10 @@ p, li { white-space: pre-wrap; }
         <translation>Lizenzen</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Netzwerk</translation>
     </message>
@@ -2802,10 +3293,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Passwort:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="obsolete">Planète Sankoré ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Benutzer:</translation>
@@ -2815,544 +3302,63 @@ p, li { white-space: pre-wrap; }
         <translation>Passwort:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translatorcomment>do not translate!</translatorcomment>
-        <translation></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translatorcomment>do not translate!</translatorcomment>
         <translation></translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID for exporting file</source>
-        <translation type="unfinished"></translation>
+        <translation>Planète Sankoré ID für den File-Export</translation>
     </message>
     <message>
         <source>Restore credentials on reboot  </source>
-        <translation type="unfinished"></translation>
+        <translation>Wiederherstellen der Anmeldeinformationen beim Neustart</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Start up tips</source>
+        <translation>Startup-Tipps</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Show start up tips</source>
+        <translation>Startup-Tipps anzeigen</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Sprache</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Wählen sie eine Sprache</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Die neue Sprache wird beim nächsten Neustart geladen</translation>
     </message>
     <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation> Open Sankoré schließen</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>Öffne SSl</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_el.ts b/Sankore-3.1/resources/i18n/sankore_el.ts
index 30ceccb..23da126 100644
--- a/Sankore-3.1/resources/i18n/sankore_el.ts
+++ b/Sankore-3.1/resources/i18n/sankore_el.ts
@@ -189,6 +189,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Σελιδοδείκτης</translation>
     </message>
     <message>
@@ -708,14 +709,6 @@
         <translation>Ρύθμιση εγγραφής βίντεο</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Λήψη αντικειμένου flash</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Λήψη περιεχομένου ενός αντικειμένου flash</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Λήψη Διαδικτύου</translation>
     </message>
@@ -736,14 +729,6 @@
         <translation>Λήψη στιγμιότυπου ενός παραθύρου</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Ενσωμάτωση διαδικτυακού περιεχομένου</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Λήψη στιγμιότυπου ενσωματωμένου διαδικτυακού περιεχομένου</translation>
-    </message>
-    <message>
         <source>Show Main Screen on Display Screen</source>
         <translation>Εμφάνιση κύριας οθόνης στην Εμφάνιση Οθόνης</translation>
     </message>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation>Ομάδα</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Λήψη στη</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">βιβλιιοθήκη</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Λήψη στη βιβλιοθήκη</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Λήψη στην</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">τρέχουσα σελιδα</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Λήψη στην τρέχουσα σελίδα</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Προσθήκη συνδέσμου στη </p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">βιβλιοθήκη</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Προσθήκη συνδέσμου στη βιβλιοθήκη</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Προσθήκη συνδέσμου στην</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">τρέχουσα σελίδα</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Προσθήκη συνδέσμου στην τρέχουσα σελίδα</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Σελιδοδείκτης</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -870,7 +892,7 @@
     </message>
     <message>
         <source>Content is not supported in destination format.</source>
-        <translation>Η μορφή του περιεχομένου δεν υποστηριζεται στον προορισμό</translation>
+        <translation>Το περιεχόμενο δεν υποστηριζεται με τη μορφή του προορισμου.</translation>
     </message>
     <message>
         <source>Remove Page</source>
@@ -988,12 +1010,110 @@
         <translation>Σχήμα:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Μέγεθος:</translation>
+        <source>Alpha:</source>
+        <translation>Άλφα:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Κλείσιμο:</translation>
+        <source>Geometry:</source>
+        <translation>Γεωμετρία:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Πλάτος:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Ύψος:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Διατήρηση ποσοστών</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Λειτουργία:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Προεπισκόπηση:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Κλειστή μνήμη cache</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><drop content></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Οι εικόνες δεν έγιναν αποδεκτές</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Αδυναμία προβολης δεδομένων</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Το αρχείο που αποθέσατε δεν αναγνωρίστηκε ως αρχείο ήχου</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Αναπαραγωγή ενός αρχείου ήχου</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Προσθήκη συνδέσμου στη σελίδα</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Προσθήκη συνδέσμου σε μια ιστοσελίδα</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Σύρετε και αποθέστε το αρχείο ήχου από τη βιβλιοθήκη σε αυτό το πλαίσιο</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Εντάξει</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Επόμενη σελίδα</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Προηγούμενη σελίδα</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Σελίδα τίτλου</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Τελευταία σελίδα</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Αριθμός σελίδας</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Εισάγωγή κειμένου url εδώ</translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1178,6 @@
         <translation>Αφαίρεση σελίδας</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Αφαίρεση εγγράφου</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Είστε βέβαιος ότι θέλετε να αφαιρέσετε το έγγραφο '%1';</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Άδειασμα Κάδου Ανακύκλωσης</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Είστε βέβαιος ότι θέλετε να αδειάσετε τον Κάδο Ανακύκλωσης;</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Άδειασμα Κάδου Ανακύκλωσης</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Ολοκληρώθηκε το άδειασμα του Κάδου Ανακύκλωσης</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Αφαίρεση φακέλου</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Είστε βέβαιος ότι θέλετε να αφαιρέσετε τον φάκελο '%1' και όλα τα περιεχόμενά του;</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Δεν επιλέχθηκε κανένα έγγραφο!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Άνοιγμα υποστηριζόμενου αρχείου</translation>
     </message>
@@ -1160,6 +1244,14 @@
         <source>Untitled Documents</source>
         <translation>Έγγραφα χωρίς τίτλο</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1193,11 +1285,11 @@
     </message>
     <message>
         <source>Import successful.</source>
-        <translation>Επιτυχημένη εισαγωγή</translation>
+        <translation>Επιτυχημένη εισαγωγή.</translation>
     </message>
     <message>
         <source>Import of file %1 successful.</source>
-        <translation>Επιτυχημένη εισαγωγή του αρχείου %1 </translation>
+        <translation>Επιτυχημένη εισαγωγή του αρχείου %1.</translation>
     </message>
     <message>
         <source>Importing file %1</source>
@@ -1219,7 +1311,7 @@
     <name>UBDocumentPublisher</name>
     <message>
         <source>Export failed.</source>
-        <translation>Η εξαγωγή απέτυχε</translation>
+        <translation>Η εξαγωγή απέτυχε.</translation>
     </message>
     <message>
         <source>Export canceled ...</source>
@@ -1247,6 +1339,59 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Αποδοχή</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Αντικατάσταση</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Άκυρο</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Το όνομα %1 χρησιμοποιείται ήδη.
+Αν κρατήσετε αυτό το όνομα θα αντικατασταθεί το αρχείο.
+Αν δώσετε νέο όνομα θα δημιουργηθεί νέο αρχείο.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Τα έγγραφά μου</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Μοντέλα</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Κάδος ανακύκλωσης</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Έγγραφα χωρίς τίτλο</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Αντιγραφή σελίδας %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 σελίδα αντιγράφηκε</numerusform>
+            <numerusform>%1 σελίδες αντιγράφηκαν</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1265,6 +1410,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Η λήψη απέτυχε.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>ο απομακρυσμένος διακομιστής αρνήθηκε τη σύνδεση (δεν αποδέχτηκε τα αιτήματα)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>ο απομακρυσμένος διακομιστής έκλεισε τη σύνδεση πρόωρα, πριν την ολοκληρωτική λήψη και επεξεργασία</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>το απομακρυσμένο όνομα φιλοξενίας δεν βρέθηκε (μη έγκυρο όνομα φιλοξενίας)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>έληξε ο χρόνος σύνδεσης στον απομακρυσμένο διακομιστή</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>η λειτουργία ακυρώθηκε λόγω κλήσεων για ματαίωση() ή κλείσιμο() πριν την ολοκλήρωσή της.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>η SSL/TLS χειραψία απέτυχε και το κρυπτογραφημένο κανάλι δεν παγιώθηκε. Θα γίνει εκπομπή ενός σήματος σφάλματος για το sslErrors().</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>η σύνδεση διακόπηκε λόγω αποσύνδεσης από το δίκτυο, ωστόσο το σύστημα αναζητά άλλο σημείο πρόσβασης. Το αίτημα θα ξανασταλεί και θα διεκπεραιωθεί μόλις αποκατασταθεί η σύνδεση.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>δεν ήταν δυνατή η σύνδεση στο διακομιστή μεσολάβησης (ο διακομιστής μεσολάβησης δεν αποδέχτηκε τα αιτήματα)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>ο διακομιστής μεσολάβησης έκλεισε τη σύνδεση πρόωρα, πριν την ολοκληρωτική λήψη και διεκπεραίωση της απόκρισης</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>το όνομα του διακομιστή μεσολαβησης δεν βρέθηκε (μη έγκυρο όνομα φιλοξενίας)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>η σύνδεση στο διακομιστή μεσολάβησης έληξε, ή αυτός δεν αποκρίνεται έγκαιρα μετά την αποστολη του αιτήματος</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>ο διακομιστής μεσολάβησης απαιτεί πιστοποίηση με σκοπό να αποδεχτεί ένα αίτημα, αλλά δεν αποδέχτηκε κανένα από τα πιστοποιητικά που δόθηκαν (εάν υπήρξαν)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>δεν επιτράπηκε η πρόσβαση στο απομακρυσμένο περιεχόμενο (παρόμοιο με το HTTP σφάλμα 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>η λειτουργία που απαιτήθηκε για το απομακρυσμένο περιεχόμενο δεν επιτράπηκε</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>το απομακρυσμένο περιεχόμενο δεν βρέθηκε στον διακομιστή (παρόμοιο με το HTTP σφάλμα 401)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>ο απομακρυσμένος διακομιστής απαιτεί πιστοποίηση για να επιτρέψει πρόσβαση στο περιεχόμενο, αλλά δεν αποδέχτηκε κανένα από τα πιστοποιητικά που δόθηκαν (εάν υπήρξαν)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>το απαιτούμενο αίτημα στάλθηκε ξανά, αλλά αυτό απέτυχε, για παράδειγμα, επειδή δεν ήταν δυνατή για δεύτερη φορά η ανάγνωση των δεδομένων που φορτώθηκαν.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>το Network Access API δεν είναι δυνατόν να αποδεχτεί το αίτημα επειδή το πρωτόκολλο δεν είναι γνωστο</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>η αιτούμενη λειτουργία δεν είναι έγκυρη γι' αυτό το πρωτόκολλο</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>εντοπίστηκε ένα άγνωστο σφάλμα σχετικό με το δίκτυο</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>εντοπίστηκε ένα άγνωστο σφάλμα σχετικό με τον διακομιστή μεσολάβησης</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>εντοπίστηκε ένα άγνωστο σφάλμα σχετικό με το απομακρυσμένο περιεχόμενο</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>εντοπίστηκε μια αποτυχία στο πρωτόκολλο (σφάλμα σύνταξης, μη έγκυρες ή μη αναμενόμενες αποκρίσεις, κλπ.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1298,11 +1542,11 @@
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Επιτυχημένη εξαγωγή</translation>
+        <translation>Επιτυχημένη εξαγωγή.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation>Αποτυχημένη εξαγωγή</translation>
+        <translation>Αποτυχημένη εξαγωγή.</translation>
     </message>
 </context>
 <context>
@@ -1321,7 +1565,7 @@
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Επιτυχημένη εξαγωγή</translation>
+        <translation>Επιτυχημένη εξαγωγή.</translation>
     </message>
     <message>
         <source>Exporting %1 %2 of %3</source>
@@ -1333,6 +1577,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Αποτυχία εξαγωγής του ...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Εξαγωγή ως αρχείο UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Εξαγωγή εγγράφου...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Επιτυχημένη εξαγωγή.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Αποτυχημένη εξαγωγή.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Εξαγωγή σε μορφή UBX Sankore</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1344,7 +1615,7 @@
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Επιτυχημένη εξαγωγή</translation>
+        <translation>Επιτυχημένη εξαγωγή.</translation>
     </message>
     <message>
         <source>Export to PDF</source>
@@ -1363,7 +1634,7 @@
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Επιτυχημένη εξαγωγή</translation>
+        <translation>Επιτυχημένη εξαγωγή.</translation>
     </message>
     <message>
         <source>Exporting page %1 of %2</source>
@@ -1390,11 +1661,11 @@
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Επιτυχημένη εξαγωγή</translation>
+        <translation>Επιτυχημένη εξαγωγή.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation>Η εξαγωγή απέτυχε</translation>
+        <translation>Η εξαγωγή απέτυχε.</translation>
     </message>
     <message>
         <source>Export to Web Browser</source>
@@ -1419,6 +1690,10 @@
         <source>Object informations</source>
         <translation>Πληροφορίες αντικειμένου</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">Προσθήκη</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1501,6 +1776,14 @@
         <source>Trash</source>
         <translation>Κάδος ανακύκλωσης</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Σελιδοδείκτες</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1534,6 +1817,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Ορατό σε Εκταταμένη Οθόνη</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Προσθήκη μιας ενέργειας</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Αφαίρεση συνδέσμου σε αρχείο ήχου</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Αφαίρεση συνδέσμου σε σελίδα</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Αφαίρεση συνδέσμου σε url ιστοσελίδας</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1549,6 +1848,22 @@
         <source>Go to Content Source</source>
         <translation>Μετάβαση στην Πηγή Περιεχομένου</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Προσθήκη ενέργειας</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Αφαίρεση συνδέσμου σε αρχείο ήχου</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Αφαίρεση συνδέσμου σε σελίδα</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Αφαίρεση συνδέσμου σε url ιστοσελίδας</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1569,13 +1884,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Διαδίκτυο</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1605,15 +1913,15 @@
     </message>
     <message>
         <source>Import of file %1 failed.</source>
-        <translation>Η εισαγωγή του αρχείου %1 απέτυχε</translation>
+        <translation>Η εισαγωγή του αρχείου %1 απέτυχε.</translation>
     </message>
     <message>
         <source>Import successful.</source>
-        <translation>Επιτυχημένη εισαγωγή</translation>
+        <translation>Επιτυχημένη εισαγωγή.</translation>
     </message>
     <message>
         <source>Import failed.</source>
-        <translation>Αποτυχημένη εισαγωγή</translation>
+        <translation>Αποτυχημένη εισαγωγή.</translation>
     </message>
 </context>
 <context>
@@ -1624,11 +1932,11 @@
     </message>
     <message>
         <source>Import successful.</source>
-        <translation>Επιτυχημένη εισαγωγή</translation>
+        <translation>Επιτυχημένη εισαγωγή.</translation>
     </message>
     <message>
         <source>Import of file %1 failed.</source>
-        <translation>Η εισαγωγή του αρχείου %1 απέτυχε</translation>
+        <translation>Η εισαγωγή του αρχείου %1 απέτυχε.</translation>
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
@@ -1636,6 +1944,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (ομαδα εγγράφων) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1650,7 +1965,7 @@
     </message>
     <message>
         <source>PDF import failed.</source>
-        <translation>Η εισαγωγή του PDF απέτυχε</translation>
+        <translation>Η εισαγωγή του PDF απέτυχε.</translation>
     </message>
     <message>
         <source>Importing page %1 of %2</source>
@@ -1850,6 +2165,142 @@ Do you want to ignore these errors for this host?</source>
         <source>Marker is pressure sensitive</source>
         <translation>Ο μαρκαδόρος είναι ευαίσθητος στην πίεση</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>Προκαθορισμένη</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Αραβικά</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Βουλγαρικά</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Καταλανικά</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Τσέχικα</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Δανικά</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Γερμανικά</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Ελληνικά</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Αγγλικά</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Αγγλικά (UK)</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Ισπανικά</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Γαλλικά</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Γαλλικά της Ελβετίας</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Ιταλικά</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Εβραϊκά</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Ιαπωνικά</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Κορεατικά</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Μαλαγκάσι</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Νορβηγικά</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Ολλανδικά</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Πολωνικά</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Ρομάνς</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Ρουμάνικα</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Ρωσικά</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Σλοβάκικα</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Σουηδικά</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Τουρκικά</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Κινέζικα</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Κινέζικα απλοποιημένα</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Κινέζικα παραδοσιακά</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1891,6 +2342,17 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation>Οι ταινίες μου</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Ορατό την επόμενη φορά</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2007,7 +2469,7 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>Licence</source>
-        <translation>Αδειοδότηση:</translation>
+        <translation>Αδειοδότηση</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
@@ -2106,14 +2568,14 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Ολόκληρη σελίδα</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <source>Embed </source>
+        <translation>Ενσωματωμένο</translation>
     </message>
 </context>
 <context>
@@ -2124,7 +2586,7 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source> files require an update.</source>
-        <translation>αρχεία που χρειάζονται ενημέρωση</translation>
+        <translation>αρχεία που χρειάζονται ενημέρωση.</translation>
     </message>
     <message>
         <source>Backup path: </source>
@@ -2460,6 +2922,49 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Επιλογή περιεχομένου για χρήση:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Όνομα εφαρμογής</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Περιορισμοί και αποποίηση ευθυνών.</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Αυτή η λειτουργια αναπτύχθηκε για να δουλεύει στις περισσότερες ιστοσελίδες.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Παρακαλώ να σέβεστε τα πνευματικά δικαιώματα όταν χρησιμοποιείτε περιεχόμενο από το διαδίκτυο.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2537,7 +3042,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Restore credentials on reboot</source>
-        <translation type="unfinished"></translation>
+        <translation>Επαναφορά πιστοποιητικών μετά την επανεκκίνηση</translation>
     </message>
 </context>
 <context>
@@ -2630,7 +3135,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
-        <translation>Προσοχή: Αυτό το έγγραφο περιέχει βίντεο, το οποίο δεν εμφανίζεται σωστά στο διαδικτυο.</translation>
+        <translation>Προσοχή: Αυτό το έγγραφο περιέχει βίντεο, το οποίο δεν εμφανίζεται σωστά στο διαδίκτυο</translation>
     </message>
 </context>
 <context>
@@ -2712,7 +3217,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Home Page:</source>
-        <translation>Αρχική σελίδα</translation>
+        <translation>Αρχική σελίδα:</translation>
     </message>
     <message>
         <source>Toolbar</source>
@@ -2735,22 +3240,10 @@ p, li { white-space: pre-wrap; }
         <translation>Άδειες</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Δίκτυο</translation>
     </message>
@@ -2794,10 +3287,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Κωδικός πρόσβασης:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="obsolete">Αναγνωριστικό για το Planète Sankoré</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Χρήστης:</translation>
@@ -2807,841 +3296,62 @@ p, li { white-space: pre-wrap; }
         <translation>Κωδικός πρόσβασης:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation>ΓΕΝΙΚΗ ΑΔΕΙΑ ΔΗΜΟΣΙΑΣ ΧΡΗΣΗΣ GNU
-
-				Έκδοση 2, Ιούνιος 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Επιτρέπεται σε όλους η αντιγραφή και διανομή αυτούσιων αντιγράφων
- αυτού του εγγράφου άδειας χρήσης, χωρίς ωστόσο να επιτρέπεται η αλλοίωσή του.
-
-					Εισαγωγή
-
-  Οι άδειες χρήσης των περισσότερων προγραμμάτων συντάσσονται για να περιορίσουν την ελευθερία σας να τα μοιράζεστε με άλλους και να τα επεξεργάζεστε.  Εν αντιθέσει, η Γενική Άδεια Δημόσιας Χρήσης GNU έχει σκοπό να εγγυηθεί την ελευθερία σας να χρησιμοποιείτε από κοινού με άλλους και να τροποποιείτε προγράμματα που διατίθενται ελεύθερα -- δηλαδή να εγγυηθεί ότι το πρόγραμμα είναι ελεύθερο για όλους τους χρήστες.  Αυτή η Γενική Άδεια Δημόσιας Χρήσης ισχύει για τα περισσότερα προγράμματα του Ιδρύματος Ελεύθερου Λογισμικού (Free Software Foundation), καθώς και για κάθε άλλο πρόγραμμα οι δημιουργοί του οποίου συμμορφώνονται με την άδεια αυτή.  (Ορισμένα άλλα προγράμματα του Ιδρύματος Ελεύθερου Λογισμικού καλύπτονται από τη Γενική Άδεια Δημόσιας Χρήσης Βιβλιοθήκης GNU.)  Την άδεια αυτή μπορείτε να την εφαρμόσετε και στα δικά σας προγράμματα.
-
-  Μιλώντας για ελεύθερο λογισμικό, αναφερόμαστε στην ελευθερία χρήσης του, όχι
-στο κόστος του.  Οι Γενικές Άδειες Δημόσιας Χρήσης τις οποίες συντάσσουμε έχουν σκοπό να κατοχυρώσουν την ελευθερία σας να διανέμετε αντίγραφα ελεύθερου λογισμικού (και να χρεώνετε, εάν το επιθυμείτε, την παροχή αυτής της υπηρεσίας), να σας εξασφαλίσουν το δικαίωμα να λαμβάνετε τον πηγαίο κώδικα, εάν τον χρειάζεστε, καθώς και να τροποποιείτε το πρόγραμμα ή να χρησιμοποιείτε τμήματά του σε καινούργια ελεύθερα προγράμματα -- και να διασφαλίσουν ότι είστε ενήμεροι για τα παραπάνω δικαιώματά σας.
-
-  Για την προστασία των δικαιωμάτων σας, επιβάλλεται να προβούμε σε περιορισμούς
-οι οποίοι θα εμποδίζουν σε κάποιον να αμφισβητήσει τα δικαιώματά σας ή να σας ζητήσει να παραιτηθείτε από αυτά. Αυτοί οι περιορισμοί ερμηνεύονται ως συγκεκριμένες ευθύνες για εσάς εάν διανέμετε αντίγραφα κάποιου ελεύθερου λογισμικού ή εάν το τροποποιείτε.
-
-  Για παράδειγμα, εάν διανέμετε αντίγραφα ενός τέτοιου προγράμματος, είτε δωρεάν
-είτε με χρέωση, πρέπει να εκχωρήσετε στους παραλήπτες όλα τα δικαιώματα που έχετε και εσείς.  Πρέπει να εγγυηθείτε ότι και εκείνοι επίσης λαμβάνουν, ή μπορούν να λάβουν, τον πηγαίο κώδικα.  Πρέπει επίσης να τους επιδείξετε τους όρους αυτής της άδειας χρήσης, ώστε να είναι ενήμεροι για τα δικαιώματά τους.
-
-  Προστατεύουμε τα δικαιώματά σας με δύο τρόπους: (1) προστατεύοντας το λογισμικό και (2) προσφέροντάς σας αυτήν την άδεια, με την οποία αποκτάτε νόμιμο δικαίωμα αντιγραφής, διανομής ή/και τροποποίησης του λογισμικού.
-
-  Επιπλέον, για την προστασία των δημιουργών και τη δική μας, θέλουμε να καταστήσουμε βέβαιο ότι όλοι κατανοούν την απουσία εγγύησης για αυτό το ελεύθερο λογισμικό.  Εάν το λογισμικό τροποποιηθεί από κάποιον τρίτο και στη συνέχεια διανεμηθεί, θέλουμε να γνωρίζουν οι παραλήπτες ότι το λογισμικό που απέκτησαν δεν είναι το πρωτότυπο, έτσι ώστε οποιοδήποτε πρόβλημα προκληθεί από τρίτους να μην βαρύνει το όνομα του δημιουργού.
-
-  Τέλος, κάθε ελεύθερο λογισμικό απειλείται συνεχώς από τις κατοχυρώσεις ευρεσιτεχνίας λογισμικού.  Θέλουμε να αποφύγουμε τον κίνδυνο να αποκτήσουν οι αναδιανομείς ελεύθερου λογισμικού τίτλους ευρεσιτεχνίας, καθιστώντας έτσι το λογισμικό προσωπική τους ιδιοκτησία.  Για να αποκλείσουμε αυτό το ενδεχόμενο, έχουμε ξεκαθαρίσει ότι οποιαδήποτε ευρεσιτεχνία θα πρέπει να παρέχει άδεια ελεύθερης χρήσης από όλους, διαφορετικά να μην παρέχει καμιά απολύτως άδεια.
-
-  Ακολουθούν οι ακριβείς όροι και συνθήκες αντιγραφής, διανομής και τροποποίησης.
-
-		    ΓΕΝΙΚΗ ΑΔΕΙΑ ΔΗΜΟΣΙΑΣ ΧΡΗΣΗΣ GNU
-   ΟΡΟΙ ΚΑΙ ΣΥΝΘΗΚΕΣ ΑΝΤΙΓΡΑΦΗΣ, ΔΙΑΝΟΜΗΣ ΚΑΙ ΤΡΟΠΟΠΟΙΗΣΗΣ
-
-  0. Η Άδεια αυτή ισχύει για κάθε πρόγραμμα ή άλλο έργο που περιέχει
-σημείωμα από τον κάτοχο πνευματικών δικαιωμάτων, στο οποίο αναφέρεται ότι η διανομή του προγράμματος είναι δυνατή υπό τους όρους αυτής της Γενικής Άδειας Δημόσιας Χρήσης.  Ο όρος "Πρόγραμμα", παρακάτω, αναφέρεται σε οποιοδήποτε τέτοιο πρόγραμμα ή έργο, ενώ ο όρος "έργο βασισμένο στο Πρόγραμμα" σημαίνει είτε το Πρόγραμμα είτε κάθε άλλο παραγόμενο έργο που υπάγεται στο νόμο περί πνευματικής ιδιοκτησίας: με λίγα λόγια, ένα έργο που περιέχει ακέραιο το Πρόγραμμα ή ένα μέρος του, είτε αυτούσιο είτε με τροποποιήσεις ή/και μεταφρασμένο σε άλλη γλώσσα.  (Από αυτό το σημείο, η μετάφραση θα περιλαμβάνεται χωρίς περιορισμούς στον όρο "τροποποίηση".)  Κάθε κάτοχος της άδειας χρήσης θα αναφέρεται στο εξής ως "εσείς/εσάς".
-
-’λλες δραστηριότητες πέραν της αντιγραφής, της διανομής και της τροποποίησης δεν καλύπτονται από αυτήν την Άδεια - είναι εκτός των πλαισίων της.  Δεν υπάρχει περιορισμός στην ενέργεια εκτέλεσης ενός προγράμματος, ενώ το προϊόν της χρήσης του Προγράμματος καλύπτεται μόνο εφόσον το περιεχόμενό του συνιστά έργο βασισμένο στο Πρόγραμμα (ανεξάρτητα από το εάν δημιουργήθηκε με την εκτέλεση του Προγράμματος). Το κατά πόσο συμβαίνει αυτό εξαρτάται από το είδος του Προγράμματος.
-
-  1. Επιτρέπεται η αντιγραφή και διανομή αυτούσιων αντιγράφων του πηγαίου κώδικα του Προγράμματος όπως ακριβώς το έχετε λάβει, σε οποιοδήποτε αποθηκευτικό μέσο, με την προϋπόθεση ότι: θα δημοσιεύσετε εμφανώς και καταλλήλως, σε κάθε αντίγραφο, ένα σημείωμα πνευματικής ιδιοκτησίας και ένα σημείωμα αποποίησης ευθυνών εγγύησης - ότι θα συμπεριλάβετε ακέραια όλα τα σημειώματα που αναφέρονται στην Άδεια αυτή και στην απουσία οποιασδήποτε εγγύησης - και, τέλος, ότι θα εκχωρήσετε σε κάθε άλλον παραλήπτη του Προγράμματος ένα αντίγραφο αυτής της Άδειας μαζί με το Πρόγραμμα.
-
-Έχετε δικαίωμα να επιβάλετε χρέωση για τη φυσική ενέργεια της μεταφοράς ενός αντιγράφου, καθώς και να παράσχετε, κατά την κρίση σας, προστασία εγγύησης με χρέωση.
-
-  2. Επιτρέπεται η τροποποίηση του αντιγράφου ή των αντιγράφων του Προγράμματος ολόκληρου ή μέρους του, η οποία συνιστά συνεπώς δημιουργία ενός έργου βασισμένου στο Πρόγραμμα, και η διανομή αυτών των τροποποιήσεων ή έργων υπό τους όρους της Ενότητας 1 ως ανωτέρω, με την προϋπόθεση ότι και εσείς πληροίτε όλες τις παρακάτω προϋποθέσεις:
-
-    α) Πρέπει να φροντίζετε ώστε τα τροποποιημένα αρχεία να παρέχουν εμφανή σημειώματα στα οποία να δηλώνεται η τροποποίηση των αρχείων και η ημερομηνία τροποποίησης.
-
-    β) Πρέπει να φροντίζετε ώστε για κάθε έργο το οποίο διανέμετε ή δημοσιεύετε, και το οποίο περιέχει ή παράγεται από ολόκληρο ή μέρος του Προγράμματος, να παρέχεται άδεια χρήσης του, χωρίς χρέωση, σε όλα τα τρίτα μέρη, σύμφωνα με τους όρους αυτής της Άδειας.
-
-    γ) Εάν το τροποποιημένο πρόγραμμα διαβάζει εντολές αλληλεπιδραστικά, κατά την τυπική εκτέλεσή του, πρέπει να φροντίζετε ώστε, κατά την έναρξη τυπικής εκτέλεσής του για αυτήν την αλληλεπιδραστική χρήση, να εκτυπώνεται ή να εμφανίζεται στην οθόνη μια ανακοίνωση, η οποία θα περιλαμβάνει το απαραίτητο σημείωμα πνευματικής ιδιοκτησίας και ένα σημείωμα στο οποίο θα αναφέρεται ότι δεν υπάρχει καμιά εγγύηση (ή, αντίθετα, ότι παρέχετε εγγύηση) και ότι οι χρήστες έχουν τη δυνατότητα να αναδιανέμουν το πρόγραμμα σύμφωνα με τις προϋποθέσεις αυτές, καθώς και οδηγίες προς το χρήστη για τον τρόπο προβολής ενός αντιγράφου αυτής της Άδειας.  (Εξαίρεση: εάν το ίδιο το Πρόγραμμα είναι αλληλεπιδραστικό αλλά κανονικά δεν εκτυπώνει αυτήν την ανακοίνωση, δεν απαιτείται από το έργο που δημιουργήσατε βασισμένοι στο Πρόγραμμα να εκτυπώνει ανακοίνωση.)
-
-Οι απαιτήσεις αυτές ισχύουν για ολόκληρο το τροποποιημένο έργο.  Εάν συγκεκριμένες ενότητες του έργου αυτού δεν παράγονται από το Πρόγραμμα, και μπορούν να θεωρηθούν με ασφάλεια από μόνες τους ως ανεξάρτητα και ξεχωριστά έργα, τότε αυτή η Άδεια και οι όροι της δεν ισχύουν για τις ενότητες αυτές, κατά τη διανομή τους ως ξεχωριστά έργα.  Αλλά όταν διανέμετε τις ίδιες ενότητες ως τμήματα ενός ευρύτερου έργου το οποίο βασίζεται στο Πρόγραμμα, η διανομή του συνόλου πρέπει να υπόκειται στους όρους της Άδειας, σύμφωνα με την οποία τα δικαιώματα των άλλων χρηστών εκτείνονται σε ολόκληρο το έργο, επομένως και σε καθένα χωριστό τμήμα του, ανεξάρτητα από το ποιος είναι ο δημιουργός του.
-
-Επομένως, πρόθεση αυτής της ενότητας δεν είναι να εγείρει δικαιώματα ή να αμφισβητήσει τα δικά σας δικαιώματα σε μια εργασία που δημιουργήσατε εξ ολοκλήρου οι ίδιοι - η πρόθεση, περισσότερο, είναι να ασκήσει το δικαίωμα ελέγχου της διανομής των παραγόμενων ή των συλλογικών έργων που βασίζονται στο Πρόγραμμα.
-
-Επιπλέον, η απλή προσθήκη ενός άλλου έργου, που δεν βασίζεται στο Πρόγραμμα, μαζί με το Πρόγραμμα (ή με ένα έργο που βασίζεται στο Πρόγραμμα) σε τόμο ενός μέσου αποθήκευσης ή διανομής, δεν υπάγει το άλλο έργο στα πλαίσια αυτής της Άδειας.
-
-  3. Επιτρέπεται η αντιγραφή και διανομή του Προγράμματος (ή ενός έργου βασισμένο σε αυτό, σύμφωνα με την Ενότητα 2) σε μορφή αντικειμενικού κώδικα ή εκτελέσιμη μορφή, σύμφωνα με τους όρους των Ενοτήτων 1 και 2 ως ανωτέρω, με την προϋπόθεση ότι πραγματοποιείτε και μια από τις ακόλουθες ενέργειες:
-
-    α) Το συνοδεύετε με τον αντίστοιχο, πλήρη πηγαίο κώδικα, ο οποίος είναι αναγνώσιμος από το σύστημα και ο οποίος πρέπει να διανέμεται σύμφωνα με τους όρους των Ενοτήτων 1 και 2 παραπάνω, σε ένα συνηθισμένο μέσο μεταφοράς λογισμικού - ή,
-    β) Το συνοδεύετε με γραπτή προσφορά, ισχύουσα τουλάχιστον για τρία χρόνια και με χρέωση όχι μεγαλύτερη από το κόστος της φυσικής διανομής κώδικα, παράδοσης σε τρίτους του πλήρους, αναγνώσιμου από το σύστημα αντιγράφου του αντίστοιχου πηγαίου κώδικα, ο οποίος θα διανεμηθεί υπό τους όρους των Ενοτήτων 1 και 2 ως ανωτέρω, σε συνηθισμένο μέσο μεταφοράς λογισμικού - ή,
-
-    γ) Το συνοδεύετε με τις πληροφορίες που λάβατε όσον αφορά την προσφορά διανομής του αντίστοιχου πηγαίου κώδικα.  (Η εναλλακτική αυτή επιλογή επιτρέπεται μόνο για μη εμπορική διανομή και μόνο εφόσον λάβατε το πρόγραμμα σε αντικειμενικό κώδικα ή εκτελέσιμη μορφή με αυτήν την προσφορά, σύμφωνα με την Υποενότητα [β] παραπάνω.)
-
-Ο πηγαίος κώδικας για ένα έργο συνιστά την προτιμώμενη μορφή του έργου για πραγματοποίηση τροποποιήσεων σε αυτό.  Για ένα εκτελέσιμο έργο, πλήρης πηγαίος κώδικας σημαίνει όλον τον πηγαίο κώδικα για όλες τις λειτουργικές μονάδες που περιλαμβάνει, συν οποιαδήποτε σχετικά αρχεία ορισμού διασύνδεσης, συν τις δέσμες ενεργειών που χρησιμοποιούνται για τον έλεγχο της μεταγλώττισης και εγκατάστασης του εκτελέσιμου αρχείου.  Ωστόσο, ως ειδική εξαίρεση, ο πηγαίος κώδικας που διανέμεται δεν χρειάζεται να περιλαμβάνει οτιδήποτε διανέμεται κανονικά (είτε ως κώδικας, είτε σε δυαδική μορφή) μαζί με τα μεγαλύτερα στοιχεία (μεταγλωττιστές, πυρήνας κ.ο.κ.) του λειτουργικού συστήματος στο οποίο εκτελείται το εκτελέσιμο αρχείο, εκτός εάν το ίδιο το στοιχείο συνοδεύει το εκτελέσιμο.
-
-Εάν η διανομή του εκτελέσιμου ή του αντικειμενικού κώδικα πραγματοποιείται με
-παραχώρηση πρόσβασης για αντιγραφή από καθορισμένη τοποθεσία, τότε η παραχώρηση
-ισοδύναμης πρόσβασης για αντιγραφή του πηγαίου κώδικα από την ίδια τοποθεσία λογίζεται ως διανομή του πηγαίου κώδικα - αν και τα τρίτα μέλη δεν
-υποχρεούνται να αντιγράψουν τον πηγαίο κώδικα μαζί με τον αντικειμενικό.
-
-  4. Δεν επιτρέπεται η αντιγραφή, τροποποίηση, παραχώρηση άδειας περαιτέρω εκμετάλλευσης ή διανομή του Προγράμματος εκτός εάν προβλέπεται ρητά στην παρούσα Άδεια.  Διαφορετικά, κάθε απόπειρα για αντιγραφή, τροποποίηση, παραχώρηση άδειας εκμετάλλευσης ή διανομή του Προγράμματος είναι άκυρη και αυτομάτως καταργεί τα δικαιώματα που σας παραχωρεί η παρούσα Άδεια.
-Ωστόσο, οι άδειες χρήσης των μελών που έχουν λάβει αντίγραφα ή δικαιώματα από εσάς, μέσω της παρούσας Άδειας, δεν θα ακυρωθούν, εφόσον τα μέλη αυτά
-παραμένουν πλήρως συμμορφωμένα με τους όρους της Άδειας.
-
-  5. Δεν απαιτείται από εσάς να δεχθείτε την παρούσα Άδεια, εφόσον δεν την έχετε υπογράψει.  Ωστόσο, τίποτε άλλο δεν σας δίνει το δικαίωμα να τροποποιήσετε ή να διανείμετε το Πρόγραμμα ή τα παραγόμενα από αυτό έργα.  Οι ενέργειες αυτές απαγορεύονται από το νόμο, εάν δεν αποδεχθείτε την παρούσα Άδεια.  Συνεπώς, με το να τροποποιήσετε ή να διανείμετε το Πρόγραμμα (ή οποιοδήποτε έργο που βασίζεται στο Πρόγραμμα), δηλώνετε ότι αποδέχεστε την παρούσα Άδεια, καθώς και όλους τους όρους και συνθήκες που προβλέπει η Άδεια για την αντιγραφή, διανομή ή τροποποίηση του Προγράμματος ή έργων που βασίζονται σε αυτό.
-
-  6. Κάθε φορά που αναδιανέμετε το Πρόγραμμα (ή ένα έργο βασισμένο στο Πρόγραμμα), ο αποδέκτης αυτόματα παραλαμβάνει την αρχική άδεια αντιγραφής, διανομής ή τροποποίησης του Προγράμματος σύμφωνα με τους όρους και τις συνθήκες αυτές.  Δεν επιτρέπεται να επιβάλλετε περαιτέρω περιορισμούς στην άσκηση των δικαιωμάτων του αποδέκτη τα οποία προβλέπονται εδώ. Δεν είστε υπεύθυνοι για το εάν τρίτα μέλη επιβάλλουν συμμόρφωση σε αυτήν τη Άδεια.
-
-  7. Εάν, ως συνέπεια δικαστικής απόφασης ή κατηγορίας για παράβαση νόμου περί πνευματικής ιδιοκτησίας ή για οποιονδήποτε άλλο λόγο (μη περιοριζόμενο σε θέματα ευρεσιτεχνίας), σας επιβληθούν όροι (είτε μέσω δικαστικής απόφασης, συμφωνίας ή μέσω άλλου τρόπου) οι οποίοι αντιβαίνουν τους όρους της παρούσας Άδειας, οι όροι εκείνοι δεν σας απαλλάσσουν από τους όρους της παρούσας.  Εάν δεν είναι δυνατή η αναδιανομή με τρόπο ώστε να ικανοποιεί συγχρόνως τις υποχρεώσεις σας σύμφωνα με την παρούσα Άδεια και οποιεσδήποτε άλλες υποχρεώσεις απορρέουν από αυτή, τότε, ως συνέπεια, δεν επιτρέπεται να αναδιανέμετε το Πρόγραμμα με κανένα τρόπο.  Για παράδειγμα, εάν μια άδεια ευρεσιτεχνίας δεν επιτρέπει τη χωρίς δικαιώματα εκμετάλλευσης αναδιανομή του Προγράμματος από όλους όσους λαμβάνουν αντίγραφα άμεσα ή έμμεσα από εσάς, τότε ο μόνος τρόπος με τον οποίο θα μπορούσατε να ικανοποιήσετε την άδεια εκείνη και την παρούσα Άδεια θα ήταν να αποφύγετε εντελώς την αναδιανομή του Προγράμματος.
-
-Εάν οποιοδήποτε τμήμα αυτής της ενότητας καταστεί άκυρο ή μη δυνάμενο να επιβληθεί σε κάποια συγκεκριμένη περίπτωση, το υπόλοιπο τμήμα της ενότητας αυτής εφαρμόζεται και η ενότητα ως σύνολο εφαρμόζεται υπό οποιεσδήποτε συγκυρίες.
-
-Δεν ανήκει στους σκοπούς της ενότητας αυτής να σας παρακινήσει να παραβιάσετε
-την ευρεσιτεχνία ή άλλες αξιώσεις πνευματικής ιδιοκτησίας ή να αμφισβητήσετε τον κύρος οποιωνδήποτε τέτοιων αξιώσεων. Μοναδικός σκοπός αυτής της ενότητας είναι να προστατέψει την ακεραιότητα του συστήματος διανομής ελεύθερου λογισμικού, η οποία υλοποιείται μέσω της πρακτικής των αδειών δημόσιας χρήσης. Πολλοί άνθρωποι έχουν συνεισφέρει γενναιόδωρα στην ευρεία έκταση του λογισμικού που διανέμεται μέσω αυτού του συστήματος, εμπιστευόμενοι την συνεπή εφαρμογή αυτού του συστήματος. Είναι στην ευχέρεια του δημιουργού/δωρητή να αποφασίσει εάν προτίθεται να διανείμει λογισμικό μέσω οποιουδήποτε άλλου συστήματος, και μια άδεια δεν είναι δυνατό να επιβάλει αυτήν την επιλογή.
-
-Η ενότητα αυτή έχει ως σκοπό να καταστήσει σαφές ό,τι συνεπάγεται το υπόλοιπο τμήμα της παρούσας Άδειας.
-
-  8. Εάν η διανομή ή/και η χρήση του Προγράμματος εμποδίζεται σε ορισμένες χώρες, είτε μέσω κατοχυρωμένης ευρεσιτεχνίας είτε μέσω διασυνδέσεων που προστατεύονται από πνευματικά δικαιώματα, επιτρέπεται στον κάτοχο του αρχικού πνευματικού δικαιώματος, ο οποίος θέτει το Πρόγραμμα υπό τους όρους της παρούσας Άδειας, να προσθέσει έναν ρητό γεωγραφικό περιορισμό στη διανομή, εξαιρώντας εκείνες τις χώρες, έτσι ώστε η διανομή να επιτρέπεται μόνο για τις χώρες οι οποίες δεν εξαιρούνται.  Σε τέτοια περίπτωση, η παρούσα Άδεια ενσωματώνει τον περιορισμό σαν να ήταν διατυπωμένος στο σώμα της παρούσας Άδειας.
-
-  9. Το Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation) έχει τη δυνατότητα περιστασιακά να δημοσιεύει αναθεωρημένες ή/και νέες εκδόσεις της Γενικής Άδειας Δημόσιας Χρήσης.  Αυτές οι νέες εκδόσεις θα είναι συναφείς στο πνεύμα με την παρούσα έκδοση, όμως ενδέχεται να διαφέρουν στις λεπτομέρειες,
-καθώς αναφέρονται σε νέα προβλήματα και ζητήματα.
-
-Σε κάθε έκδοση δίνεται ένας διακριτικός αριθμός έκδοσης.  Εάν στο Πρόγραμμα
-καθορίζεται ένας αριθμός έκδοσης της παρούσας Άδειας, η οποία ισχύει σε αυτό, καθώς και "οποιασδήποτε μεταγενέστερης έκδοσης", μπορείτε να επιλέξετε ανάμεσα στο να ακολουθήσετε τους όρους και τις συνθήκες είτε εκείνης της έκδοσης είτε οποιασδήποτε άλλης έκδοσης που δημοσιεύεται από το Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation).  Εάν στο Πρόγραμμα δεν καθορίζεται αριθμός έκδοσης
-της παρούσας Άδειας, μπορείτε να επιλέξετε οποιαδήποτε έκδοση η οποία έχει δημοσιευθεί από το Ίδρυμα Ελεύθερου Λογισμικού.
-
-  10. Εάν επιθυμείτε να ενσωματώσετε μέρη του Προγράμματος σε άλλα ελεύθερα
-προγράμματα, των οποίων οι όροι διανομής είναι διαφορετικοί, επικοινωνήστε με το δημιουργό του Προγράμματος για να ζητήσετε την έγκρισή του.  Για λογισμικό του οποίου η πνευματική ιδιοκτησία ανήκει στο Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation), επικοινωνήστε μαζί μας στο Ίδρυμα Ελεύθερου Λογισμικού (σε ορισμένες περιπτώσεις προβαίνουμε σε εξαιρέσεις).  Η απόφασή μας θα ληφθεί βάσει του διττού στόχου μας να διατηρήσουμε την ελευθερία όλων των προϊόντων που παράγονται από το ελεύθερο λογισμικό μας, καθώς και να προωθήσουμε γενικότερα την κοινή χρήση και τη δυνατότητα επαναχρησιμοποίησης του λογισμικού.
-
-                            ΚΑΜΙΑ ΕΓΓΥΗΣΗ
-
-  11. ΕΠΕΙΔΗ Η ΑΔΕΙΑ ΧΡΗΣΗΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΑΡΕΧΕΤΑΙ ΧΩΡΙΣ ΧΡΕΩΣΗ, ΔΕΝ ΥΠΑΡΧΕΙ ΕΓΓΥΗΣΗ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ, ΣΤΟ ΒΑΘΜΟ ΠΟΥ ΕΠΙΤΡΕΠΕΙ Η ΙΣΧΥΟΥΣΑ ΝΟΜΟΘΕΣΙΑ.  ΕΦΟΣΟΝ ΔΕΝ ΥΠΑΡΧΕΙ ΔΙΑΦΟΡΕΤΙΚΗ ΕΓΓΡΑΦΗ ΔΗΛΩΣΗ, ΟΙ ΚΑΤΟΧΟΙ ΠΝΕΥΜΑΤΙΚΩΝ ΔΙΚΑΙΩΜΑΤΩΝ Ή/ΚΑΙ ΑΛΛΕΣ ΠΛΕΥΡΕΣ ΠΑΡΕΧΟΥΝ ΤΟ ΠΡΟΓΡΑΜΜΑ "ΩΣ ΕΧΕΙ" ΧΩΡΙΣ ΚΑΝΕΝΟΣ ΕΙΔΟΥΣ ΕΓΓΥΗΣΕΙΣ, ΕΙΤΕ ΡΗΤΕΣ ΕΙΤΕ ΕΜΜΕΣΕΣ, ΣΤΙΣ ΟΠΟΙΕΣ ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΝΤΑΙ, ΕΝΔΕΙΚΤΙΚΑ, ΟΙ ΕΜΜΕΣΕΣ ΕΓΓΥΗΣΕΙΣ ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ΚΑΙ ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ.  ΟΠΟΙΟΣΔΗΠΟΤΕ ΚΙΝΔΥΝΟΣ ΑΠΟ ΤΗΝ ΠΟΙΟΤΗΤΑ ΚΑΙ ΤΗΝ ΑΠΟΔΟΣΗ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΑΝΗΚΕΙ ΕΞ ΟΛΟΚΛΗΡΟΥ ΕΣΑΣ.  ΕΑΝ ΤΟ ΠΡΟΓΡΑΜΜΑ ΑΠΟΔΕΙΧΘΕΙ ΕΛΑΤΤΩΜΑΤΙΚΟ, ΤΟ ΚΟΣΤΟΣ ΟΛΩΝ ΤΩΝ ΕΡΓΑΣΙΩΝ ΕΠΙΣΚΕΥΗΣ Ή ΔΙΟΡΘΩΣΗΣ ΒΑΡΥΝΕΙ ΕΣΑΣ.
-
-  12. ΣΕ ΚΑΜΙΑ ΠΕΡΙΠΤΩΣΗ, ΕΚΤΟΣ ΕΑΝ ΑΠΑΙΤΕΙΤΑΙ ΑΠΟ ΤΗΝ ΙΣΧΥΟΥΣΑ ΝΟΜΟΘΕΣΙΑ Ή ΕΧΕΙ ΣΥΜΦΩΝΗΘΕΙ ΓΡΑΠΤΩΣ, Ο ΚΑΤΟΧΟΣ ΤΩΝ ΠΝΕΥΜΑΤΙΚΩΝ ΔΙΚΑΙΩΜΑΤΩΝ, Ή ΟΠΟΙΟΔΗΠΟΤΕ ΑΛΛΟ ΜΕΛΟΣ ΤΟ ΟΠΟΙΟ ΜΠΟΡΕΙ ΝΑ ΤΡΟΠΟΠΟΙΗΣΕΙ Ή/ΚΑΙ ΝΑ ΑΝΑΔΙΑΝΕΙΜΕΙ ΤΟ ΠΡΟΓΡΑΜΜΑ ΟΠΩΣ ΠΡΟΒΛΕΠΕΤΑΙ ΠΑΡΑΠΑΝΩ, ΔΕΝ ΦΕΡΕΤΑΙ ΩΣ ΥΠΕΥΘΥΝΟΣ ΑΠΕΝΑΝΤΙ ΣΑΣ ΓΙΑ ΖΗΜΙΕΣ, ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΩΝ ΟΛΩΝ ΤΩΝ ΓΕΝΙΚΩΝ, ΕΙΔΙΚΩΝ, ΣΥΜΠΤΩΜΑΤΙΚΩΝ Ή ΣΥΝΕΠΑΚΟΛΟΥΘΩΝ ΖΗΜΙΩΝ ΠΟΥ ΕΝΔΕΧΕΤΑΙ ΝΑ ΠΡΟΚΥΨΟΥΝ ΛΟΓΩ ΤΗΣ ΧΡΗΣΗΣ Ή ΤΗΣ ΑΔΥΝΑΜΙΑΣ ΧΡΗΣΗΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ (ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΩΝ, ΕΝΔΕΙΚΤΙΚΑ, ΤΗΣ ΑΠΩΛΕΙΑΣ ΔΕΔΟΜΕΝΩΝ Ή ΤΗΣ ΑΛΛΟΙΩΣΗΣ ΤΗΣ ΑΚΡΙΒΕΙΑΣ ΤΟΥΣ, Ή ΑΠΩΛΕΙΑΣ ΠΟΥ ΕΠΗΛΘΕ ΑΠΟ ΕΣΑΣ Ή ΑΠΟ ΤΡΙΤΑ ΜΕΛΗ, Ή ΑΔΥΝΑΜΙΑΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΝΑ ΛΕΙΤΟΥΡΓΗΣΕΙ ΜΕ ΑΛΛΑ ΠΡΟΓΡΑΜΜΑΤΑ), ΕΣΤΩ ΚΑΙ ΑΝ Ο ΚΑΤΟΧΟΣ ΑΥΤΟΣ Ή ΤΟ ΑΛΛΟ ΜΕΛΟΣ ΕΧΕΙ ΕΝΗΜΕΡΩΘΕΙ ΓΙΑ ΤΟ ΕΝΔΕΧΟΜΕΝΟ ΤΕΤΟΙΩΝ ΖΗΜΙΩΝ.
-
-
-		     ΤΕΛΟΣ ΤΩΝ ΟΡΩΝ ΚΑΙ ΤΩΝ ΣΥΝΘΗΚΩΝ
-
-
-	    Τρόπος εφαρμογής των όρων στα νέα Προγράμματα
-
-  Εάν αναπτύσσετε ένα νέο πρόγραμμα και θέλετε να έχει τη μεγαλύτερη δυνατή
-χρήση από το κοινό, ο καλύτερος τρόπος να επιτύχετε αυτό είναι να το χαρακτηρίσετε ελεύθερο λογισμικό, το οποίο όλοι θα μπορούν να αναδιανέμουν και να τροποποιούν υπό τους όρους αυτούς.
-  Για να γίνει αυτό, συνάψτε το ακόλουθο σημείωμα στο πρόγραμμα.  Είναι πιο ασφαλές να το συνάψετε στην αρχή κάθε αρχείου πηγαίου κώδικα, ώστε να φέρεται πιο αποτελεσματικά η εξαίρεση της εγγύησης - και κάθε αρχείο θα πρέπει να διαθέτει τουλάχιστον τη γραμμή "πνευματικής ιδιοκτησίας" και έναν δείκτη για το που βρίσκεται το πλήρες σημείωμα.
-
-    <μια γραμμή που παρέχει το όνομα του προγράμματος και μια σύντομη περιγραφή της λειτουργίας του.>
-    Copyright (C) <έτος>  <όνομα δημιουργού>
-
-    Το πρόγραμμα αυτό είναι ελεύθερο λογισμικό. Επιτρέπεται η αναδιανομή ή/και τροποποίησή του υπό τους όρους της Γενικής Άδειας Δημόσιας Χρήσης GNU (GNU General Public License), όπως αυτή δημοσιεύεται από το Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation) - είτε της έκδοσης 2 της Άδειας, είτε (κατ' επιλογήν) οποιασδήποτε μεταγενέστερης έκδοσης.
-
-    Το πρόγραμμα αυτό διανέμεται με την ελπίδα ότι θα αποδειχθεί χρήσιμο, παρόλα αυτά ΧΩΡΙΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ - χωρίς ακόμη και την έμμεση εγγύηση ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ή ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ. Για περισσότερες λεπτομέρειες ανατρέξτε στη Γενική Άδεια Δημόσιας Χρήσης GNU (GNU General Public License).
-
-    Θα πρέπει να έχετε λάβει ένα αντίγραφο της Γενικής Άδειας Δημόσιας Χρήσης GNU (GNU General Public License) μαζί με αυτό το πρόγραμμα. Εάν όχι, επικοινωνήστε γραπτώς με το Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation), Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Επίσης, προσθέστε πληροφορίες για τον τρόπο με τον οποίο μπορεί κάποιος να επικοινωνήσει μαζί σας μέσω ηλεκτρονικού ή παραδοσιακού ταχυδρομείου.
-
-Εάν το πρόγραμμα είναι αλληλεπιδραστικό, φροντίστε ώστε κατά την εκκίνησή του σε αλληλεπιδραστική λειτουργία να εμφανίζει ένα σύντομο σημείωμα όπως το παρακάτω:
-
-    <Όνομα_προγράμματος> έκδοση <αριθμός_έκδοσης>, Copyright (C) <έτος> <όνομα_δημιουργού>
-    Το <όνομα_προγράμματος> διανέμεται ΧΩΡΙΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ. Για λεπτομέρειες πληκτρολογήστε `show w'.
-    Το λογισμικό αυτό είναι ελεύθερο, και η αναδιανομή του είναι ευπρόσδεκτη υπό συγκεκριμένους όρους. Πληκτρολογήστε `show c' για λεπτομέρειες.
-
-Οι υποθετικές εντολές `show w' και `show c' θα πρέπει να προβάλλουν τις αντίστοιχες ενότητες της Γενικής Άδειας Δημόσιας Χρήσης. Ασφαλώς οι εντολές που χρησιμοποιείτε δεν είναι απαραίτητο να ονομάζονται `show w' και `show c'. Μπορούν να είναι ακόμη και σύνδεσμοι που ενεργοποιούνται με πάτημα του ποντικιού ή στοιχεία μενού--οτιδήποτε ταιριάζει με το πρόγραμμά σας.
-
-Εάν κρίνετε απαραίτητο, θα πρέπει επίσης να ζητήσετε από τον εργοδότη σας (εάν εργάζεστε ως προγραμματιστής) ή τη σχολή σας, εάν υπάρχουν, να υπογράψουν μια "δήλωση αποκήρυξης πνευματικών δικαιωμάτων" (copyright disclaimer) για το πρόγραμμα.
-Μπορείτε να ακολουθήσετε το παρακάτω δείγμα, συμπληρώνοντας τα ονόματα:
-
-  Η <επωνυμία_εταιρίας/σχολής> αποκηρύσσει οποιοδήποτε δικαίωμα πνευματικής ιδιοκτησίας επί του προγράμματος <όνομα_προγράμματος>', το οποίο αποτελεί δημιουργία του <όνομα_δημιουργού>.
-
-  <υπογραφή_εκπροσώπου_εταιρίας/σχολής>, <ημερομηνία, έτος>
-  
-
-Η παρούσα Γενική Άδεια Δημόσιας Χρήσης δεν επιτρέπει την ενσωμάτωση του προγράμματός σας σε ιδιόκτητα προγράμματα.  Εάν το πρόγραμμά σας αποτελεί βιβλιοθήκη υπορουτίνας, θα είναι ενδεχομένως χρησιμότερο να επιτρέπετε σύνδεση ιδιόκτητων εφαρμογών με τη βιβλιοθήκη. Εάν όντως αυτό επιθυμείτε, χρησιμοποιήστε τη Γενική Άδεια Δημόσιας Χρήσης Βιβλιοθήκης GNU (GNU Library General Public License) αντί της παρούσας Άδειας.</translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Εύσημα</translation>
     </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>ID του Planète Sankoré για το εξαγόμενο αρχείο</translation>
+    </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Οι άδειες είναι στα αγγλικά ως ένδειξη σεβασμου της επίσημα και νόμιμα έγκυρης μετάφρασης.</span></p></td></tr></table></body></html></translation>
+        <source>Restore credentials on reboot  </source>
+        <translation>Επαναφορά πιστοποιητικών με την επανεκκίνηση</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+        <source>Start up tips</source>
+        <translation>Υποδείξεις κατά την έναρξη</translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    <message>
+        <source>Show start up tips</source>
+        <translation>Εμφάνιση υποδείξεων κατά την έναρξη</translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    <message>
+        <source>Language</source>
+        <translation>Γλώσσα</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Επιλογή γλώσσας</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Η νέα γλώσσα θα φορτωθεί με την επόμενη επανεκκίνηση του προγράμματος</translation>
     </message>
     <message utf8="true">
-        <source>Planète Sankoré ID for exporting file</source>
-        <translation type="unfinished"></translation>
+        <source>Close Open-Sankoré</source>
+        <translation>Κλείσιμο του Open-Sankoré</translation>
     </message>
     <message>
-        <source>Restore credentials on reboot  </source>
-        <translation type="unfinished"></translation>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_en.ts b/Sankore-3.1/resources/i18n/sankore_en.ts
index 8529bad..850bdde 100644
--- a/Sankore-3.1/resources/i18n/sankore_en.ts
+++ b/Sankore-3.1/resources/i18n/sankore_en.ts
@@ -392,14 +392,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Show Main Screen on Display Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -481,6 +473,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -688,14 +681,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation type="unfinished"></translation>
     </message>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -988,109 +1010,171 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Size:</source>
+        <source>Alpha:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Close</source>
+        <source>Geometry:</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBDesktopPalette</name>
     <message>
-        <source>Capture Part of the Screen</source>
+        <source>Width: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Capture the Screen</source>
+        <source>Height:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show the stylus palette</source>
+        <source>Keep proportions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show Board on Secondary Screen</source>
+        <source>Mode:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show Desktop on Secondary Screen</source>
+        <source>Preview:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show Open-Sankore</source>
+        <source>Close cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBDocumentController</name>
+    <name>UBCreateLinkLabel</name>
     <message>
-        <source>New Folder</source>
+        <source><drop content></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Page %1</source>
+        <source>Images are not accepted</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add Folder of Images</source>
+        <source>Cannot display data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add Images</source>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add Pages from File</source>
+        <source>Add Link to Page</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Duplicating Document %1</source>
+        <source>Add Link to a Web page</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Document %1 copied</source>
+        <source>Drag and drop the audio file from the library in this box</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Remove Page</source>
+        <source>Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
+        <source>Capture Part of the Screen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Remove Document</source>
+        <source>Capture the Screen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
+        <source>Show the stylus palette</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Empty Trash</source>
+        <source>Show Board on Secondary Screen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Are you sure you want to empty trash?</source>
+        <source>Show Desktop on Secondary Screen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Emptying trash</source>
+        <source>Show Open-Sankore</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBDocumentController</name>
     <message>
-        <source>Emptied trash</source>
+        <source>New Folder</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Remove Folder</source>
+        <source>Page %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
+        <source>Add Folder of Images</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No document selected!</source>
+        <source>Add Images</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add Pages from File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Duplicating Document %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Document %1 copied</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -1159,6 +1243,14 @@
         <source>Untitled Documents</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1246,6 +1338,56 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1263,6 +1405,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1331,6 +1572,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1417,6 +1685,10 @@
         <source>Object informations</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1499,6 +1771,14 @@
         <source>Trash</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1532,6 +1812,22 @@
         <source>Visible on Extended Screen</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1547,6 +1843,22 @@
         <source>Go to Content Source</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1567,13 +1879,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1632,214 +1937,357 @@
         <source>Open-Sankore (*.ubz)</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBImportImage</name>
+</context>
+<context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
+    <message>
+        <source>Image Format (</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
+    <message>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>PDF import failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Importing page %1 of %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
+    <message>
+        <source>Error while publishing video to intranet (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Publishing to Intranet in progress %1 %</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
+    <message>
+        <source>Enter</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBMainWindow</name>
+    <message>
+        <source>Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBNetworkAccessManager</name>
+    <message>
+        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to log to Proxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SSL Errors:
+
+%1
+
+%2
+
+Do you want to ignore these errors for this host?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
-        <source>Image Format (</source>
+        <source>Small</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBImportPDF</name>
     <message>
-        <source>Portable Document Format (*.pdf)</source>
+        <source>Medium</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>PDF import failed.</source>
+        <source>Full</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
+        <source>Publish to Intranet</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBIntranetPodcastPublisher</name>
     <message>
-        <source>Error while publishing video to intranet (%1)</source>
+        <source>Publish to Youtube</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Publishing to Intranet in progress %1 %</source>
+        <source>Sankore Cast</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBIntranetPodcastPublishingDialog</name>
+    <name>UBPreferencesController</name>
     <message>
-        <source>Publish</source>
+        <source>version: </source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBKeyboardPalette</name>
     <message>
-        <source>Enter</source>
+        <source>Marker is pressure sensitive</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBMainWindow</name>
     <message>
-        <source>Yes</source>
+        <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No</source>
+        <source>Arabic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ok</source>
+        <source>Bulgarian</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBMessagesDialog</name>
     <message>
-        <source>Close</source>
+        <source>Catalan</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBNetworkAccessManager</name>
     <message>
-        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <source>Czech</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Failed to log to Proxy</source>
+        <source>Danish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>SSL Errors:
-
-%1
-
-%2
-
-Do you want to ignore these errors for this host?</source>
+        <source>German</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Yes</source>
+        <source>Greek</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No</source>
+        <source>English</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBPersistenceManager</name>
     <message>
-        <source>(copy)</source>
+        <source>English UK</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
+        <source>Spanish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <source>French</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBPlatformUtils</name>
     <message>
-        <source>English</source>
+        <source>Swiss French</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Russian</source>
+        <source>Italian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>German</source>
+        <source>Hebrew</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>French</source>
+        <source>Japanese</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Swiss French</source>
+        <source>Korean</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBPodcastController</name>
     <message>
-        <source>Failed to start encoder ...</source>
+        <source>Malagasy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No Podcast encoder available ...</source>
+        <source>Norwegian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Part %1</source>
+        <source>Dutch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>on your desktop ...</source>
+        <source>Polish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>in folder %1</source>
+        <source>Romansh</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Podcast created %1</source>
+        <source>Romanian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Podcast recording error (%1)</source>
+        <source>Russian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Default Audio Input</source>
+        <source>Slovak</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No Audio Recording</source>
+        <source>Swedish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Small</source>
+        <source>Turkish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Medium</source>
+        <source>Chinese</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Full</source>
+        <source>Chinese Simplified</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Publish to Intranet</source>
+        <source>Chinese Traditional</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Publish to Youtube</source>
+        <source>Corsican</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Sankore Cast</source>
+        <source>Hindi</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBPreferencesController</name>
     <message>
-        <source>version: </source>
+        <source>Portuguese</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Marker is pressure sensitive</source>
+        <source>Basque</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1883,6 +2331,17 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2098,13 +2557,13 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Web</source>
+        <source>Embed </source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2451,6 +2910,49 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2722,22 +3224,10 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2790,447 +3280,6 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3243,89 +3292,50 @@ DAMAGES.
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <source>Start up tips</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <source>Show start up tips</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_en_UK.ts b/Sankore-3.1/resources/i18n/sankore_en_UK.ts
index 101744f..06144d3 100644
--- a/Sankore-3.1/resources/i18n/sankore_en_UK.ts
+++ b/Sankore-3.1/resources/i18n/sankore_en_UK.ts
@@ -189,6 +189,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -708,14 +709,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation type="unfinished"></translation>
     </message>
@@ -736,14 +729,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Show Main Screen on Display Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -988,109 +1010,171 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Size:</source>
+        <source>Alpha:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Close</source>
+        <source>Geometry:</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBDesktopPalette</name>
     <message>
-        <source>Capture Part of the Screen</source>
+        <source>Width: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Capture the Screen</source>
+        <source>Height:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show the stylus palette</source>
+        <source>Keep proportions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show Board on Secondary Screen</source>
+        <source>Mode:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show Desktop on Secondary Screen</source>
+        <source>Preview:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show Open-Sankore</source>
+        <source>Close cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBDocumentController</name>
+    <name>UBCreateLinkLabel</name>
     <message>
-        <source>New Folder</source>
+        <source><drop content></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Page %1</source>
+        <source>Images are not accepted</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add Folder of Images</source>
+        <source>Cannot display data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add Images</source>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add Pages from File</source>
+        <source>Add Link to Page</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Duplicating Document %1</source>
+        <source>Add Link to a Web page</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Document %1 copied</source>
+        <source>Drag and drop the audio file from the library in this box</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Remove Page</source>
+        <source>Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
+        <source>Capture Part of the Screen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Remove Document</source>
+        <source>Capture the Screen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
+        <source>Show the stylus palette</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Empty Trash</source>
+        <source>Show Board on Secondary Screen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Are you sure you want to empty trash?</source>
+        <source>Show Desktop on Secondary Screen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Emptying trash</source>
+        <source>Show Open-Sankore</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBDocumentController</name>
     <message>
-        <source>Emptied trash</source>
+        <source>New Folder</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Remove Folder</source>
+        <source>Page %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
+        <source>Add Folder of Images</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No document selected!</source>
+        <source>Add Images</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add Pages from File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Duplicating Document %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Document %1 copied</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -1159,6 +1243,14 @@
         <source>Untitled Documents</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1246,6 +1338,56 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1263,6 +1405,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1331,6 +1572,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1417,6 +1685,10 @@
         <source>Object informations</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1499,6 +1771,14 @@
         <source>Trash</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1532,6 +1812,22 @@
         <source>Visible on Extended Screen</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1547,6 +1843,22 @@
         <source>Go to Content Source</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1567,13 +1879,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1632,214 +1937,357 @@
         <source>Open-Sankore (*.ubz)</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBImportImage</name>
+</context>
+<context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
+    <message>
+        <source>Image Format (</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
+    <message>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>PDF import failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Importing page %1 of %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
+    <message>
+        <source>Error while publishing video to intranet (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Publishing to Intranet in progress %1 %</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
+    <message>
+        <source>Enter</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBMainWindow</name>
+    <message>
+        <source>Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBNetworkAccessManager</name>
+    <message>
+        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to log to Proxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SSL Errors:
+
+%1
+
+%2
+
+Do you want to ignore these errors for this host?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
-        <source>Image Format (</source>
+        <source>Small</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBImportPDF</name>
     <message>
-        <source>Portable Document Format (*.pdf)</source>
+        <source>Medium</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>PDF import failed.</source>
+        <source>Full</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
+        <source>Publish to Intranet</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBIntranetPodcastPublisher</name>
     <message>
-        <source>Error while publishing video to intranet (%1)</source>
+        <source>Publish to Youtube</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Publishing to Intranet in progress %1 %</source>
+        <source>Sankore Cast</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBIntranetPodcastPublishingDialog</name>
+    <name>UBPreferencesController</name>
     <message>
-        <source>Publish</source>
+        <source>version: </source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBKeyboardPalette</name>
     <message>
-        <source>Enter</source>
+        <source>Marker is pressure sensitive</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBMainWindow</name>
     <message>
-        <source>Yes</source>
+        <source>Default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No</source>
+        <source>Arabic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Ok</source>
+        <source>Bulgarian</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBMessagesDialog</name>
     <message>
-        <source>Close</source>
+        <source>Catalan</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBNetworkAccessManager</name>
     <message>
-        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <source>Czech</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Failed to log to Proxy</source>
+        <source>Danish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>SSL Errors:
-
-%1
-
-%2
-
-Do you want to ignore these errors for this host?</source>
+        <source>German</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Yes</source>
+        <source>Greek</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No</source>
+        <source>English</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBPersistenceManager</name>
     <message>
-        <source>(copy)</source>
+        <source>English UK</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
+        <source>Spanish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <source>French</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBPlatformUtils</name>
     <message>
-        <source>English</source>
+        <source>Swiss French</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Russian</source>
+        <source>Italian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>German</source>
+        <source>Hebrew</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>French</source>
+        <source>Japanese</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Swiss French</source>
+        <source>Korean</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBPodcastController</name>
     <message>
-        <source>Failed to start encoder ...</source>
+        <source>Malagasy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No Podcast encoder available ...</source>
+        <source>Norwegian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Part %1</source>
+        <source>Dutch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>on your desktop ...</source>
+        <source>Polish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>in folder %1</source>
+        <source>Romansh</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Podcast created %1</source>
+        <source>Romanian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Podcast recording error (%1)</source>
+        <source>Russian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Default Audio Input</source>
+        <source>Slovak</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No Audio Recording</source>
+        <source>Swedish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Small</source>
+        <source>Turkish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Medium</source>
+        <source>Chinese</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Full</source>
+        <source>Chinese Simplified</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Publish to Intranet</source>
+        <source>Chinese Traditional</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Publish to Youtube</source>
+        <source>Corsican</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Sankore Cast</source>
+        <source>Hindi</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBPreferencesController</name>
     <message>
-        <source>version: </source>
+        <source>Portuguese</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Marker is pressure sensitive</source>
+        <source>Basque</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1883,6 +2331,17 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2098,13 +2557,13 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Web</source>
+        <source>Embed </source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2451,6 +2910,49 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2722,22 +3224,10 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2790,447 +3280,6 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3243,89 +3292,50 @@ DAMAGES.
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <source>Start up tips</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <source>Show start up tips</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_es.ts b/Sankore-3.1/resources/i18n/sankore_es.ts
index f5cee76..a68879b 100644
--- a/Sankore-3.1/resources/i18n/sankore_es.ts
+++ b/Sankore-3.1/resources/i18n/sankore_es.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Favorito</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>Configurar grabación de podcast</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Captura de elemento Flash</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Capturar contenido Flash</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Captura de contenido web</translation>
     </message>
@@ -728,14 +721,6 @@
         <translation>Capturar una ventana</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Integrar contenido web</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Capturar contenido web integrable</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>Mostrar en pantalla</translation>
     </message>
@@ -797,7 +782,7 @@
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation>Importar viejos documentos de Sankore o Uniboard</translation>
+        <translation>Importar documentos antiguos de Sankore o Uniboard</translation>
     </message>
     <message>
         <source>Group items</source>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation>Agrupar</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Favorito</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -859,7 +881,7 @@
     </message>
     <message>
         <source>Save username and password for future use</source>
-        <translation>Guardar nombre de usuario y contraseña para uso futuro</translation>
+        <translation>Importar documentos antiguos de Sankore o Uniboard</translation>
     </message>
 </context>
 <context>
@@ -870,7 +892,7 @@
     </message>
     <message>
         <source>Content is not supported in destination format.</source>
-        <translation>El formato de destino no permite este contenido</translation>
+        <translation>El formato de destino no permite este contenido.</translation>
     </message>
     <message>
         <source>Remove Page</source>
@@ -878,7 +900,7 @@
     </message>
     <message>
         <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
-        <translation>¿Está seguro de que quiere eliminar 1 página del documento seleccionado.'%0?</translation>
+        <translation>¿Está seguro que desea eliminar 1 página del documento seleccionado '%0'?</translation>
     </message>
 </context>
 <context>
@@ -988,12 +1010,110 @@
         <translation>Forma:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Tamaño:</translation>
+        <source>Alpha:</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Cerrar</translation>
+        <source>Geometry:</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Ancho:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Altura:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Mantener proporciones</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Modalidad:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Vista previa:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Cerrar cache</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><soltar contenido></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>No se aceptan imágenes</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>No se puede mostrar la informaciòn</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>El archivo no se reconoce como archivo de audio</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Reproducir un archivo de audio</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Añadir enlace a la página</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Añadir enlace a una página Web</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Arrastre y suelte el archovo de audio desde la biblioteca en este cuadro</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Página siguiente</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Página anterior</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Título de página</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Última página</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Número de página</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Inserte texto url aquí</translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1178,6 @@
         <translation>Eliminar página</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Eliminar documento</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>¿Está seguro de que desea eliminar el documento '%1'?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Vaciar papelera</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>¿Está seguro de que desea vaciar la papelera?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Vaciando papelera</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Papelera vaciada</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Eliminar carpeta</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>¿Está seturo de que desea eliminar la carpeta '%1' y todo su contenido?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>¡Ningún documento seleccionado!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Abrir archivo compatible</translation>
     </message>
@@ -1144,13 +1228,13 @@
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
         <translation>
-            <numerusform>¿Está seguro de que desea eliminar %n página(s) del documento seleccionado '%1'?</numerusform>
-            <numerusform></numerusform>
+            <numerusform>¿Está seguro que desea eliminar %n página del documento seleccionado '%1'?</numerusform>
+            <numerusform>¿Está seguro que desea eliminar %n página(s) del documento seleccionado '%1'?</numerusform>
         </translation>
     </message>
     <message>
         <source>Title page</source>
-        <translation>Portada</translation>
+        <translation>Título de página</translation>
     </message>
     <message>
         <source>Folder does not contain any image files</source>
@@ -1160,6 +1244,14 @@
         <source>Untitled Documents</source>
         <translation>Documentos sin título</translation>
     </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1193,11 +1285,11 @@
     </message>
     <message>
         <source>Import successful.</source>
-        <translation>Importación correcta</translation>
+        <translation>Importación satisfactoria.</translation>
     </message>
     <message>
         <source>Import of file %1 successful.</source>
-        <translation>El archivo %1 se ha importado correctamente</translation>
+        <translation>El archivo %1 se ha importado correctamente.</translation>
     </message>
     <message>
         <source>Importing file %1</source>
@@ -1212,7 +1304,7 @@
     </message>
     <message>
         <source>Title page</source>
-        <translation>Portada</translation>
+        <translation>Título de página</translation>
     </message>
 </context>
 <context>
@@ -1247,6 +1339,57 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Aceptar</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Mis documentos</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Modelos</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Papelera</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Documentos sin título</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Copiando página %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 página copiada</numerusform>
+            <numerusform>%1 páginas copiadas</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1259,12 +1402,111 @@
     <message numerus="yes">
         <source>%1 pages copied</source>
         <translation>
+            <numerusform>%1 página copiada</numerusform>
             <numerusform>%1 páginas copiadas</numerusform>
-            <numerusform></numerusform>
         </translation>
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Descarga fallida.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>El servidor remoto rechazó la conexión (el servidor no está aceptando solicitudes)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>El servidor remoto cerró la conexión inesperadamente, antes de que la respuesta fuera recibida y procesada</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>El nombre del host remoto no fue encontrado (nombre de host inválido)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>La conección con el servidor remoto expiró</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>La operación fue cancelada al abortar() o cerrar() antes de que finalizara.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>EL SSL/TLS handshake falló y el canal encriptado no pudo establecerse. La señal sslErrors() debio haber sido emitida.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>La conexión se detuvo debido a la desconexión de la red, sin embargo, el sistema ha iniciado la búsqueda de otro punto de acceso. La solicitud debe reenviarse y será procesada apenas se reestablezca la conexión.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>La conexióon al servidor proxy fue rechazada (el servidor proxy no está aceptando solicitudes)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>El servidor proxy cerró la conexión inesperadamente, antes de que la respuesta fuera recibida y procesada</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>El nombre del host proxy no fue encontrado (nombre de host proxy inválido)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>La conexión del proxy expiró o el proxy no respondió a tiempo a la solicitud enviada</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>El proxy requiere autorización para aceptar la solicitud pero no aceptó ninguna credencial ofrecida (si existen)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>El acceso al contenido remoto fue denegado (similar al error HTTP 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>La operación solicitada en el contenido remoto no es permitida</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>El contenido remoto no fue encontrado en el servidor (similar al error HTTP 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>El servidor remoto requiere autentificación para entregar el contenido pero las credenciales dadas no fueron aceptadas (si existen)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>La solicitud necesitó enviarse de nuevo, pero falló, por ejemplo, porque la información de carga no pudo leerse una segunda vez.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>El acceso a la red API no puede mantener la solicitud porque el protocolo es desconocido</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>La operación solicitada es inválida para este protocolo</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>Se detectó un error desconocido relacionado con la red</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>Se detectó un error desconocido relacionado con el proxy</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>Se detectó un error desconocido relacionado con el contenido remoto</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>Se detectó una ruptura en el protocolo (error de sintáxis, respuestas inválidas o inesperada, etc.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1302,7 +1544,7 @@
     </message>
     <message>
         <source>Export failed.</source>
-        <translation>Fallo en la exportación</translation>
+        <translation>Fallo en la exportación.</translation>
     </message>
 </context>
 <context>
@@ -1333,6 +1575,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Falla al exportar...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Exportar como archivo UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Exportando documento...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Exportación satisfactoria.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Exportación fallida.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Exportar al formato Sankore UBX</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1394,7 +1663,7 @@
     </message>
     <message>
         <source>Export failed.</source>
-        <translation>Fallo de la exportación.</translation>
+        <translation>Fallo en la exportación.</translation>
     </message>
     <message>
         <source>Export to Web Browser</source>
@@ -1419,6 +1688,10 @@
         <source>Object informations</source>
         <translation>Información del objeto</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">Añadir</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1501,6 +1774,14 @@
         <source>Trash</source>
         <translation>Papelera</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Favoritos</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1534,6 +1815,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Visible en pantalla extendida</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Añadir una acción</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Eliminar enlace a audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Eliminar enlace a página</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Eliminar enlace a web url</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1549,6 +1846,22 @@
         <source>Go to Content Source</source>
         <translation>Ir a fuente de contenido</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Añadir una acción</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Eliminar enlace a audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Eliminar enlace a página</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Eliminar enlace a web url</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1569,13 +1882,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1636,6 +1942,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (set de documentos) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1725,42 +2038,168 @@ Do you want to ignore these errors for this host?</source>
         <translation>Errores SSL: %1 %2 ¿Desea ignorar estos errores para este servidor?</translation>
     </message>
     <message>
-        <source>Yes</source>
-        <translation>Sí</translation>
+        <source>Yes</source>
+        <translation>Sí</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>No</translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translation>(copiar)</translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translation>Pérdida de depósito de documentos</translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore ha perdido acceso al depósito de documentos '%1'. Desafortunadamente la aplicación debe cerrarse para evitar daños en los datos. También se podrían perder los últimos cambios.</translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation>Inglés</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Ruso</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Alemán</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francés</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Francés-Suizo</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation>Fallo al iniciar el codificador...</translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation>Ningún condificador de Podcast disponible...</translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation>Parte %1</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation>en su escritorio...</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation>en carpeta %1</translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation>Podcast creado %1</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation>Error en la grabación de podcast (%1)</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation>Entrada de audio predeterminada</translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation>Ninguna grabación de audio</translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translation>Pequeño</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Medio</translation>
+    </message>
+    <message>
+        <source>Full</source>
+        <translation>Completo</translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translation>Publicar en Intranet</translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translation>Publicar en Youtube</translation>
+    </message>
+    <message>
+        <source>Sankore Cast</source>
+        <translation>Presentación Sankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>version: </source>
+        <translation>versión:</translation>
+    </message>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translation>El marcador es sensible a la presión</translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation>Por defecto</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation></translation>
     </message>
     <message>
-        <source>No</source>
-        <translation>No</translation>
+        <source>Catalan</source>
+        <translation></translation>
     </message>
-</context>
-<context>
-    <name>UBPersistenceManager</name>
     <message>
-        <source>(copy)</source>
-        <translation>(copiar)</translation>
+        <source>Czech</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>Pérdida de depósito de documentos</translation>
+        <source>Danish</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankore ha perdido acceso al depósito de documentos '%1'. Desafortunadamente la aplicación debe cerrarse para evitar daños en los datos. También se podrían perder los últimos cambios.</translation>
+        <source>German</source>
+        <translation>Alemán</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation></translation>
     </message>
-</context>
-<context>
-    <name>UBPlatformUtils</name>
     <message>
         <source>English</source>
         <translation>Inglés</translation>
     </message>
     <message>
-        <source>Russian</source>
-        <translation>Ruso</translation>
+        <source>English UK</source>
+        <translation></translation>
     </message>
     <message>
-        <source>German</source>
-        <translation>Alemán</translation>
+        <source>Spanish</source>
+        <translation>Español</translation>
     </message>
     <message>
         <source>French</source>
@@ -1770,79 +2209,89 @@ Do you want to ignore these errors for this host?</source>
         <source>Swiss French</source>
         <translation>Francés-Suizo</translation>
     </message>
-</context>
-<context>
-    <name>UBPodcastController</name>
     <message>
-        <source>Failed to start encoder ...</source>
-        <translation>Fallo al iniciar el codificador...</translation>
+        <source>Italian</source>
+        <translation></translation>
     </message>
     <message>
-        <source>No Podcast encoder available ...</source>
-        <translation>Ningún condificador de Podcast disponible...</translation>
+        <source>Hebrew</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Part %1</source>
-        <translation>Parte %1</translation>
+        <source>Japanese</source>
+        <translation></translation>
     </message>
     <message>
-        <source>on your desktop ...</source>
-        <translation>en su escritorio...</translation>
+        <source>Korean</source>
+        <translation></translation>
     </message>
     <message>
-        <source>in folder %1</source>
-        <translation>en carpeta %1</translation>
+        <source>Malagasy</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Podcast created %1</source>
-        <translation>Podcast creado %1</translation>
+        <source>Norwegian</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Podcast recording error (%1)</source>
-        <translation>Error en la grabación de podcast (%1)</translation>
+        <source>Dutch</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Default Audio Input</source>
-        <translation>Entrada de audio predeterminada</translation>
+        <source>Polish</source>
+        <translation></translation>
     </message>
     <message>
-        <source>No Audio Recording</source>
-        <translation>Ninguna grabación de audio</translation>
+        <source>Romansh</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Small</source>
-        <translation>Pequeño</translation>
+        <source>Romanian</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Medium</source>
-        <translation>Medio</translation>
+        <source>Russian</source>
+        <translation>Ruso</translation>
     </message>
     <message>
-        <source>Full</source>
-        <translation>Completo</translation>
+        <source>Slovak</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Publish to Intranet</source>
-        <translation>Publicar en Intranet</translation>
+        <source>Swedish</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Publish to Youtube</source>
-        <translation>Publicar en Youtube</translation>
+        <source>Turkish</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Sankore Cast</source>
-        <translation>Presentación Sankore</translation>
+        <source>Chinese</source>
+        <translation></translation>
     </message>
-</context>
-<context>
-    <name>UBPreferencesController</name>
     <message>
-        <source>version: </source>
-        <translation>versión:</translation>
+        <source>Chinese Simplified</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Marker is pressure sensitive</source>
-        <translation>El marcador es sensible a la presión</translation>
+        <source>Chinese Traditional</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1885,6 +2334,17 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation>Mis películas</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Visible la próxima vez</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2100,14 +2560,14 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Página completa</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <source>Embed </source>
+        <translation>Añadir</translation>
     </message>
 </context>
 <context>
@@ -2454,6 +2914,49 @@ Por favor, reinicie la aplicación para acceder a los documentos actualizados.</
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Seleccionar el contenido que desea capturar:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Nombre de la aplicación</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Restricción y responsabilidad. </translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Esta característica fue desarrollada para funcionar en la mayoría de las páginas web más comúnes.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Pro favor, respete los derechos de autor al crear enlaces o al capturar contenido de la web.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2531,7 +3034,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Restore credentials on reboot</source>
-        <translation type="unfinished"></translation>
+        <translation>Restaurar las credenciales al reiniciar</translation>
     </message>
 </context>
 <context>
@@ -2729,22 +3232,10 @@ p, li { white-space: pre-wrap; }
         <translation>Licencias</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Red</translation>
     </message>
@@ -2788,10 +3279,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Contraseña:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="obsolete">ID Planète Sankoré</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Nombre de usuario:</translation>
@@ -2801,542 +3288,62 @@ p, li { white-space: pre-wrap; }
         <translation>Contraseña:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Créditos</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID for exporting file</source>
-        <translation type="unfinished"></translation>
+        <translation>ID de Planète Sankoré para exportar archivo</translation>
     </message>
     <message>
         <source>Restore credentials on reboot  </source>
-        <translation type="unfinished"></translation>
+        <translation>Restaurar las credenciales al reiniciar</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Start up tips</source>
+        <translation>Consejos al inicio</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Show start up tips</source>
+        <translation>Mostrar consejos al inicio</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Idioma</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Seleccione un idioma</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>El nuevo idioma se cargará la próoxima vez que inicie el programa</translation>
     </message>
     <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Salir de Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_eu.ts b/Sankore-3.1/resources/i18n/sankore_eu.ts
new file mode 100644
index 0000000..7d95591
--- /dev/null
+++ b/Sankore-3.1/resources/i18n/sankore_eu.ts
@@ -0,0 +1,3965 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="eu_ES">
+<context>
+    <name>BlackoutWidget</name>
+    <message>
+        <source>Click to Return to Application</source>
+        <translatorcomment>Cliquer pour revenir à l'application</translatorcomment>
+        <translation>Klikatu aplikaziora itzultzeko</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadDialog</name>
+    <message>
+        <source>Downloads</source>
+        <translatorcomment>Téléchargement(s)</translatorcomment>
+        <translation type="unfinished">Kargatzea(k)</translation>
+    </message>
+    <message>
+        <source>Clean Up</source>
+        <translatorcomment>Nettoyer</translatorcomment>
+        <translation>Garbitu</translation>
+    </message>
+    <message>
+        <source>0 Items</source>
+        <translatorcomment>0 élément</translatorcomment>
+        <translation>0 elementu</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadItem</name>
+    <message>
+        <source>Form</source>
+        <translatorcomment>Formulaire</translatorcomment>
+        <translation type="unfinished">Inprimakia</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translatorcomment>Nom de fichier</translatorcomment>
+        <translation>Fitxategi izena</translation>
+    </message>
+    <message>
+        <source>Try Again</source>
+        <translatorcomment>Réessayer</translatorcomment>
+        <translation type="unfinished">Berriz saiatu</translation>
+    </message>
+    <message>
+        <source>Stop</source>
+        <translatorcomment>Arrêter</translatorcomment>
+        <translation type="unfinished">Gelditu</translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <translatorcomment>Ouvrir</translatorcomment>
+        <translation>Ireki</translation>
+    </message>
+</context>
+<context>
+    <name>IntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translatorcomment>Publier Podcast sur YouTube</translatorcomment>
+        <translation type="unfinished">Podcasta YouTuben argitaratu</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translatorcomment>Titre</translatorcomment>
+        <translation>Titulua</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translatorcomment>Description</translatorcomment>
+        <translation type="unfinished">Deskribapena</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translatorcomment>Auteur</translatorcomment>
+        <translation type="unfinished">Egilea</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <source>Board</source>
+        <translatorcomment>Tableau</translatorcomment>
+        <translation>Arbela</translation>
+    </message>
+    <message>
+        <source>Stylus</source>
+        <translatorcomment>Stylets</translatorcomment>
+        <translation>Arkatzak</translation>
+    </message>
+    <message>
+        <source>Backgrounds</source>
+        <translatorcomment>Fonds</translatorcomment>
+        <translation type="unfinished">Gibeleko planoak</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translatorcomment>Annuler</translatorcomment>
+        <translation>Desegin</translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translatorcomment>Rétablir</translatorcomment>
+        <translation>Berregin</translation>
+    </message>
+    <message>
+        <source>Previous</source>
+        <translatorcomment>Précédente</translatorcomment>
+        <translation type="unfinished">Aitzinekoa</translation>
+    </message>
+    <message>
+        <source>PgUp</source>
+        <translatorcomment>Page haut</translatorcomment>
+        <translation type="unfinished">OrrGor</translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translatorcomment>Suivante</translatorcomment>
+        <translation>Ondokoa</translation>
+    </message>
+    <message>
+        <source>PgDown</source>
+        <translatorcomment>Page bas</translatorcomment>
+        <translation type="unfinished">OrrBeh</translation>
+    </message>
+    <message>
+        <source>Documents</source>
+        <translatorcomment>Documents</translatorcomment>
+        <translation>Dokumentuak</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translatorcomment>Web</translatorcomment>
+        <translation type="unfinished">Weba</translation>
+    </message>
+    <message>
+        <source>Ctrl+T</source>
+        <translatorcomment>Ctrl+T</translatorcomment>
+        <translation>Ktrl+T</translation>
+    </message>
+    <message>
+        <source>Grid Light Background</source>
+        <translatorcomment>Grille sur fond clair</translatorcomment>
+        <translation>Hondo argiko sareta</translation>
+    </message>
+    <message>
+        <source>Grid Dark Background</source>
+        <translatorcomment>Grille sur fond foncé</translatorcomment>
+        <translation type="unfinished">Hondo iluneko sareta</translation>
+    </message>
+    <message>
+        <source>Start Screen Recording</source>
+        <translatorcomment>Démarrer l'enregistrement de l'écran</translatorcomment>
+        <translation>Pantailaren grabaketa abiatu</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translatorcomment>Surligneur</translatorcomment>
+        <translation>Gainmarratzailea</translation>
+    </message>
+    <message>
+        <source>Selector</source>
+        <translatorcomment>Sélecteur</translatorcomment>
+        <translation>Hautatzailea</translation>
+    </message>
+    <message>
+        <source>Hand</source>
+        <translatorcomment>Main</translatorcomment>
+        <translation>Eskua</translation>
+    </message>
+    <message>
+        <source>Zoom In</source>
+        <translatorcomment>Zoomer en avant</translatorcomment>
+        <translation type="unfinished">Zooma handitu</translation>
+    </message>
+    <message>
+        <source>Zoom Out</source>
+        <translatorcomment>Zoomer en arrière</translatorcomment>
+        <translation type="unfinished">Zooma ttipitu</translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translatorcomment>Texte</translatorcomment>
+        <translation>Testua</translation>
+    </message>
+    <message>
+        <source>Capture</source>
+        <translatorcomment>Capture</translatorcomment>
+        <translation>Kaptura</translation>
+    </message>
+    <message>
+        <source>Add To Current Page</source>
+        <translatorcomment>Ajouter à la page courante</translatorcomment>
+        <translation type="unfinished">Uneko orrian gehitu</translation>
+    </message>
+    <message>
+        <source>Add To New Page</source>
+        <translatorcomment>Ajouter sur une nouvelle page</translatorcomment>
+        <translation type="unfinished">Orri berri batean gehitu</translation>
+    </message>
+    <message>
+        <source>Add To Library</source>
+        <translatorcomment>Ajouter à la bibliothèque</translatorcomment>
+        <translation type="unfinished">Liburutegian gehitu</translation>
+    </message>
+    <message>
+        <source>Pages</source>
+        <translatorcomment>Pages</translatorcomment>
+        <translation>Orriak</translation>
+    </message>
+    <message>
+        <source>New Page</source>
+        <translatorcomment>Nouvelle page</translatorcomment>
+        <translation>Orri berria</translation>
+    </message>
+    <message>
+        <source>Configure Podcast Recording</source>
+        <translatorcomment>Configurer le podcast</translatorcomment>
+        <translation>Podcasta konfiguratu</translation>
+    </message>
+    <message>
+        <source>Web Trap</source>
+        <translatorcomment>Capturer du contenu Web</translatorcomment>
+        <translation>Web edukia kapturatu</translation>
+    </message>
+    <message>
+        <source>Trap Web Content</source>
+        <translatorcomment>Capturer du contenu Web</translatorcomment>
+        <translation>Web edukia kapturatu</translation>
+    </message>
+    <message>
+        <source>Window Capture</source>
+        <translatorcomment>Capture d'une fenêtre</translatorcomment>
+        <translation>Leiho bat kapturatu</translation>
+    </message>
+    <message>
+        <source>Show on Display</source>
+        <translatorcomment>Montrer sur l'écran de projection</translatorcomment>
+        <translation>Proiekzio pantailan erakutsi</translation>
+    </message>
+    <message>
+        <source>Ctrl+D</source>
+        <translatorcomment>Ctrl+D</translatorcomment>
+        <translation>Ktrl+D</translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <translatorcomment>Ctrl+W</translatorcomment>
+        <translation>Ktrl+W</translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translatorcomment>Trait</translatorcomment>
+        <translation>Marra</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translatorcomment>Quitter</translatorcomment>
+        <translation type="unfinished">Atera</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translatorcomment>Stylet</translatorcomment>
+        <translation>Arkatza</translation>
+    </message>
+    <message>
+        <source>Eraser</source>
+        <translatorcomment>Gomme</translatorcomment>
+        <translation>Goma</translation>
+    </message>
+    <message>
+        <source>Change Background</source>
+        <translatorcomment>Changer le fond d'écran</translatorcomment>
+        <translation type="unfinished">Gibeleko planoa aldatu</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translatorcomment>Page précédente</translatorcomment>
+        <translation type="unfinished">Aitzineko orrialdea</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translatorcomment>Page suivante</translatorcomment>
+        <translation>Ondoko orrialdea</translation>
+    </message>
+    <message>
+        <source>Manage Documents</source>
+        <translatorcomment>Gérer les documents</translatorcomment>
+        <translation>Dokumentuak kudeatu</translation>
+    </message>
+    <message>
+        <source>Web Browsing</source>
+        <translatorcomment>Parcourir le Web</translatorcomment>
+        <translation>Weba arakatu</translation>
+    </message>
+    <message>
+        <source>Small Line</source>
+        <translatorcomment>Ligne fine</translatorcomment>
+        <translation type="unfinished">Marra mehea</translation>
+    </message>
+    <message>
+        <source>Medium Line</source>
+        <translatorcomment>Ligne moyenne</translatorcomment>
+        <translation type="unfinished">Marra ertaina</translation>
+    </message>
+    <message>
+        <source>Large Line</source>
+        <translatorcomment>Ligne large</translatorcomment>
+        <translation type="unfinished">Marra lodia</translation>
+    </message>
+    <message>
+        <source>Smalle Eraser</source>
+        <translatorcomment>Gomme fine</translatorcomment>
+        <translation type="unfinished">Goma mehea</translation>
+    </message>
+    <message>
+        <source>Medium Eraser</source>
+        <translatorcomment>Gomme moyenne</translatorcomment>
+        <translation>Goma ertaina</translation>
+    </message>
+    <message>
+        <source>Large Eraser</source>
+        <translatorcomment>Gomme large</translatorcomment>
+        <translation>Goma lodia</translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translatorcomment>Couleur</translatorcomment>
+        <translation>Kolorea</translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translatorcomment>Précédente</translatorcomment>
+        <translation type="unfinished">Gibelera</translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translatorcomment>Gauche</translatorcomment>
+        <translation>Ezker</translation>
+    </message>
+    <message>
+        <source>Forward</source>
+        <translatorcomment>Suivante</translatorcomment>
+        <translation type="unfinished">Aitzina</translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translatorcomment>Droite</translatorcomment>
+        <translation>Eskuin</translation>
+    </message>
+    <message>
+        <source>Reload</source>
+        <translatorcomment>Recharger</translatorcomment>
+        <translation type="unfinished">Berriz kargatu</translation>
+    </message>
+    <message>
+        <source>Reload Current Page</source>
+        <translatorcomment>Recharger la page courante</translatorcomment>
+        <translation type="unfinished">Uneko orria berriz kargatu</translation>
+    </message>
+    <message>
+        <source>Load Home Page</source>
+        <translatorcomment>Charger la page d'accueil</translatorcomment>
+        <translation type="unfinished">Orri nagusia kargatu</translation>
+    </message>
+    <message>
+        <source>Show Bookmarks</source>
+        <translatorcomment>Afficher les favoris</translatorcomment>
+        <translation>Lastermarkak erakutsi</translation>
+    </message>
+    <message>
+        <source>Add Bookmark</source>
+        <translatorcomment>Ajouter un favori</translatorcomment>
+        <translation type="unfinished">Lastermarka bat gehitu</translation>
+    </message>
+    <message>
+        <source>Display Board</source>
+        <translatorcomment>Afficher le tableau</translatorcomment>
+        <translation>Arbela bistaratu</translation>
+    </message>
+    <message>
+        <source>Ctrl+B</source>
+        <translatorcomment>Ctrl+B</translatorcomment>
+        <translation>Ktrl+B</translation>
+    </message>
+    <message>
+        <source>Erase</source>
+        <translatorcomment>Effacer</translatorcomment>
+        <translation>Ezabatu</translation>
+    </message>
+    <message>
+        <source>Erase Content</source>
+        <translatorcomment>Effacer le contenu</translatorcomment>
+        <translation>Edukia ezabatu</translation>
+    </message>
+    <message>
+        <source>Display Preferences</source>
+        <translatorcomment>Afficher les préférences</translatorcomment>
+        <translation>Hobespenak bistaratu</translation>
+    </message>
+    <message>
+        <source>Show Library</source>
+        <translatorcomment>Afficher la bibliothèque</translatorcomment>
+        <translation>Liburutegia bistaratu</translation>
+    </message>
+    <message>
+        <source>Show Computer Desktop</source>
+        <translatorcomment>Afficher le bureau de l'ordinateur</translatorcomment>
+        <translation>Ordenagailuaren mahaigaina bistaratu</translation>
+    </message>
+    <message>
+        <source>Create a New Folder</source>
+        <translatorcomment>Créer un nouveau dossier</translatorcomment>
+        <translation>Karpeta berria sortu</translation>
+    </message>
+    <message>
+        <source>Create a New Document</source>
+        <translatorcomment>Créer un nouveau document</translatorcomment>
+        <translation>Dokumentu berria sortu</translation>
+    </message>
+    <message>
+        <source>Import a Document</source>
+        <translatorcomment>Importer un document</translatorcomment>
+        <translation type="unfinished">Dokumentu bat inportatu</translation>
+    </message>
+    <message>
+        <source>Export a Document</source>
+        <translatorcomment>Exporter un document</translatorcomment>
+        <translation type="unfinished">Dokumentu bat esportatu</translation>
+    </message>
+    <message>
+        <source>Open Page in Board</source>
+        <translatorcomment>Ouvrir la page dans le tableau</translatorcomment>
+        <translation>Orria arbelan ireki</translation>
+    </message>
+    <message>
+        <source>Duplicate Selected Content</source>
+        <translatorcomment>Dupliquer le contenu sélectionné</translatorcomment>
+        <translation type="unfinished">Hautatu edukia bikoiztu</translation>
+    </message>
+    <message>
+        <source>Delete Selected Content</source>
+        <translatorcomment>Supprimer le contenu sélectionné</translatorcomment>
+        <translation type="unfinished">Hautatu edukia ezabatu</translation>
+    </message>
+    <message>
+        <source>Add Content to Document</source>
+        <translatorcomment>Ajouter un contenu au document</translatorcomment>
+        <translation type="unfinished">Edukia dokumentuan gehitu</translation>
+    </message>
+    <message>
+        <source>Tutorial</source>
+        <translatorcomment>Tutoriels</translatorcomment>
+        <translation type="unfinished">Tutorialak</translation>
+    </message>
+    <message>
+        <source>Show Desktop</source>
+        <translatorcomment>Bureau</translatorcomment>
+        <translation>Mahaigaina</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <translatorcomment>Ctrl+Maj+H</translatorcomment>
+        <translation>Ktrl+Shift+H</translation>
+    </message>
+    <message>
+        <source>Rename Content</source>
+        <translatorcomment>Renommer le contenu</translatorcomment>
+        <translation type="unfinished">Edukia berriz izendatu</translation>
+    </message>
+    <message>
+        <source>Display Tools</source>
+        <translatorcomment>Afficher les outils</translatorcomment>
+        <translation type="unfinished">Tresnak erakutsi</translation>
+    </message>
+    <message>
+        <source>Use Document Wide Size (16/9)</source>
+        <translatorcomment>Utiliser un format large (16/9)</translatorcomment>
+        <translation type="unfinished">Formatu zabala erabili (16/9)</translation>
+    </message>
+    <message>
+        <source>Use Document Regular Size (4/3)</source>
+        <translatorcomment>Utiliser un format normal (4/3)</translatorcomment>
+        <translation type="unfinished">Formatu arrunta erabili (4/3)</translation>
+    </message>
+    <message>
+        <source>Use Custom Document Size</source>
+        <translatorcomment>Utiliser un format de document personnalisé</translatorcomment>
+        <translation type="unfinished">Formatu pertsonalizatua erabili</translation>
+    </message>
+    <message>
+        <source>Stop Loading Web Page</source>
+        <translatorcomment>Arrêter le chargement de la page Web</translatorcomment>
+        <translation type="unfinished">Web orriaren kargatzea geldiarazi</translation>
+    </message>
+    <message>
+        <source>Put Presentation to Sleep</source>
+        <translatorcomment>Mettre la présentation en pause</translatorcomment>
+        <translation>Aurkezpena lotan ezarri</translation>
+    </message>
+    <message>
+        <source>Display Virtual Keyboard</source>
+        <translatorcomment>Afficher le clavier virtuel</translatorcomment>
+        <translation type="unfinished">Teklatu birtuala erakutsi</translation>
+    </message>
+    <message>
+        <source>Record Presentation to Video</source>
+        <translatorcomment>Enregistrer la présentation en vidéo</translatorcomment>
+        <translation>Aurkezpena bideoan grabatu</translation>
+    </message>
+    <message>
+        <source>Erase Items</source>
+        <translatorcomment>Effacer les éléments</translatorcomment>
+        <translation>Elementuak ezabatu</translation>
+    </message>
+    <message>
+        <source>Erase All Items</source>
+        <translatorcomment>Effacer tous les éléments</translatorcomment>
+        <translation>Elementu guztiak ezabatu</translation>
+    </message>
+    <message>
+        <source>Erase Annotations</source>
+        <translatorcomment>Effacer les annotations</translatorcomment>
+        <translation>Oharrak ezabatu</translation>
+    </message>
+    <message>
+        <source>Erase All Annotations</source>
+        <translatorcomment>Effacer toutes les annotations</translatorcomment>
+        <translation>Ohar guztiak ezabatu</translation>
+    </message>
+    <message>
+        <source>Clear Page</source>
+        <translatorcomment>Effacer la page</translatorcomment>
+        <translation type="unfinished">Orria garbitu</translation>
+    </message>
+    <message>
+        <source>Clear All Elements</source>
+        <translatorcomment>Effacer tous les éléments</translatorcomment>
+        <translation type="unfinished">Elementu guztiak ezabatu</translation>
+    </message>
+    <message>
+        <source>Annotate Document</source>
+        <translatorcomment>Annoter le document</translatorcomment>
+        <translation type="unfinished">Oharrak idatzi</translation>
+    </message>
+    <message>
+        <source>Ctrl+I</source>
+        <translatorcomment>Ctrl+I</translatorcomment>
+        <translation>Ktrl+I</translation>
+    </message>
+    <message>
+        <source>Erase Annotation</source>
+        <translatorcomment>Effacer l'annotation</translatorcomment>
+        <translation type="unfinished">Oharra ezabatu</translation>
+    </message>
+    <message>
+        <source>Ctrl+E</source>
+        <translatorcomment>Ctrl+E</translatorcomment>
+        <translation>Ktrl+E</translation>
+    </message>
+    <message>
+        <source>Highlight </source>
+        <translatorcomment>Surligner </translatorcomment>
+        <translation type="unfinished">Gainmarratu</translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <translatorcomment>Ctrl+M</translatorcomment>
+        <translation>Ktrl+M</translation>
+    </message>
+    <message>
+        <source>Select And Modify Objects</source>
+        <translatorcomment>Sélectionner et modifier des objets</translatorcomment>
+        <translation>Objektuak hautatu eta aldatu</translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <translatorcomment>Ctrl+F</translatorcomment>
+        <translation>Ktrl+F</translation>
+    </message>
+    <message>
+        <source>Scroll Page</source>
+        <translatorcomment>Déplacer la page</translatorcomment>
+        <translation>Orria korritu</translation>
+    </message>
+    <message>
+        <source>Laser Pointer</source>
+        <translatorcomment>Utiliser le "pointeur laser"</translatorcomment>
+        <translation>Laser erakuslea baliatu</translation>
+    </message>
+    <message>
+        <source>Virtual Laser Pointer</source>
+        <translatorcomment>Utiliser le "pointeur laser"</translatorcomment>
+        <translation>Laser erakuslea baliatu</translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <translatorcomment>Ctrl+G</translatorcomment>
+        <translation>Ktrl+G</translation>
+    </message>
+    <message>
+        <source>Draw Lines</source>
+        <translatorcomment>Tracer une ligne droite</translatorcomment>
+        <translation type="unfinished">Lerro zuzenak marraztu</translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <translatorcomment>Ctrl+J</translatorcomment>
+        <translation>Ktrl+J</translation>
+    </message>
+    <message>
+        <source>Write Text</source>
+        <translatorcomment>Ecrire un texte</translatorcomment>
+        <translation type="unfinished">Testu bat idatzi</translation>
+    </message>
+    <message>
+        <source>Ctrl+K</source>
+        <translatorcomment>Ctrl+K</translatorcomment>
+        <translation>Ktrl+K</translation>
+    </message>
+    <message>
+        <source>Add Item To Current Page</source>
+        <translatorcomment>Ajouter l'élément à la page courante</translatorcomment>
+        <translation type="unfinished">Elementua uneko orrian gehitu</translation>
+    </message>
+    <message>
+        <source>Add Item To New Page</source>
+        <translatorcomment>Ajouter l'élément à une nouvelle page</translatorcomment>
+        <translation type="unfinished">Elementua orri berrian gehitu</translation>
+    </message>
+    <message>
+        <source>Add Item To Library</source>
+        <translatorcomment>Ajouter l'élément à la bibliothèque</translatorcomment>
+        <translation type="unfinished">Elementua liburutegian gehitu</translation>
+    </message>
+    <message>
+        <source>Create a New Page</source>
+        <translatorcomment>Créer une nouvelle page</translatorcomment>
+        <translation type="unfinished">Beste orri bat sortu</translation>
+    </message>
+    <message>
+        <source>Duplicate Page</source>
+        <translatorcomment>Dupliquer la page</translatorcomment>
+        <translation>Orria bikoiztu</translation>
+    </message>
+    <message>
+        <source>Duplicate the Current Page</source>
+        <translatorcomment>Dupliquer la page courante</translatorcomment>
+        <translation>Uneko orria bikoiztu</translation>
+    </message>
+    <message>
+        <source>Import Page</source>
+        <translatorcomment>Importer une page</translatorcomment>
+        <translation>Orria inportatu</translation>
+    </message>
+    <message>
+        <source>Import an External Page</source>
+        <translatorcomment>Importer une page externe</translatorcomment>
+        <translation>Kanpoko orri bat inportatu</translation>
+    </message>
+    <message>
+        <source>Pause</source>
+        <translatorcomment>Pause</translatorcomment>
+        <translation>Pausa</translation>
+    </message>
+    <message>
+        <source>Pause Podcast Recording</source>
+        <translatorcomment>Mettre en pause l'enregistrement</translatorcomment>
+        <translation>Grabaketa pausan ezarri</translation>
+    </message>
+    <message>
+        <source>Podcast Config</source>
+        <translatorcomment>Configuration du podcast</translatorcomment>
+        <translation>Poscastaren ezarpenak</translation>
+    </message>
+    <message>
+        <source>Open the tutorial</source>
+        <translatorcomment>Ouvrir les tutoriels</translatorcomment>
+        <translation type="unfinished">Tutorialak ireki</translation>
+    </message>
+    <message>
+        <source>Check Update</source>
+        <translatorcomment>Contrôler la mise à jour</translatorcomment>
+        <translation type="unfinished">Eguneratzeak egiaztatu</translation>
+    </message>
+    <message>
+        <source>Ctrl+H</source>
+        <translatorcomment>Ctrl+H</translatorcomment>
+        <translation>Ktrl+H</translation>
+    </message>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translatorcomment>Capturer une partie de l'écran</translatorcomment>
+        <translation>Pantailaren zati bat kapturatu</translation>
+    </message>
+    <message>
+        <source>Custom Capture</source>
+        <translatorcomment>Capture personnalisée</translatorcomment>
+        <translation type="unfinished">Kaptura pertsonalizatuak</translation>
+    </message>
+    <message>
+        <source>Capture a Window</source>
+        <translatorcomment>Capturer une fenêtre</translatorcomment>
+        <translation>Leiho bat kapturatu</translation>
+    </message>
+    <message>
+        <source>Show Main Screen on Display Screen</source>
+        <translatorcomment>Afficher l'écran principal sur l'écran d'affichage</translatorcomment>
+        <translation type="unfinished">Pantaila nagusia proiekzio pantailan erakutsi</translation>
+    </message>
+    <message>
+        <source>Erase all Annotations</source>
+        <translatorcomment>Effacer toutes les annotations</translatorcomment>
+        <translation>Ohar guztiak ezabatu</translation>
+    </message>
+    <message>
+        <source>eduMedia</source>
+        <translatorcomment>eduMedia</translatorcomment>
+        <translation>eduMedia</translation>
+    </message>
+    <message>
+        <source>Import eduMedia simulation</source>
+        <translatorcomment>Importer une simulation eduMedia</translatorcomment>
+        <translation>eduMedia simulazio bat inportatu</translation>
+    </message>
+    <message>
+        <source>Del</source>
+        <translatorcomment>Supprimer</translatorcomment>
+        <translation>Ezabatu</translation>
+    </message>
+    <message>
+        <source>Add Selected Content to Open Document</source>
+        <translatorcomment>Ajouter le contenu sélectionné au document ouvert</translatorcomment>
+        <translation type="unfinished">Hautatu edukia gehitu ireki dokumentuan</translation>
+    </message>
+    <message>
+        <source>Stop Loading</source>
+        <translatorcomment>Arrêter</translatorcomment>
+        <translation type="unfinished">Kargatzea geldi arazi</translation>
+    </message>
+    <message>
+        <source>Sleep</source>
+        <translatorcomment>Veille</translatorcomment>
+        <translation>Lotan ezarri</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translatorcomment>Clavier virtuel</translatorcomment>
+        <translation type="unfinished">Teklatu birtuala</translation>
+    </message>
+    <message>
+        <source>Plain Light Background</source>
+        <translatorcomment>Fond clair uni</translatorcomment>
+        <translation>Hondo argi soila</translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translatorcomment>Clair</translatorcomment>
+        <translation>Argia</translation>
+    </message>
+    <message>
+        <source>Plain Dark Background</source>
+        <translatorcomment>Fond sombre uni</translatorcomment>
+        <translation>Hondo ilun soila</translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translatorcomment>Sombre</translatorcomment>
+        <translation>Iluna</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translatorcomment>Podcast</translatorcomment>
+        <translation type="unfinished">Podcasta</translation>
+    </message>
+    <message>
+        <source>Record</source>
+        <translatorcomment>Enregistrer</translatorcomment>
+        <translation>Grabatu</translation>
+    </message>
+    <message>
+        <source>Wide Size (16/9)</source>
+        <translatorcomment>Format large (16/9)</translatorcomment>
+        <translation type="unfinished">Formatu zabala (16/9)</translation>
+    </message>
+    <message>
+        <source>Regular Size (4/3)</source>
+        <translatorcomment>Format normal (4/3)</translatorcomment>
+        <translation type="unfinished">Formatu arrunta (4/3)</translation>
+    </message>
+    <message>
+        <source>Custom Size</source>
+        <translatorcomment>Format personnalisé</translatorcomment>
+        <translation type="unfinished">Formatu pertsonalizatua</translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <translatorcomment>Ctrl+L</translatorcomment>
+        <translation>Ktrl+L</translation>
+    </message>
+    <message>
+        <source>Bigger</source>
+        <translatorcomment>Plus grand</translatorcomment>
+        <translation type="unfinished">Handiago</translation>
+    </message>
+    <message>
+        <source>Ctrl++</source>
+        <translatorcomment>Ctrl++</translatorcomment>
+        <translation>Ktrl++</translation>
+    </message>
+    <message>
+        <source>Smaller</source>
+        <translatorcomment>Plus petit</translatorcomment>
+        <translation type="unfinished">Ttipiago</translation>
+    </message>
+    <message>
+        <source>Ctrl+-</source>
+        <translatorcomment>Ctrl+-</translatorcomment>
+        <translation>Ktrl+-</translation>
+    </message>
+    <message>
+        <source>Open in Board</source>
+        <translatorcomment>Ouvrir la page</translatorcomment>
+        <translation>Orria ireki</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translatorcomment>Ctrl+O</translatorcomment>
+        <translation>Ktrl+O</translation>
+    </message>
+    <message>
+        <source>Cut</source>
+        <translatorcomment>Couper</translatorcomment>
+        <translation>Moztu</translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translatorcomment>Copier</translatorcomment>
+        <translation>Kopiatu</translation>
+    </message>
+    <message>
+        <source>Paste</source>
+        <translatorcomment>Coller</translatorcomment>
+        <translation type="unfinished">Kolatu</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translatorcomment>Outils</translatorcomment>
+        <translation>Tresnak</translation>
+    </message>
+    <message>
+        <source>Multi Screen</source>
+        <translatorcomment>Multi-écrans</translatorcomment>
+        <translation type="unfinished">Pantaila anitzekoa</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translatorcomment>Nouveau dossier</translatorcomment>
+        <translation>Karpeta berria</translation>
+    </message>
+    <message>
+        <source>New Document</source>
+        <translatorcomment>Nouveau document</translatorcomment>
+        <translation>Dokumentu berria</translation>
+    </message>
+    <message>
+        <source>Import</source>
+        <translatorcomment>Importer</translatorcomment>
+        <translation>Inportatu</translation>
+    </message>
+    <message>
+        <source>Export</source>
+        <translatorcomment>Exporter</translatorcomment>
+        <translation>Esportatu</translation>
+    </message>
+    <message>
+        <source>Duplicate</source>
+        <translatorcomment>Dupliquer</translatorcomment>
+        <translation type="unfinished">Bikoiztu</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translatorcomment>Supprimer</translatorcomment>
+        <translation>Ezabatu</translation>
+    </message>
+    <message>
+        <source>Add to Working Document</source>
+        <translatorcomment>Ajouter au document</translatorcomment>
+        <translation>Uneko dokumentuari gehitu</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translatorcomment>Ajouter</translatorcomment>
+        <translation>Gehitu</translation>
+    </message>
+    <message>
+        <source>Rename</source>
+        <translatorcomment>Renommer</translatorcomment>
+        <translation type="unfinished">Berriz izendatu</translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <translatorcomment>Accueil</translatorcomment>
+        <translation>Harrera</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translatorcomment>Signets</translatorcomment>
+        <translation>Lastermarkak</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
+        <translatorcomment>Signet</translatorcomment>
+        <translation type="unfinished">Lastermarka</translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translatorcomment>Préférences</translatorcomment>
+        <translation>Hobespenak</translation>
+    </message>
+    <message>
+        <source>Library</source>
+        <translatorcomment>Bibliothèque</translatorcomment>
+        <translation>Liburutegia</translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <translatorcomment>Ctrl+Z</translatorcomment>
+        <translation>Ktrl+Z</translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <translatorcomment>Ctrl+Y</translatorcomment>
+        <translation>Ktrl+Y</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translatorcomment>Open-Sankoré</translatorcomment>
+        <translation type="unfinished">Open-Sankore</translation>
+    </message>
+    <message utf8="true">
+        <source>Quit Open-Sankoré</source>
+        <translatorcomment>Quitter Open-Sankoré</translatorcomment>
+        <translation type="unfinished">Open-Sankoretik atera</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré Editor</source>
+        <translatorcomment>Éditeur Sankoré</translatorcomment>
+        <translation type="unfinished">Sankore editorea</translation>
+    </message>
+    <message utf8="true">
+        <source>Show Open-Sankoré Widgets Editor</source>
+        <translatorcomment>Ouvrir l'éditeur d'appliquettes Open-Sankoré</translatorcomment>
+        <translation type="unfinished">Open Sankoreren trepetxu editorea erakutsi</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré</source>
+        <translatorcomment>Masquer Open-Sankoré</translatorcomment>
+        <translation type="unfinished">Open Sankore ezkutatu</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré Application</source>
+        <translatorcomment>Masquer Open-Sankoré</translatorcomment>
+        <translation type="unfinished">Open Sankore ezkutatu</translation>
+    </message>
+    <message>
+        <source>Import Uniboard Documents</source>
+        <translatorcomment>Importer les documents Uniboard</translatorcomment>
+        <translation>Uniboard dokumentuak inportatu</translation>
+    </message>
+    <message>
+        <source>Import old Sankore or Uniboard documents</source>
+        <translatorcomment>Importer les anciens documents Sankoré ou Uniboard</translatorcomment>
+        <translation type="unfinished">Sankore edo Uniboard dokumentu zaharrak inportatu</translation>
+    </message>
+    <message>
+        <source>Group items</source>
+        <translatorcomment>Grouper les objets</translatorcomment>
+        <translation>Objektuak elkartu</translation>
+    </message>
+    <message>
+        <source>Play</source>
+        <translatorcomment>Jouer - j'hésite avec Lancer (dépend du contexte d'usage)</translatorcomment>
+        <translation type="unfinished">Jo</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translatorcomment>Interagir avec des objets</translatorcomment>
+        <translation>Objektu batzuekin elkarreragin</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translatorcomment>Effacer le fond</translatorcomment>
+        <translation type="unfinished">Gibeleko planoa ezabatu</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translatorcomment>Supprimer le fond</translatorcomment>
+        <translation type="unfinished">Gibeleko planoa kendu</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translatorcomment>Grouper</translatorcomment>
+        <translation>Elkartu</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Lastermarka</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>PasswordDialog</name>
+    <message>
+        <source>Authentication Required</source>
+        <translatorcomment>Authentification requise</translatorcomment>
+        <translation type="unfinished">Autentifikazioa behar da</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translatorcomment>Nom d'utilisateur :</translatorcomment>
+        <translation>Erabiltzaile izena :</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translatorcomment>Mot de passe :</translatorcomment>
+        <translation>Pasahitza :</translation>
+    </message>
+</context>
+<context>
+    <name>ProxyDialog</name>
+    <message>
+        <source>Proxy Authentication</source>
+        <translatorcomment>Authentification sur le proxy</translatorcomment>
+        <translation>Proxy autentifikazioa</translation>
+    </message>
+    <message>
+        <source>Connect to Proxy</source>
+        <translatorcomment>Se connecter par le proxy</translatorcomment>
+        <translation>Proxyari konektatu</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translatorcomment>Nom d'utilisateur :</translatorcomment>
+        <translation>Erabiltzaile izena :</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translatorcomment>Mot de passe :</translatorcomment>
+        <translation>Pasahitza :</translation>
+    </message>
+    <message>
+        <source>Save username and password for future use</source>
+        <translatorcomment>Enregistrer le nom d'utilisateur et le mot de passe pour la prochaine.utilisation</translatorcomment>
+        <translation type="unfinished">Erabiltzaile izena eta pasahitza gogoan atxiki ondoko erabilerako</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Element ID = </source>
+        <translatorcomment>ID de l'élément =</translatorcomment>
+        <translation type="unfinished">Elementuaren IDa = </translation>
+    </message>
+    <message>
+        <source>Content is not supported in destination format.</source>
+        <translatorcomment>Contenu non supporté dans le format souhaité.</translatorcomment>
+        <translation type="unfinished">Edukia ez da aukeratu formatuan onartzen.</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translatorcomment>Supprimer la page</translatorcomment>
+        <translation type="unfinished">Orria kendu</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translatorcomment>Voulez-vous vraiment effacer 1 page de ce document '%0'?</translatorcomment>
+        <translation type="unfinished">'%0' dokumentuaren orri bat kendu nahi duzula segur zaude ?</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplication</name>
+    <message>
+        <source>Page Size</source>
+        <translatorcomment>Taille de la page</translatorcomment>
+        <translation>Orriaren tamaina</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translatorcomment>Podcast</translatorcomment>
+        <translation type="unfinished">Podcasta</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplicationController</name>
+    <message>
+        <source>Web</source>
+        <translatorcomment>Web</translatorcomment>
+        <translation type="unfinished">Weba</translation>
+    </message>
+    <message>
+        <source>New update available, would you go to the web page ?</source>
+        <translatorcomment>Nouvelle mise à jour disponible : voulez-vous accéder à la page de téléchargement ?</translatorcomment>
+        <translation type="unfinished">Eguneratze berri bat eskuragarri da : kargatzeko web-orrira joan nahi duzu ?</translation>
+    </message>
+    <message>
+        <source>No update available</source>
+        <translatorcomment>Pas de mise à jour disponible</translatorcomment>
+        <translation type="unfinished">Ez dago eguneratze eskuragarririk</translation>
+    </message>
+    <message>
+        <source>Update available</source>
+        <translatorcomment>Mise à jour disponible</translatorcomment>
+        <translation type="unfinished">Eguneratzea eskuragarri da</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translatorcomment>Mettre à jour</translatorcomment>
+        <translation>Eguneratu</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardController</name>
+    <message>
+        <source>Downloading content %1 failed</source>
+        <translatorcomment>Erreur de téléchargement du contenu %1</translatorcomment>
+        <translation>%1 edukiaren deskargak huts egin du</translation>
+    </message>
+    <message>
+        <source>Download finished</source>
+        <translatorcomment>Téléchargement terminé</translatorcomment>
+        <translation type="unfinished">Deskarga amaitua</translation>
+    </message>
+    <message>
+        <source>Unknown tool type %1</source>
+        <translatorcomment>Type d'outil inconnu %1</translatorcomment>
+        <translation>%1 tresna mota ezezaguna</translation>
+    </message>
+    <message>
+        <source>Add Item</source>
+        <translatorcomment>Ajouter un élément</translatorcomment>
+        <translation>Elementua gehitu</translation>
+    </message>
+    <message>
+        <source>All Supported (%1)</source>
+        <translatorcomment>Tous (%1)</translatorcomment>
+        <translation>Denak (%1)</translation>
+    </message>
+    <message>
+        <source>Unknown content type %1</source>
+        <translatorcomment>Type de contenu inconnu (%1)</translatorcomment>
+        <translation>Eduki mota ezezaguna (%1)</translation>
+    </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translatorcomment>Supprimer la page %1 du document</translatorcomment>
+        <translation>Dokumentuko %1 orria ezabatu</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translatorcomment>Page %1 supprimée</translatorcomment>
+        <translation type="unfinished">%1 orria ezabatua</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translatorcomment>Echec d'ajout de document : erreur de copie</translatorcomment>
+        <translation type="unfinished">Dokumentu gehitzeak huts egin du : errorea kopiatzean</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translatorcomment>Grouper</translatorcomment>
+        <translation>Elkartu</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translatorcomment>Dégrouper</translatorcomment>
+        <translation type="unfinished">Banandu</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardPaletteManager</name>
+    <message>
+        <source>Error Adding Image to Library</source>
+        <translatorcomment>Erreur lors de l'ajout d'images à la bibliothèque</translatorcomment>
+        <translation type="unfinished">Errorea irudia liburutegian gehitzean</translation>
+    </message>
+    <message>
+        <source>CapturedImage</source>
+        <translatorcomment>Image capturée</translatorcomment>
+        <translation type="unfinished">Irudi kapturatua</translation>
+    </message>
+</context>
+<context>
+    <name>UBCachePropertiesWidget</name>
+    <message>
+        <source>Cache Properties</source>
+        <translatorcomment>Propriétés du cache</translatorcomment>
+        <translation type="unfinished">Cachearen ezarpenak</translation>
+    </message>
+    <message>
+        <source>Color:</source>
+        <translatorcomment>Couleur :</translatorcomment>
+        <translation type="unfinished">Kolorea :</translation>
+    </message>
+    <message>
+        <source>Shape:</source>
+        <translatorcomment>Forme :</translatorcomment>
+        <translation>Forma :</translation>
+    </message>
+    <message>
+        <source>Alpha:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Geometry:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation type="unfinished">Ados</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation type="unfinished">Ondoko orrialdea</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation type="unfinished">Aitzineko orrialdea</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translatorcomment>Capturer une partie de l'écran</translatorcomment>
+        <translation>Pantailaren zati bat kapturatu</translation>
+    </message>
+    <message>
+        <source>Capture the Screen</source>
+        <translatorcomment>Capturer l'écran</translatorcomment>
+        <translation type="unfinished">Pantaila kapturatu</translation>
+    </message>
+    <message>
+        <source>Show the stylus palette</source>
+        <translatorcomment>Afficher la barre d'outils du stylet</translatorcomment>
+        <translation type="unfinished">Arkatzaren tresna-barra erakutsi</translation>
+    </message>
+    <message>
+        <source>Show Board on Secondary Screen</source>
+        <translatorcomment>Afficher le tableau sur l'écran secondaire</translatorcomment>
+        <translation>Arbela bigarren pantailan erakutsi</translation>
+    </message>
+    <message>
+        <source>Show Desktop on Secondary Screen</source>
+        <translatorcomment>Afficher le bureau sur l'écran secondaire</translatorcomment>
+        <translation>Mahaigaina bigarren pantailan erakutsi</translation>
+    </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translatorcomment>Afficher Open-Sankoré</translatorcomment>
+        <translation type="unfinished">Open Sankore erakutsi</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentController</name>
+    <message>
+        <source>Open Supported File</source>
+        <translatorcomment>Ouvrir un fichier compatible</translatorcomment>
+        <translation>Fitxategi bateragarri bat ireki</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translation>Karpeta berria</translation>
+    </message>
+    <message>
+        <source>Add Folder of Images</source>
+        <translatorcomment>Ajouter un dossier d'images</translatorcomment>
+        <translation type="unfinished">Irudi karpeta gehitu</translation>
+    </message>
+    <message>
+        <source>Add Images</source>
+        <translatorcomment>Ajouter des images</translatorcomment>
+        <translation>Irudiak gehitu</translation>
+    </message>
+    <message>
+        <source>Add Pages from File</source>
+        <translatorcomment>Ajouter des pages depuis un fichier</translatorcomment>
+        <translation>Orriak gehitu fitxategi batetik</translation>
+    </message>
+    <message>
+        <source>Duplicating Document %1</source>
+        <translatorcomment>Copie du document %1 en cours</translatorcomment>
+        <translation type="unfinished">%1 dokumentua bikoizten ari</translation>
+    </message>
+    <message>
+        <source>Document %1 copied</source>
+        <translatorcomment>Document %1 copié</translatorcomment>
+        <translation>%1 dokumentua kopiatua</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translatorcomment>Supprimer la page</translatorcomment>
+        <translation type="unfinished">Orria kendu</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translatorcomment>Importation du fichier %1...</translatorcomment>
+        <translation type="unfinished">%1 fitxategia inportatzen ari...</translation>
+    </message>
+    <message>
+        <source>Failed to import file ... </source>
+        <translatorcomment>Impossible d'importer le fichier ...</translatorcomment>
+        <translation type="unfinished">Fitxategiaren inportatzeak huts egin du...</translation>
+    </message>
+    <message>
+        <source>Import all Images from Folder</source>
+        <translatorcomment>Importer toutes les images d'un dossier</translatorcomment>
+        <translation type="unfinished">Karpetako irudi guztiak inportatu</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translatorcomment>Supprimer</translatorcomment>
+        <translation>Ezabatu</translation>
+    </message>
+    <message>
+        <source>Empty</source>
+        <translatorcomment>Vider</translatorcomment>
+        <translation>Hustu</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translatorcomment>Corbeille</translatorcomment>
+        <translation>Zakarrontzia</translation>
+    </message>
+    <message>
+        <source>Open Document</source>
+        <translatorcomment>Ouvrir le document</translatorcomment>
+        <translation>Dokumentua ireki</translation>
+    </message>
+    <message>
+        <source>Add all Images to Document</source>
+        <translatorcomment>Ajouter toutes les images au document</translatorcomment>
+        <translation type="unfinished">Irudi guztiak dokumentuan gehitu</translation>
+    </message>
+    <message>
+        <source>All Images (%1)</source>
+        <translatorcomment>Toutes les images (%1)</translatorcomment>
+        <translation>Irudi guztiak (%1)</translation>
+    </message>
+    <message>
+        <source>Selection does not contain any image files!</source>
+        <translatorcomment>La sélection ne contient aucune image !</translatorcomment>
+        <translation type="unfinished">Hautapenak irudirik ez dauka !</translation>
+    </message>
+    <message>
+        <source>Page %1</source>
+        <translatorcomment>Page %1</translatorcomment>
+        <translation>%1 orria</translation>
+    </message>
+    <message>
+        <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
+        <translatorcomment>Le document '%1' a été créé avec une version plus récente d'Open-Sankoré (%2). En l'ouvrant, vous risquez de perdre certains éléments. Désirez-vous continuer ?</translatorcomment>
+        <translation type="unfinished">'%1' dokumentua Sankoreren bertsio berriago (%2) batekin sortua izan da. Irekiz geroz,  informazio zenbait gal ditzakezu. Segitu nahi duzu ?</translation>
+    </message>
+    <message numerus="yes">
+        <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
+        <translatorcomment>Voulez-vous vraiment effacer %n page de ce document '%1'?</translatorcomment>
+        <translation type="unfinished">
+            <numerusform>Segur zaude '%1' dokumentu horren orri %n kendu nahi duzula ?</numerusform>
+            <numerusform>Segur zaude '%1' dokumentu horren %n orri kendu nahi dituzula ?</numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translatorcomment>Page de titre</translatorcomment>
+        <translation>Titulu orria</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translatorcomment>Page de titre</translatorcomment>
+        <translation>Irudirik ez dago karpetan</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translatorcomment>Documents sans titre</translatorcomment>
+        <translation type="unfinished">Dokumentu izengabeak</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentManager</name>
+    <message>
+        <source>images</source>
+        <translatorcomment>images</translatorcomment>
+        <translation type="unfinished">irudi</translation>
+    </message>
+    <message>
+        <source>videos</source>
+        <translatorcomment>vidéos</translatorcomment>
+        <translation type="unfinished">bideo</translation>
+    </message>
+    <message>
+        <source>objects</source>
+        <translatorcomment>objets</translatorcomment>
+        <translation>objektu</translation>
+    </message>
+    <message>
+        <source>widgets</source>
+        <translatorcomment>appliquettes</translatorcomment>
+        <translation type="unfinished">trepetxuak</translation>
+    </message>
+    <message>
+        <source>All supported files (*.%1)</source>
+        <translatorcomment>Tous les fichiers supportés (*.%1)</translatorcomment>
+        <translation>Fitxategi guztiak (*.%1)</translation>
+    </message>
+    <message>
+        <source>File %1 saved</source>
+        <translatorcomment>Fichier %1 enregistré</translatorcomment>
+        <translation type="unfinished">%1 fitxategia gordea</translation>
+    </message>
+    <message>
+        <source>Inserting page %1 of %2</source>
+        <translatorcomment>Ajout de la page %1 sur %2</translatorcomment>
+        <translation>%2tik %1 orria gehitua</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translatorcomment>Importation réussie.</translatorcomment>
+        <translation type="unfinished">Inportatzea ongi burutu da.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translatorcomment>Importation du document %1 réussie.</translatorcomment>
+        <translation type="unfinished">%1 dokumentuaren inportatzea ongi burutu da.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translatorcomment>Importation de %1 en cours</translatorcomment>
+        <translation type="unfinished">%1 fitxategia inportatzen ari</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentNavigator</name>
+    <message>
+        <source>Page %0</source>
+        <translatorcomment>Page %0</translatorcomment>
+        <translation>%0 orria</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translatorcomment>Page de titre</translatorcomment>
+        <translation>Titulu orria</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentPublisher</name>
+    <message>
+        <source>Export failed.</source>
+        <translatorcomment>Echec de l'export.</translatorcomment>
+        <translation type="unfinished">Esportatzeak huts egin du.</translation>
+    </message>
+    <message>
+        <source>Export canceled ...</source>
+        <translatorcomment>Export annulée ...</translatorcomment>
+        <translation type="unfinished">Esportatzea ezeztatua izan da...</translation>
+    </message>
+    <message>
+        <source>Converting page %1/%2 ...</source>
+        <translatorcomment>Conversion de la page %1/%2 ...</translatorcomment>
+        <translation type="unfinished">%1/%2 orriaren konbertsioa egiten ari ...</translation>
+    </message>
+    <message>
+        <source>Credentials has to not been filled out yet.</source>
+        <translatorcomment>Les nom d'utilisateur et mot de passe n'ont pas été encore renseignés.</translatorcomment>
+        <translation type="unfinished">Erabiltzaile izena eta pasahitza ez dituzu oraino emanak.</translation>
+    </message>
+    <message>
+        <source>Uploading Sankore File on Web.</source>
+        <translatorcomment>Fichier Open-Sankoré en cours de transfert vers Planète-Sankoré.</translatorcomment>
+        <translation type="unfinished">Open-Sankore fitxategia sarean kargatzen ari.</translation>
+    </message>
+    <message>
+        <source>Document uploaded correctly on the web.</source>
+        <translatorcomment>Document Open-Sankoré correctement transféré sur Planète Sankoré.</translatorcomment>
+        <translation type="unfinished">Open-Sankore fitxategia behar bezala sarean kargatu da.</translation>
+    </message>
+    <message>
+        <source>Failed to upload document on the web.</source>
+        <translatorcomment>Echec du transfert du document vers Planète-Sankoré.</translatorcomment>
+        <translation type="unfinished">Dokumentua sarean kargatzeak huts egin du.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation type="unfinished">Onartu</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Utzi</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation type="unfinished">Zakarrontzia</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">%2tik %1orria kopiatzen ari</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>Orri %1 kopiatua</numerusform>
+            <numerusform>%1 orri kopiatuak</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeWidget</name>
+    <message>
+        <source>%1 (copy)</source>
+        <translatorcomment>%1 (copie)</translatorcomment>
+        <translation>%1 (kopia)</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translatorcomment>Copie de la page %1/%2 en cours</translatorcomment>
+        <translation type="unfinished">%2tik %1orria kopiatzen ari</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translatorcomment>%1 page copiée</translatorcomment>
+        <translation>
+            <numerusform>Orri %1 kopiatua</numerusform>
+            <numerusform>%1 orri kopiatuak</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadWidget</name>
+    <message>
+        <source>Downloading files</source>
+        <translatorcomment>Téléchargement des fichiers en cours</translatorcomment>
+        <translation type="unfinished">Fitxategiak kargatzen ari</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translatorcomment>Annuler</translatorcomment>
+        <translation>Utzi</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translatorcomment>Avertissements lors de l'exportation</translatorcomment>
+        <translation>Abisuak agertu dira esportatzerakoan</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportCFF</name>
+    <message>
+        <source>Export to IWB</source>
+        <translatorcomment>Exporter au format CFF (*.iwb)</translatorcomment>
+        <translation>CFF (*.iwb) formatuan esportatu</translation>
+    </message>
+    <message>
+        <source>Export as IWB File</source>
+        <translatorcomment>Exporter au format CFF (*.iwb)</translatorcomment>
+        <translation>CFF (*.iwb) formatuan esportatu</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translatorcomment>Exportation du document...</translatorcomment>
+        <translation type="unfinished">Dokumentua esportatzen ari...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translatorcomment>Export réussi.</translatorcomment>
+        <translation type="unfinished">Esportatzea ongi burutu da.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translatorcomment>Echec de l'export.</translatorcomment>
+        <translation type="unfinished">Esportatzeak huts egin du.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocument</name>
+    <message>
+        <source>Export as UBZ File</source>
+        <translatorcomment>Exporter au format UBZ (*.ubz)</translatorcomment>
+        <translation>UBZ (*.ubz) formatuan esportatu</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translatorcomment>Export réussi.</translatorcomment>
+        <translation type="unfinished">Esportatzea ongi burutu da.</translation>
+    </message>
+    <message>
+        <source>Page</source>
+        <translatorcomment>Page</translatorcomment>
+        <translation type="unfinished">Orria</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translatorcomment>Exportation du document...</translatorcomment>
+        <translation type="unfinished">Dokumentua esportatzen ari...</translation>
+    </message>
+    <message>
+        <source>Exporting %1 %2 of %3</source>
+        <translatorcomment>Exportation %1 %2 sur %3</translatorcomment>
+        <translation type="unfinished">%3tik %1 %2 esportatzen</translation>
+    </message>
+    <message>
+        <source>Export to Sankore Format</source>
+        <translatorcomment>Exporter au format Open-Sankoré</translatorcomment>
+        <translation type="unfinished">Open Sankore formatuan esportatu</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation type="unfinished">Dokumentua esportatzen ari...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation type="unfinished">Esportatzea ongi burutu da.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation type="unfinished">Esportatzeak huts egin du.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBExportFullPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translatorcomment>Exporter au format PDF (*.pdf)</translatorcomment>
+        <translation>PDF (*.pdf) formatuan esportatu</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translatorcomment>Exportation du document...</translatorcomment>
+        <translation type="unfinished">Dokumentua esportatzen ari...</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translatorcomment>Exporter au format PDF</translatorcomment>
+        <translation>PDF formatuan esportatu</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translatorcomment>Export terminé.</translatorcomment>
+        <translation type="unfinished">Esportatzea ongi burutu da.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translatorcomment>Exporter au format PDF (*.pdf)</translatorcomment>
+        <translation>PDF (*.pdf) formatuan esportatu</translation>
+    </message>
+    <message>
+        <source>Exporting page %1 of %2</source>
+        <translatorcomment>Exportation de la page %1 sur %2</translatorcomment>
+        <translation type="unfinished">%2tik %1 orria esportatzen ari</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation type="unfinished">Esportatzea ongi burutu da.</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation type="unfinished">Dokumentua esportatzen ari...</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>PDF formatuan esportatu</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportWeb</name>
+    <message>
+        <source>Page</source>
+        <translation type="unfinished">Orria</translation>
+    </message>
+    <message>
+        <source>Export as Web data</source>
+        <translatorcomment>Exporter en tant que donnée Web</translatorcomment>
+        <translation>Web data gisa esportatu</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation type="unfinished">Dokumentua esportatzen ari...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation type="unfinished">Esportatzea ongi burutu da.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation type="unfinished">Esportatzeak huts egin du.</translation>
+    </message>
+    <message>
+        <source>Export to Web Browser</source>
+        <translatorcomment>Exporter vers un navigateur Web</translatorcomment>
+        <translation type="unfinished">Web nabigatzailera esportatu</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeatureProperties</name>
+    <message>
+        <source>Add to page</source>
+        <translatorcomment>Ajout page j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
+        <translation type="unfinished">Orrian gehitu</translation>
+    </message>
+    <message>
+        <source>Set as background</source>
+        <translatorcomment>Ajout en fond - j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
+        <translation type="unfinished">Hondo gisa gehitu</translation>
+    </message>
+    <message>
+        <source>Add to library</source>
+        <translatorcomment>Ajout bibliothèque - j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
+        <translation>Liburutegian gehitu</translation>
+    </message>
+    <message>
+        <source>Object informations</source>
+        <translatorcomment>Informations</translatorcomment>
+        <translation>Informazioak</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">Gehitu</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesActionBar</name>
+    <message>
+        <source>Add to favorites</source>
+        <translatorcomment>Ajouter aux favoris</translatorcomment>
+        <translation>Gogokoetan gehitu</translation>
+    </message>
+    <message>
+        <source>Share</source>
+        <translatorcomment>Partager</translatorcomment>
+        <translation>Partekatu</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translatorcomment>Rechercher</translatorcomment>
+        <translation>Bilatu</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translatorcomment>Supprimer</translatorcomment>
+        <translation>Ezabatu</translation>
+    </message>
+    <message>
+        <source>Back to folder</source>
+        <translatorcomment>Retour au répertoire</translatorcomment>
+        <translation>Karpetara itzuli</translation>
+    </message>
+    <message>
+        <source>Remove from favorites</source>
+        <translatorcomment>Supprimer des favoris</translatorcomment>
+        <translation>Gogokoetarik kendu</translation>
+    </message>
+    <message>
+        <source>Create new folder</source>
+        <translatorcomment>Créer nouveau dossier</translatorcomment>
+        <translation>Karpeta berria sortu</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translatorcomment>Parcourir le système de fichiers</translatorcomment>
+        <translation>Fitxategi sistema berreskaneatu</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesController</name>
+    <message>
+        <source>ImportedImage</source>
+        <translatorcomment>Image importée</translatorcomment>
+        <translation>Irudi inportatua</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translatorcomment>Sons</translatorcomment>
+        <translation>Audioak</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translatorcomment>Vidéos</translatorcomment>
+        <translation>Bideoak</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translatorcomment>Images</translatorcomment>
+        <translation>Irudiak</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translatorcomment>Animations</translatorcomment>
+        <translation>Animazioak</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translatorcomment>Interactivités</translatorcomment>
+        <translation>Elkarreraginak</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translatorcomment>Applications</translatorcomment>
+        <translation>Aplikazioak</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translatorcomment>Formes</translatorcomment>
+        <translation>Formak</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translatorcomment>Favoris</translatorcomment>
+        <translation>Gogokoak</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translatorcomment>Recherche Web</translatorcomment>
+        <translation type="unfinished">Web bilaketa</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translatorcomment>Corbeille</translatorcomment>
+        <translation>Zakarrontzia</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation type="unfinished">Lastermarkak</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation type="unfinished">Weba</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translatorcomment>Accepter</translatorcomment>
+        <translation>Onartu</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translatorcomment>Annuler</translatorcomment>
+        <translation>Utzi</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translatorcomment>Saisir le nom du nouveau dossier</translatorcomment>
+        <translation type="unfinished">Karpeta berria izendatu</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translatorcomment>Chargement en cours</translatorcomment>
+        <translation type="unfinished">Kargatzen ari</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsGroupContainerItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translatorcomment>Verrouillé</translatorcomment>
+        <translation>Giltzatua</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translatorcomment>Visible sur l'écran étendu</translatorcomment>
+        <translation>Urrungo pantailan ikusgai</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation type="unfinished">Egintza bat gehitu</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translatorcomment>Verrouillé</translatorcomment>
+        <translation>Giltzatua</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translatorcomment>Visible sur l'écran étendu</translatorcomment>
+        <translation>Urrungo pantailan ikusgai</translation>
+    </message>
+    <message>
+        <source>Go to Content Source</source>
+        <translatorcomment>Aller à la source du contenu</translatorcomment>
+        <translation>Edukiaren iturburura joan</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation type="unfinished">Egintza bat gehitu</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
+    <message>
+        <source><Type Text Here></source>
+        <translatorcomment><Saisir votre texte ici></translatorcomment>
+        <translation type="unfinished"><Testua hemen idatz></translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItemDelegate</name>
+    <message>
+        <source>Text Color</source>
+        <translatorcomment>Couleur du texte</translatorcomment>
+        <translation type="unfinished">Testu-kolorea</translation>
+    </message>
+    <message>
+        <source>Editable</source>
+        <translatorcomment>Éditable</translatorcomment>
+        <translation>Editagarri</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translatorcomment>Chargement en cours ...</translatorcomment>
+        <translation type="unfinished">Kargatzen ari...</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItemDelegate</name>
+    <message>
+        <source>Frozen</source>
+        <translatorcomment>Figé</translatorcomment>
+        <translation type="unfinished">Izoztua</translation>
+    </message>
+    <message>
+        <source>Transform as Tool </source>
+        <translatorcomment>Transformer en outil</translatorcomment>
+        <translation>Tresna bilakatu</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportCFF</name>
+    <message>
+        <source>Common File Format (</source>
+        <translatorcomment>Format de fichier CFF (</translatorcomment>
+        <translation>CFF fitxategi formatua (</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translatorcomment>Importation du fichier %1...</translatorcomment>
+        <translation type="unfinished">%1 fitxategia inportatzen ari...</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translatorcomment>Echec de l'import du fichier %1.</translatorcomment>
+        <translation type="unfinished">%1 fitxategiaren inportatzeak huts egin du.</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translatorcomment>Import terminée.</translatorcomment>
+        <translation type="unfinished">Inportatzea ongi burutu da.</translation>
+    </message>
+    <message>
+        <source>Import failed.</source>
+        <translatorcomment>Echec de l'import.</translatorcomment>
+        <translation type="unfinished">Inportatzeak huts egin du.</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocument</name>
+    <message>
+        <source>Importing file %1...</source>
+        <translatorcomment>Importation du fichier %1...</translatorcomment>
+        <translation type="unfinished">%1 fitxategia inportatzen ari...</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translatorcomment>Import terminé.</translatorcomment>
+        <translation type="unfinished">Inportatzea ongi burutu da.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translatorcomment>Échec de l'import du fichier %1.</translatorcomment>
+        <translation type="unfinished">%1 fitxategiaren inportatzeak huts egin du.</translation>
+    </message>
+    <message>
+        <source>Open-Sankore (*.ubz)</source>
+        <translatorcomment>Open-Sankoré (*.ubz)</translatorcomment>
+        <translation type="unfinished">Open-Sankore (*.ubz)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
+    <message>
+        <source>Image Format (</source>
+        <translatorcomment>Format d'image (</translatorcomment>
+        <translation>Irudi formatua (</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
+    <message>
+        <source>Portable Document Format (*.pdf)</source>
+        <translatorcomment>Format PDF (*.pdf)</translatorcomment>
+        <translation>PDF formatua (*.pdf)</translation>
+    </message>
+    <message>
+        <source>PDF import failed.</source>
+        <translatorcomment>Échec de l'import du fichier PDF.</translatorcomment>
+        <translation type="unfinished">PDF fitxategiaren inportatzeak huts egin du.</translation>
+    </message>
+    <message>
+        <source>Importing page %1 of %2</source>
+        <translatorcomment>Importation de la page %1 sur %2</translatorcomment>
+        <translation type="unfinished">%2tik %1 orria inportatzen ari</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
+    <message>
+        <source>Error while publishing video to intranet (%1)</source>
+        <translatorcomment>Erreur durant la publication de la vidéo sur l'intranet (%1)</translatorcomment>
+        <translation>Errorea bideoa intranetean argitaratzean (%1)</translation>
+    </message>
+    <message>
+        <source>Publishing to Intranet in progress %1 %</source>
+        <translatorcomment>Publication sur l'intranet en cours %1 %</translatorcomment>
+        <translation type="unfinished">Intranetean argitaratzen ari : % %1</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish</source>
+        <translatorcomment>Publier</translatorcomment>
+        <translation>Argitaratu</translation>
+    </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
+    <message>
+        <source>Enter</source>
+        <translatorcomment>Retour</translatorcomment>
+        <translation>Sartu</translation>
+    </message>
+</context>
+<context>
+    <name>UBMainWindow</name>
+    <message>
+        <source>Yes</source>
+        <translatorcomment>Oui</translatorcomment>
+        <translation>Bai</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translatorcomment>Non</translatorcomment>
+        <translation>Ez</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translatorcomment>Ok</translatorcomment>
+        <translation>Ados</translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translatorcomment>Fermer</translatorcomment>
+        <translation type="unfinished">Hetsi</translation>
+    </message>
+</context>
+<context>
+    <name>UBNetworkAccessManager</name>
+    <message>
+        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <translatorcomment><qt>Renseigner le nom de l'utilisateur et le mot de passe pour "%1" à %2</qt></translatorcomment>
+        <translation><qt>Erabiltzaile-izena eta pasahitza sartu "%1"entzat %2an</qt></translation>
+    </message>
+    <message>
+        <source>Failed to log to Proxy</source>
+        <translatorcomment>Connexion au proxy impossible</translatorcomment>
+        <translation>Proxy-ari ezin konektatuz</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translatorcomment>Oui</translatorcomment>
+        <translation>Bai</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translatorcomment>Non</translatorcomment>
+        <translation>Ez</translation>
+    </message>
+    <message>
+        <source>SSL Errors:
+
+%1
+
+%2
+
+Do you want to ignore these errors for this host?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translatorcomment>(copie)</translatorcomment>
+        <translation>(kopia)</translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translatorcomment>Accès perdu vers le répertoire des documents</translatorcomment>
+        <translation type="unfinished">Dokumentu biltegiaren sarbidea galdua</translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translatorcomment>Open-Sankoré a perdu l'accès au répertoire des documents '%1'. L'application doit malheureusement être fermée pour éviter tout risque de corruption de vos fichiers. Les dernières modifications effectuées risquent d'être perdues.</translatorcomment>
+        <translation type="unfinished">Open Sankorek '%1' dokumentu biltegiaren sarbidea galdu du. Zoritxarrez, aplikazioak hetsi beharko du fitxategien ez hondatzeko. Azken aldaketak gal litezke.</translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translatorcomment>Anglais</translatorcomment>
+        <translation>Ingelesa</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translatorcomment>Russe</translatorcomment>
+        <translation>Errusiera</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translatorcomment>Allemand</translatorcomment>
+        <translation>Alemana</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translatorcomment>Français</translatorcomment>
+        <translation>Frantsesa</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translatorcomment>Français suisse</translatorcomment>
+        <translation type="unfinished">Suitzako frantsesa</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translatorcomment>Échec du démarrage de l'encodeur...</translatorcomment>
+        <translation>Kodetzailearen abiatzeak huts egin du...</translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translatorcomment>Aucun encodeur disponible.pour le podcast...</translatorcomment>
+        <translation>Podcast kodetzailea ez dago eskuragarri...</translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translatorcomment>Partie %1</translatorcomment>
+        <translation>%1 partea</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translatorcomment>sur le bureau ...</translatorcomment>
+        <translation>Mahaigainean...</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translatorcomment>dans le dossier %1</translatorcomment>
+        <translation>%1 karpetan</translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translatorcomment>Podcast créé %1</translatorcomment>
+        <translation>Podcast sortua %1</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translatorcomment>Erreur d'enregistrement du podcast (%1)</translatorcomment>
+        <translation type="unfinished">Errorea podcasta grabatzean (%1)</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translatorcomment>Entrée audio par défaut</translatorcomment>
+        <translation type="unfinished">Audio sarrera lehenetsia</translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translatorcomment>Pas d'enregistrement audio</translatorcomment>
+        <translation>Audio grabaketarik ez dago</translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translatorcomment>Petit</translatorcomment>
+        <translation type="unfinished">Ttipia</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translatorcomment>Moyen</translatorcomment>
+        <translation>Ertaina</translation>
+    </message>
+    <message>
+        <source>Full</source>
+        <translatorcomment>Maximum</translatorcomment>
+        <translation>Osoa</translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translatorcomment>Publier sur l'intranet</translatorcomment>
+        <translation type="unfinished">Intranetean argitaratu</translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translatorcomment>Publier sur Youtube</translatorcomment>
+        <translation>YouTuben argitaratu</translation>
+    </message>
+    <message>
+        <source>Sankore Cast</source>
+        <translatorcomment>Podcast Open-Sankoré</translatorcomment>
+        <translation type="unfinished">Open Sankore podcasta</translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translatorcomment>Stylet sensible à la pression</translatorcomment>
+        <translation>Arkatz presio-sentikorra</translation>
+    </message>
+    <message>
+        <source>version: </source>
+        <translatorcomment>version :</translatorcomment>
+        <translation>bertsioa :</translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation type="unfinished">Alemana</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation type="unfinished">Ingelesa</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation type="unfinished">Frantsesa</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation type="unfinished">Suitzako frantsesa</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation type="unfinished">Errusiera</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBProxyLoginDlg</name>
+    <message>
+        <source>Proxy Login</source>
+        <translatorcomment>Identification sur le Proxy</translatorcomment>
+        <translation>Identifikazioa Proxyan</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translatorcomment>Nom d'utilisateur :</translatorcomment>
+        <translation>Erabiltzaile izena :</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translatorcomment>Mot de passe :</translatorcomment>
+        <translation>Pasahitza :</translation>
+    </message>
+</context>
+<context>
+    <name>UBPublicationDlg</name>
+    <message>
+        <source>Publish document on the web</source>
+        <translatorcomment>Publier un fichier Open-Sankoré sur Planète-Sankoré</translatorcomment>
+        <translation type="unfinished">Open Sankore dokumentua sarean argitaratu</translation>
+    </message>
+    <message>
+        <source>Title:</source>
+        <translatorcomment>Titre :</translatorcomment>
+        <translation>Titulua :</translation>
+    </message>
+    <message>
+        <source>Description:</source>
+        <translatorcomment>Description :</translatorcomment>
+        <translation>Azalpena :</translation>
+    </message>
+    <message>
+        <source>Publish</source>
+        <translatorcomment>Publier</translatorcomment>
+        <translation>Argitaratu</translation>
+    </message>
+</context>
+<context>
+    <name>UBSettings</name>
+    <message>
+        <source>My Movies</source>
+        <translatorcomment>Mes films</translatorcomment>
+        <translation type="unfinished">Nire bideoak</translation>
+    </message>
+    <message>
+        <source>/Web</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBTGActionWidget</name>
+    <message>
+        <source>Teacher</source>
+        <translatorcomment>Enseignant</translatorcomment>
+        <translation type="unfinished">Irakaslea</translation>
+    </message>
+    <message>
+        <source>Student</source>
+        <translatorcomment>Elève/Etudiant</translatorcomment>
+        <translation type="unfinished">Ikaslea</translation>
+    </message>
+    <message>
+        <source>Type task here ...</source>
+        <translatorcomment>Proposer une action ici ...</translatorcomment>
+        <translation type="unfinished">Egintza bat proposatu hemen ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGMediaWidget</name>
+    <message>
+        <source>drop media here ...</source>
+        <translatorcomment>Glisser un média ici ...</translatorcomment>
+        <translation type="unfinished">Media bat hona lerratu...</translation>
+    </message>
+    <message>
+        <source>Type title here...</source>
+        <translatorcomment>Renseigner le titre ici ...</translatorcomment>
+        <translation>Titulua hemen ezarri...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGUrlWidget</name>
+    <message>
+        <source>Insert link title here...</source>
+        <translatorcomment>Renseigner le titre du lien ici ...</translatorcomment>
+        <translation>Loturaren titulua hemen ezarri...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherBarWidget</name>
+    <message>
+        <source></source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuideEditionWidget</name>
+    <message>
+        <source>Type title here ...</source>
+        <translatorcomment>Renseigner le titre de l'activité...</translatorcomment>
+        <translation>Jardueraren titulua hemen ezarri...</translation>
+    </message>
+    <message>
+        <source>Type comment here ...</source>
+        <translatorcomment>Renseigner le commentaire ici ...</translatorcomment>
+        <translation type="unfinished">Iruzkina hemen ezarri...</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translatorcomment>Ajouter une action</translatorcomment>
+        <translation type="unfinished">Egintza bat gehitu</translation>
+    </message>
+    <message>
+        <source>Add a media</source>
+        <translatorcomment>Ajouter un média</translatorcomment>
+        <translation>Media bat gehitu</translation>
+    </message>
+    <message>
+        <source>Add a link</source>
+        <translatorcomment>Ajouter un lien web</translatorcomment>
+        <translation>Internet lotura bat gehitu</translation>
+    </message>
+    <message>
+        <source>Page: %0</source>
+        <translatorcomment>Page: %0</translatorcomment>
+        <translation>Orria : %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePageZeroWidget</name>
+    <message>
+        <source>Type session title here ...</source>
+        <translatorcomment>Renseigner le titre de la séance ...</translatorcomment>
+        <translation type="unfinished">Saioren titulua hemen ezarri...</translation>
+    </message>
+    <message>
+        <source>Author(s)</source>
+        <translatorcomment>Auteur(s) :</translatorcomment>
+        <translation type="unfinished">Egilea(k) :</translation>
+    </message>
+    <message>
+        <source>Type authors here ...</source>
+        <translatorcomment>Ajouter les auteurs ici ...</translatorcomment>
+        <translation>Autoreak hemen gehitu...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translatorcomment>Objectif(s) de la séance :</translatorcomment>
+        <translation type="unfinished">Saioaren helburua(k) :</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translatorcomment>Ajouter les objectifs ici ...</translatorcomment>
+        <translation>Helburuak hemen gehitu...</translation>
+    </message>
+    <message>
+        <source>Resource indexing</source>
+        <translatorcomment>Métadonnées de la ressource</translatorcomment>
+        <translation>Baliabidearen datuak</translation>
+    </message>
+    <message>
+        <source>Keywords:</source>
+        <translatorcomment>Mot(s) clé(s) :</translatorcomment>
+        <translation>Gako-hitza(k) :</translation>
+    </message>
+    <message>
+        <source>Type keywords here ...</source>
+        <translatorcomment>Ajouter le(s) mot(s) clé(s) ici ...</translatorcomment>
+        <translation type="unfinished">Gako-hitza(k) hemen gehitu...</translation>
+    </message>
+    <message>
+        <source>Level:</source>
+        <translatorcomment>Niveau(x) scolaire(s) :</translatorcomment>
+        <translation>Ikasmaila(k) :</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translatorcomment>Discipline(s) :</translatorcomment>
+        <translation>Ikasgaia(k) :</translation>
+    </message>
+    <message>
+        <source>Type:</source>
+        <translatorcomment>Type(s) :</translatorcomment>
+        <translation>Mota(k) :</translation>
+    </message>
+    <message>
+        <source>Licence</source>
+        <translatorcomment>Licence</translatorcomment>
+        <translation>Lizentzia</translation>
+    </message>
+    <message>
+        <source>Attribution CC BY</source>
+        <translatorcomment>Licence recommandée (CC Paternité 3.0)</translatorcomment>
+        <translation type="unfinished">Gomendatu lizentzia (CC-by 3.0 - Aitortu)</translation>
+    </message>
+    <message>
+        <source>Attribution-NoDerivs CC BY-ND</source>
+        <translatorcomment>CC Paternité, Pas de modification</translatorcomment>
+        <translation>CC-by-nd (Aitortu, Eraldaketarik Gabe)</translation>
+    </message>
+    <message>
+        <source>Attribution-ShareAlike CC BY-SA</source>
+        <translatorcomment>CC Paternité, Partage à l'identique</translatorcomment>
+        <translation>CC-by-sa (Aitortu, Partekatu Berdin)</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial CC BY-NC</source>
+        <translatorcomment>CC Paternité, Pas d'utilisation commerciale</translatorcomment>
+        <translation>CC-by-nc (Aitortu, Ez Komertziala)</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
+        <translatorcomment>CC Paternité, Pas d'utilisation commerciale, Pas de modification</translatorcomment>
+        <translation>CC-by-nc-nd (Aitortu, Ez Komertziala, Eraldaketarik Gabe)</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
+        <translatorcomment>CC Paternité, Pas d'utilisation commerciale, Partage à l'identique</translatorcomment>
+        <translation>CC-by-nc-sa (Aitortu, Ez Komertziala, Partekatu Berdin)</translation>
+    </message>
+    <message>
+        <source>Public domain</source>
+        <translatorcomment>Domaine public</translatorcomment>
+        <translation>Jabetza Publikoa</translation>
+    </message>
+    <message>
+        <source>Copyright</source>
+        <translatorcomment>Protection par le droit d'auteur - attention le copyright n'est pas une protection ou une licence puisque ca existe même pour les licences libres les plus ouvertes. C'est simplement la mention détenteur des droits de reproduction (celui qui fixe la licence) . Le terme est donc impropre même en anglais.</translatorcomment>
+        <translation>Copyright</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translatorcomment>Page de titre</translatorcomment>
+        <translation>Titulu orria</translation>
+    </message>
+    <message>
+        <source>Created the:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Updated the:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePresentationWidget</name>
+    <message>
+        <source>Page: %0</source>
+        <translatorcomment>Page: %0</translatorcomment>
+        <translation>Orria : %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBThumbnailAdaptor</name>
+    <message>
+        <source>Generating preview thumbnails ...</source>
+        <translatorcomment>Création de vignettes en cours ...</translatorcomment>
+        <translation type="unfinished">Koadro ttipiaren sortzen ari...</translation>
+    </message>
+    <message>
+        <source>%1 thumbnails generated ...</source>
+        <translatorcomment>%1 vignettes créées ...</translatorcomment>
+        <translation>%1 koadro txiki sortuak...</translation>
+    </message>
+</context>
+<context>
+    <name>UBToolsManager</name>
+    <message>
+        <source>Compass</source>
+        <translatorcomment>Compas</translatorcomment>
+        <translation>Konpasa</translation>
+    </message>
+    <message>
+        <source>Ruler</source>
+        <translatorcomment>Règle</translatorcomment>
+        <translation>Erregela</translation>
+    </message>
+    <message>
+        <source>Protractor</source>
+        <translatorcomment>Rapporteur</translatorcomment>
+        <translation>Angelu-neurgailua</translation>
+    </message>
+    <message>
+        <source>Mask</source>
+        <translatorcomment>Masque</translatorcomment>
+        <translation>Maska</translation>
+    </message>
+    <message>
+        <source>Triangle</source>
+        <translatorcomment>Équerre</translatorcomment>
+        <translation>Eskuaira</translation>
+    </message>
+    <message>
+        <source>Magnifier</source>
+        <translatorcomment>Loupe</translatorcomment>
+        <translation>Lupa</translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translatorcomment>Spot</translatorcomment>
+        <translation type="unfinished">Argi-spota</translation>
+    </message>
+</context>
+<context>
+    <name>UBTrapWebPageContentController</name>
+    <message>
+        <source>Whole page</source>
+        <translation type="unfinished">Orri osoa</translation>
+    </message>
+    <message>
+        <source>Embed </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBUpdateDlg</name>
+    <message>
+        <source>Document updater</source>
+        <translatorcomment>Mise à niveau du document</translatorcomment>
+        <translation type="unfinished">Dokumentuaren eguneratzea</translation>
+    </message>
+    <message>
+        <source> files require an update.</source>
+        <translatorcomment>fichiers nécessitant une mise à jour.</translatorcomment>
+        <translation type="unfinished">eguneratzea behar duten fitxategiak.</translation>
+    </message>
+    <message>
+        <source>Backup path: </source>
+        <translatorcomment>Chemin de sauvegarde :</translatorcomment>
+        <translation type="unfinished">Babeskopiaren bidea : </translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translatorcomment>Parcourir</translatorcomment>
+        <translation>Arakatu</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translatorcomment>Mettre à jour</translatorcomment>
+        <translation>Eguneratu</translation>
+    </message>
+    <message>
+        <source>Select a backup folder</source>
+        <translatorcomment>Sélectionner un dossier de sauvegarde</translatorcomment>
+        <translation>Babeskopia karpeta hautatu</translation>
+    </message>
+    <message>
+        <source>An error occured during the update. The files have not been affected.</source>
+        <translatorcomment>Une erreur s'est produite durant la mise à jour. Les fichiers n'ont pas été affectés.</translatorcomment>
+        <translation type="unfinished">Errore bat gertatu da eguneratzen ari zelarik. Fitxategiak ez dira hunkituak izan.</translation>
+    </message>
+    <message>
+        <source>Files update results</source>
+        <translatorcomment>Résultats de la mise à jour</translatorcomment>
+        <translation type="unfinished">Eguneratzearen emaitzak</translation>
+    </message>
+    <message>
+        <source>Updating file </source>
+        <translatorcomment>Mise à jour du fichier</translatorcomment>
+        <translation type="unfinished">Fitxategia eguneratzen ari</translation>
+    </message>
+    <message>
+        <source>Please wait the import process will start soon...</source>
+        <translatorcomment>Merci de patienter, le processus d'import va commencer...</translatorcomment>
+        <translation type="unfinished">Zaude otoi, inportatzea abiatuko da...</translation>
+    </message>
+    <message>
+        <source>Remind me later</source>
+        <translatorcomment>Me le rappeler plus tard</translatorcomment>
+        <translation type="unfinished">Berantago oroitarazi</translation>
+    </message>
+    <message>
+        <source>Files update successful!
+Please reboot the application to access the updated documents.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPluginWidget</name>
+    <message>
+        <source>Loading...</source>
+        <translatorcomment>Chargement...</translatorcomment>
+        <translation type="unfinished">Kargatzen ari...</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPublisher</name>
+    <message>
+        <source>Publish Document on Sankore Web</source>
+        <translatorcomment>Publier un fichier Open-Sankoré sur Planète-Sankoré</translatorcomment>
+        <translation type="unfinished">Open Sankore dokumentua sarean argitaratu</translation>
+    </message>
+</context>
+<context>
+    <name>UBWidgetUniboardAPI</name>
+    <message>
+        <source>%0 called (method=%1, status=%2)</source>
+        <translatorcomment>%0 appelé (méthode=%1, statut=%2)</translatorcomment>
+        <translation>%0 deitua (metodoa=%1, estatusa=%2)</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublisher</name>
+    <message>
+        <source>YouTube authentication failed.</source>
+        <translatorcomment>Échec de l'identification YouTube.</translatorcomment>
+        <translation>YouTube identifikazioak huts egin du.</translation>
+    </message>
+    <message>
+        <source>Error while uploading video to YouTube (%1)</source>
+        <translatorcomment>Erreur lors du transfert de la vidéo vers YouTube (%1)</translatorcomment>
+        <translation type="unfinished">Errorea bideoa Youtubera kargatzean (%1)</translation>
+    </message>
+    <message>
+        <source>Upload to YouTube in progress %1 %</source>
+        <translatorcomment>Transfert vers YouTube en cours %1 %</translatorcomment>
+        <translation type="unfinished">YouTuben kargatzen ari : % %1</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translatorcomment>Open-Sankoré</translatorcomment>
+        <translation type="unfinished">Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translatorcomment>Open-Sankoré</translatorcomment>
+        <translation type="unfinished">Open-Sankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublishingDialog</name>
+    <message>
+        <source>Upload</source>
+        <translatorcomment>Téléchargement</translatorcomment>
+        <translation type="unfinished">Gora kargatzea</translation>
+    </message>
+    <message>
+        <source>Autos & Vehicles</source>
+        <translatorcomment>Auto/Moto</translatorcomment>
+        <translation>Autoak eta ibilgailuak</translation>
+    </message>
+    <message>
+        <source>Music</source>
+        <translatorcomment>Musique</translatorcomment>
+        <translation>Musika</translation>
+    </message>
+    <message>
+        <source>Pets & Animals</source>
+        <translatorcomment>Animaux</translatorcomment>
+        <translation type="unfinished">Maskotak eta animaliak</translation>
+    </message>
+    <message>
+        <source>Sports</source>
+        <translatorcomment>Sports</translatorcomment>
+        <translation>Kirolak</translation>
+    </message>
+    <message>
+        <source>Travel & Events</source>
+        <translatorcomment>Voyages et événements</translatorcomment>
+        <translation>Bidaiak eta gertaerak</translation>
+    </message>
+    <message>
+        <source>Gaming</source>
+        <translatorcomment>Jeux vidéo et autres</translatorcomment>
+        <translation>Jokoak</translation>
+    </message>
+    <message>
+        <source>Comedy</source>
+        <translatorcomment>Humour</translatorcomment>
+        <translation>Komedia</translation>
+    </message>
+    <message>
+        <source>People & Blogs</source>
+        <translatorcomment>Personnalités et blogues</translatorcomment>
+        <translation>Jendea eta blogak</translation>
+    </message>
+    <message>
+        <source>News & Politics</source>
+        <translatorcomment>Actualités et politique</translatorcomment>
+        <translation>Albisteak eta politika</translation>
+    </message>
+    <message>
+        <source>Entertainment</source>
+        <translatorcomment>Divertissement</translatorcomment>
+        <translation>Aisia</translation>
+    </message>
+    <message>
+        <source>Education</source>
+        <translatorcomment>Éducation</translatorcomment>
+        <translation>Hezkuntza</translation>
+    </message>
+    <message>
+        <source>Howto & Style</source>
+        <translatorcomment>Vie pratique et style</translatorcomment>
+        <translation>Argibideak eta estiloa</translation>
+    </message>
+    <message>
+        <source>Nonprofits & Activism</source>
+        <translatorcomment>Organisations à but non lucratif</translatorcomment>
+        <translation>Irabazi-asmorik gabe eta aktibistak</translation>
+    </message>
+    <message>
+        <source>Science & Technology</source>
+        <translatorcomment>Sciences et technologies</translatorcomment>
+        <translation>Zientzia eta teknologia</translation>
+    </message>
+</context>
+<context>
+    <name>UBZoomPalette</name>
+    <message>
+        <source>%1 x</source>
+        <translatorcomment>%1 x</translatorcomment>
+        <translation>%1 x</translation>
+    </message>
+</context>
+<context>
+    <name>UniboardSankoreTransition</name>
+    <message>
+        <source>Import old Uniboard/Sankore documents</source>
+        <translatorcomment>Importer des documents depuis le format Uniboard ou Sankoré</translatorcomment>
+        <translation type="unfinished">Uniboard edo lehengo Sankore dokumentuak inportatu</translation>
+    </message>
+    <message>
+        <source>There are no documents that should be imported</source>
+        <translatorcomment>Aucun document au format Uniboard n'a été trouvé</translatorcomment>
+        <translation type="unfinished">Uniboard formatuko dokumenturik ez da aurkitu</translation>
+    </message>
+</context>
+<context>
+    <name>WBClearButton</name>
+    <message>
+        <source>Clear</source>
+        <translatorcomment>Effacer</translatorcomment>
+        <translation>Garbitu</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadItem</name>
+    <message>
+        <source>Save File</source>
+        <translatorcomment>Enregistrer le fichier</translatorcomment>
+        <translation>Fitxategia gorde</translation>
+    </message>
+    <message>
+        <source>Download canceled: %1</source>
+        <translatorcomment>Téléchargement annulé : %1</translatorcomment>
+        <translation type="unfinished">Behera karga ezeztatua : %1</translation>
+    </message>
+    <message>
+        <source>Error opening saved file: %1</source>
+        <translatorcomment>Erreur durant l'ouverture du fichier : %1</translatorcomment>
+        <translation type="unfinished">Errorea fitxetegia irekitzean : %1</translation>
+    </message>
+    <message>
+        <source>Error saving: %1</source>
+        <translatorcomment>Erreur lors de la sauvegarde du fichier : %1</translatorcomment>
+        <translation>Errorea fitxetegia grabatzean : %1</translation>
+    </message>
+    <message>
+        <source>Network Error: %1</source>
+        <translatorcomment>Erreur réseau : %1</translatorcomment>
+        <translation>Errorea sarean : %1</translation>
+    </message>
+    <message>
+        <source>seconds</source>
+        <translatorcomment>secondes</translatorcomment>
+        <translation>segundo</translation>
+    </message>
+    <message>
+        <source>minutes</source>
+        <translatorcomment>minutes</translatorcomment>
+        <translation>minutu</translation>
+    </message>
+    <message>
+        <source>- %4 %5 remaining</source>
+        <translatorcomment>- %4 %5 restante(s)</translatorcomment>
+        <translation>- %4 %5 gelditzen</translation>
+    </message>
+    <message>
+        <source>%1 of %2 (%3/sec) %4</source>
+        <translatorcomment>%1 de %2 (%3/sec) %4</translatorcomment>
+        <translation>%2etarik %1 (%3/seg) %4</translation>
+    </message>
+    <message>
+        <source>?</source>
+        <comment>unknown file size</comment>
+        <translatorcomment>Taille de fichier inconnue - si je me fie aux commentaires des développeurs...</translatorcomment>
+        <translation>Fitxategi tamaina ezezaguna</translation>
+    </message>
+    <message>
+        <source>%1 of %2 - Stopped</source>
+        <translatorcomment>%1 de %2 - arrêté</translatorcomment>
+        <translation>%2etarik %1 - gelditua</translation>
+    </message>
+    <message>
+        <source>bytes</source>
+        <translatorcomment>octets</translatorcomment>
+        <translation>byte</translation>
+    </message>
+    <message>
+        <source>KB</source>
+        <translatorcomment>Ko</translatorcomment>
+        <translation>kB</translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translatorcomment>Mo</translatorcomment>
+        <translation>mB</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadManager</name>
+    <message>
+        <source>1 Download</source>
+        <translatorcomment>1 téléchargement(s)</translatorcomment>
+        <translation type="unfinished">1 behera karga</translation>
+    </message>
+    <message>
+        <source>%1 Downloads</source>
+        <comment>always >= 2</comment>
+        <translatorcomment>%1 behera karga</translatorcomment>
+        <translation type="unfinished">%1 behera karga</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryModel</name>
+    <message>
+        <source>Title</source>
+        <translatorcomment>Titre</translatorcomment>
+        <translation>Titulua</translation>
+    </message>
+    <message>
+        <source>Address</source>
+        <translatorcomment>Adresse</translatorcomment>
+        <translation>Helbidea</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryTreeModel</name>
+    <message>
+        <source>Earlier Today</source>
+        <translatorcomment>Précédemment dans la journée</translatorcomment>
+        <translation type="unfinished">Egun, goizago</translation>
+    </message>
+    <message>
+        <source>%1 items</source>
+        <translatorcomment>%1 élément(s)</translatorcomment>
+        <translation>%1 elementu</translation>
+    </message>
+</context>
+<context>
+    <name>WBSearchLineEdit</name>
+    <message>
+        <source>Search</source>
+        <translatorcomment>Recherche</translatorcomment>
+        <translation>Bilatu</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabBar</name>
+    <message>
+        <source>New &Tab</source>
+        <translatorcomment>Nouvel &onglet</translatorcomment>
+        <translation type="unfinished">Fitxa &berria</translation>
+    </message>
+    <message>
+        <source>Clone Tab</source>
+        <translatorcomment>Dupliquer onglet</translatorcomment>
+        <translation>Fitxa bikoiztu</translation>
+    </message>
+    <message>
+        <source>&Close Tab</source>
+        <translatorcomment>&Fermer onglet</translatorcomment>
+        <translation type="unfinished">Fitxa &itxi</translation>
+    </message>
+    <message>
+        <source>Close &Other Tabs</source>
+        <translatorcomment>Fermer &autres onglets</translatorcomment>
+        <translation>I&txi beste fitxak</translation>
+    </message>
+    <message>
+        <source>Reload Tab</source>
+        <translatorcomment>Recharger &onglet</translatorcomment>
+        <translation>Berritu Fitxa</translation>
+    </message>
+    <message>
+        <source>Reload All Tabs</source>
+        <translatorcomment>Recharger tous les onglets</translatorcomment>
+        <translation>Berritu fitxa guztiak</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabWidget</name>
+    <message>
+        <source>Recently Closed Tabs</source>
+        <translatorcomment>Onglets récemment fermés</translatorcomment>
+        <translation type="unfinished">Hetsi berri fitxak</translation>
+    </message>
+    <message>
+        <source>(Untitled)</source>
+        <translatorcomment>(Sans titre)</translatorcomment>
+        <translation>(Izengabea)</translation>
+    </message>
+</context>
+<context>
+    <name>WBToolbarSearch</name>
+    <message>
+        <source>Search</source>
+        <translatorcomment>Recherche</translatorcomment>
+        <translation>Bilatu</translation>
+    </message>
+    <message>
+        <source>No Recent Searches</source>
+        <translatorcomment>Aucune recherche récente</translatorcomment>
+        <translation>Oraintsuko bilaketarik ez</translation>
+    </message>
+    <message>
+        <source>Recent Searches</source>
+        <translatorcomment>Historique des recherches</translatorcomment>
+        <translation>Bilaketen historia</translation>
+    </message>
+    <message>
+        <source>Clear Recent Searches</source>
+        <translatorcomment>Supprimer l'historique des recherches</translatorcomment>
+        <translation>Bilaketen historia ezabatu</translation>
+    </message>
+</context>
+<context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select content to trap:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation type="unfinished">Aplikazioaren izena</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>WBWebPage</name>
+    <message>
+        <source>Download</source>
+        <translatorcomment>Téléchargement</translatorcomment>
+        <translation type="unfinished">Behera karga(k)</translation>
+    </message>
+    <message>
+        <source>Add to Current Document</source>
+        <translatorcomment>Ajouter au document courant</translatorcomment>
+        <translation type="unfinished">Uneko dokumentuan gehitu</translation>
+    </message>
+    <message>
+        <source>PDF</source>
+        <translatorcomment>PDF</translatorcomment>
+        <translation>PDF</translation>
+    </message>
+    <message>
+        <source>Error loading page: %1</source>
+        <translatorcomment>Erreur de chargement de la page : %1</translatorcomment>
+        <translation>Errorea %1 orria kargatzean</translation>
+    </message>
+    <message>
+        <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
+        <translatorcomment>Téléchargement du PDF : préférez-vous télécharger le fichier PDF ou l'ajouter à votre document courant ?</translatorcomment>
+        <translation type="unfinished">PDF kargatzea : PDF dokumentua kargatu nahi duzu, ala uneko dokumentuan gehitu nahi duzu ?</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebView</name>
+    <message>
+        <source>Open in New Tab</source>
+        <translatorcomment>Ouvrir dans un nouvel onglet</translatorcomment>
+        <translation type="unfinished">Ireki fitxa berri batean</translation>
+    </message>
+</context>
+<context>
+    <name>YouTubePublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translatorcomment>Publier le podcast sur YouTube</translatorcomment>
+        <translation>Podcasta YouTuben argitaratu</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translatorcomment>Titre du podcast</translatorcomment>
+        <translation>Poscastaren titulua</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translatorcomment>Description</translatorcomment>
+        <translation type="unfinished">Deskribapena</translation>
+    </message>
+    <message>
+        <source>Keywords</source>
+        <translatorcomment>Mots-clés</translatorcomment>
+        <translation>Gako-hitzak</translation>
+    </message>
+    <message>
+        <source>Uniboard</source>
+        <translatorcomment>Open-Sankoré</translatorcomment>
+        <translation type="unfinished">Open-Sankore</translation>
+    </message>
+    <message>
+        <source>Category</source>
+        <translatorcomment>Catégorie</translatorcomment>
+        <translation>Kategoria</translation>
+    </message>
+    <message>
+        <source>YouTube Username</source>
+        <translatorcomment>Nom d'utilisateur YouTube</translatorcomment>
+        <translation>YouTube erabiltzaile-izena</translation>
+    </message>
+    <message>
+        <source>YouTube Password</source>
+        <translatorcomment>Mot de passe YouTube</translatorcomment>
+        <translation>YouTube pasahitza</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translatorcomment>Sauvegarder les paramètres de connexion.</translatorcomment>
+        <translation type="unfinished">Konekzio ezarpenak berrezarri ondoko aldirako</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>brushProperties</name>
+    <message>
+        <source>Opacity</source>
+        <translatorcomment>Opacité</translatorcomment>
+        <translation>Opakutasuna</translation>
+    </message>
+    <message>
+        <source>On Light Background</source>
+        <translatorcomment>Sur fond clair</translatorcomment>
+        <translation>Hondo argian</translation>
+    </message>
+    <message>
+        <source>On Dark Background</source>
+        <translatorcomment>Sur fond foncé</translatorcomment>
+        <translation type="unfinished">Hondo ilunean</translation>
+    </message>
+    <message>
+        <source>Line Width</source>
+        <translatorcomment>Largeur de ligne</translatorcomment>
+        <translation type="unfinished">Marra zabalera</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translatorcomment>Moyenne</translatorcomment>
+        <translation>Ertaina</translation>
+    </message>
+    <message>
+        <source>Strong</source>
+        <translatorcomment>Large</translatorcomment>
+        <translation>Zabala</translation>
+    </message>
+    <message>
+        <source>Fine</source>
+        <translatorcomment>Fine</translatorcomment>
+        <translation type="unfinished">Mehea</translation>
+    </message>
+    <message>
+        <source>Pen is Pressure Sensitive</source>
+        <translatorcomment>Stylet sensible à la pression</translatorcomment>
+        <translation>Arkatz presio-sentikorra</translation>
+    </message>
+</context>
+<context>
+    <name>capturePublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translatorcomment>Dialogue</translatorcomment>
+        <translation>Elkarrizketa</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translatorcomment>Titre</translatorcomment>
+        <translation>Titulua</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translatorcomment>Courriel</translatorcomment>
+        <translation>E-posta</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translatorcomment>Auteur</translatorcomment>
+        <translation type="unfinished">Egilea</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translatorcomment>Description</translatorcomment>
+        <translation type="unfinished">Deskribapena</translation>
+    </message>
+</context>
+<context>
+    <name>documentPublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translatorcomment>Dialogue</translatorcomment>
+        <translation>Elkarrizketa</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translatorcomment>Titre</translatorcomment>
+        <translation>Titulua</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translatorcomment>Courriel</translatorcomment>
+        <translation>E-posta</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation type="unfinished">Egilea</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translatorcomment>Description</translatorcomment>
+        <translation type="unfinished">Deskribapena</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable PDF Version</source>
+        <translatorcomment>Joindre la version PDF</translatorcomment>
+        <translation>PDF bertsioa erantsi</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable Uniboard File (UBZ)</source>
+        <translatorcomment>Joindre le fichier Open-Sankoré (UBZ)</translatorcomment>
+        <translation type="unfinished">Open Sankore fitxategia (UBZ) erantsi</translation>
+    </message>
+    <message>
+        <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
+        <translatorcomment>Attention : ce document contient une vidéo qui ne s'affichera pas correctement sur le Web</translatorcomment>
+        <translation type="unfinished">Kasu : dokumentu honek Interneten gaizki bistaratuko den bideo bat badauka</translation>
+    </message>
+</context>
+<context>
+    <name>documents</name>
+    <message>
+        <source>Uniboard Documents</source>
+        <translatorcomment>Documents Uniboard</translatorcomment>
+        <translation>Uniboard dokumentuak</translation>
+    </message>
+</context>
+<context>
+    <name>preferencesDialog</name>
+    <message>
+        <source>Preferences</source>
+        <translatorcomment>Préférences</translatorcomment>
+        <translation>Hobespenak</translation>
+    </message>
+    <message>
+        <source>Default Settings</source>
+        <translatorcomment>Réglages par défaut</translatorcomment>
+        <translation type="unfinished">Ezarpen lehenetsiak</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translatorcomment>Fermer</translatorcomment>
+        <translation type="unfinished">Hetsi</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translatorcomment>Afficher</translatorcomment>
+        <translation>Bistaratu</translation>
+    </message>
+    <message>
+        <source>Show Page with External Browser</source>
+        <translatorcomment>Ouvrir la page dans un navigateur Web externe</translatorcomment>
+        <translation>Orria kanpoko web arakatzaile batean ireki</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translatorcomment>Clavier virtuel</translatorcomment>
+        <translation type="unfinished">Teklatu birtuala</translation>
+    </message>
+    <message>
+        <source>Keyboard button size:</source>
+        <translatorcomment>Taille des touches du clavier virtuel:</translatorcomment>
+        <translation type="unfinished">Teklatu birtualaren teklen tamaina :</translation>
+    </message>
+    <message>
+        <source>Positioned at the Top (recommended for tablets)</source>
+        <translatorcomment>Positionnée en haut (recommandé pour les tablettes)</translatorcomment>
+        <translation type="unfinished">Gainaldean kokatua (tabletendako gomendatua) </translation>
+    </message>
+    <message>
+        <source>Positioned at the Bottom (recommended for white boards)</source>
+        <translatorcomment>Positionnée en bas (recommandé pour les tableaux interactifs)</translatorcomment>
+        <translation type="unfinished">Behean kokatua (arbela interaktiboentzat gomendatua)</translation>
+    </message>
+    <message>
+        <source>Display Text Under Button</source>
+        <translatorcomment>Afficher les textes sous les boutons</translatorcomment>
+        <translation>Botoien azpiko testua bistaratu</translation>
+    </message>
+    <message>
+        <source>Software Update</source>
+        <translatorcomment>Mise à jour du logiciel</translatorcomment>
+        <translation type="unfinished">Softwarearen eguneratzea</translation>
+    </message>
+    <message>
+        <source>Check software update at launch</source>
+        <translatorcomment>Vérifier la mise à jour au lancement</translatorcomment>
+        <translation type="unfinished">Egiaztatu eguneratzeak softwarearen abiatzean</translation>
+    </message>
+    <message>
+        <source>Internet</source>
+        <translatorcomment>Internet</translatorcomment>
+        <translation>Internet</translation>
+    </message>
+    <message>
+        <source>Home Page:</source>
+        <translatorcomment>Page d'accueil :</translatorcomment>
+        <translation>Harrera orria :</translation>
+    </message>
+    <message utf8="true">
+        <source>version : …</source>
+        <translatorcomment>version :...</translatorcomment>
+        <translation type="unfinished">bertsioa : ...</translation>
+    </message>
+    <message>
+        <source>Toolbar</source>
+        <translatorcomment>Barre d'outils</translatorcomment>
+        <translation type="unfinished">Tresna-barra</translation>
+    </message>
+    <message>
+        <source>Stylus Palette</source>
+        <translatorcomment>Barre du stylet</translatorcomment>
+        <translation>Arkatzaren barra</translation>
+    </message>
+    <message>
+        <source>Horizontal</source>
+        <translatorcomment>Horizontale</translatorcomment>
+        <translation>Horizontala</translation>
+    </message>
+    <message>
+        <source>Vertical</source>
+        <translatorcomment>Verticale</translatorcomment>
+        <translation>Bertikala</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translatorcomment>Stylo</translatorcomment>
+        <translation>Arkatza</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translatorcomment>Surligneur</translatorcomment>
+        <translation>Gainmarratzailea</translation>
+    </message>
+    <message>
+        <source>About</source>
+        <translatorcomment>A propos</translatorcomment>
+        <translation>Honi buruz</translation>
+    </message>
+    <message>
+        <source>Licences</source>
+        <translatorcomment>Licences</translatorcomment>
+        <translation>Lizentziak</translation>
+    </message>
+    <message>
+        <source>zlib</source>
+        <translatorcomment>zlib</translatorcomment>
+        <translation>zlib</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <translatorcomment>Réseau</translatorcomment>
+        <translation>Sarea</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translatorcomment>Open-Sankoré</translatorcomment>
+        <translation type="unfinished">Open-Sankore</translation>
+    </message>
+    <message>
+        <source>Show internal web page content on secondary screen or projector</source>
+        <translatorcomment>Afficher le contenu du navigateur Web interne sur l'écran de projection</translatorcomment>
+        <translation>Barneko web arakatzailea proiekzio pantailan bistaratu</translation>
+    </message>
+    <message>
+        <source>Multi display</source>
+        <translatorcomment>Multi-écrans</translatorcomment>
+        <translation>Pantaila anitzekoa</translation>
+    </message>
+    <message>
+        <source>Swap control display and view display</source>
+        <translatorcomment>Inverser la disposition des écrans</translatorcomment>
+        <translation type="unfinished">Pantailak trukatu</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translatorcomment>Mode</translatorcomment>
+        <translation>Modua</translation>
+    </message>
+    <message>
+        <source>Mode to start in:</source>
+        <translatorcomment>Démarrer en mode :</translatorcomment>
+        <translation>Abiatu modu honetan :</translation>
+    </message>
+    <message>
+        <source>Board</source>
+        <translatorcomment>Tableau</translatorcomment>
+        <translation>Arbela</translation>
+    </message>
+    <message>
+        <source>Desktop</source>
+        <translatorcomment>Bureau</translatorcomment>
+        <translation>Mahaigaina</translation>
+    </message>
+    <message>
+        <source>Proxy User:</source>
+        <translatorcomment>Proxy :</translatorcomment>
+        <translation type="unfinished">Proxy erabil.:</translation>
+    </message>
+    <message>
+        <source>Pass:</source>
+        <translatorcomment>Mot de passe :</translatorcomment>
+        <translation>Pasahitza :</translation>
+    </message>
+    <message>
+        <source>User:</source>
+        <translatorcomment>Nom d'utilisateur :</translatorcomment>
+        <translation>Erabiltzaile izena :</translation>
+    </message>
+    <message>
+        <source>Pass: </source>
+        <translatorcomment>Mot de passe :</translatorcomment>
+        <translation>Pasahitza :</translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translatorcomment>Crédits</translatorcomment>
+        <translation>Kredituak</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translatorcomment>Identifiant Planète Sankoré pour l'export de fichier</translatorcomment>
+        <translation>Planète Sankoré Identifikatzaileak fitxategien esportaziorako</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translatorcomment>Sauvegarder les paramètres de connexion.</translatorcomment>
+        <translation>Konekzio ezarpenak gorde</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start up tips</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show start up tips</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>trapFlashDialog</name>
+    <message>
+        <source>Trap flash</source>
+        <translatorcomment>Capturer du contenu Flash</translatorcomment>
+        <translation>Flash edukia kapturatu</translation>
+    </message>
+    <message>
+        <source>Select a flash to trap</source>
+        <translatorcomment>Sélectionner un contenu Flash à capturer</translatorcomment>
+        <translation type="unfinished">Kapturatzeko Flash edukia hautatu</translation>
+    </message>
+    <message>
+        <source>about:blank</source>
+        <translatorcomment>à propos : vide</translatorcomment>
+        <translation>about:blank</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translatorcomment>Nom de l'application</translatorcomment>
+        <translation>Aplikazioaren izena</translation>
+    </message>
+    <message>
+        <source>Create Application</source>
+        <translatorcomment>Créer une application</translatorcomment>
+        <translation>Aplikazio bat sortu</translation>
+    </message>
+</context>
+</TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_fr.ts b/Sankore-3.1/resources/i18n/sankore_fr.ts
index ca0a799..acafd02 100644
--- a/Sankore-3.1/resources/i18n/sankore_fr.ts
+++ b/Sankore-3.1/resources/i18n/sankore_fr.ts
@@ -73,7 +73,7 @@
     </message>
     <message>
         <source>Stylus</source>
-        <translation>Stylets</translation>
+        <translation>Stylet</translation>
     </message>
     <message>
         <source>Backgrounds</source>
@@ -177,15 +177,7 @@
     </message>
     <message>
         <source>Configure Podcast Recording</source>
-        <translation>Configurer le podcast</translation>
-    </message>
-    <message>
-        <source>Flash Trap</source>
-        <translation>Capturer du contenu Flash</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Capturer du contenu Flash</translation>
+        <translation>Configurer l'enregistrement de l'écran</translation>
     </message>
     <message>
         <source>Web Trap</source>
@@ -309,7 +301,7 @@
     </message>
     <message>
         <source>Add Bookmark</source>
-        <translation>Ajouter un favori</translation>
+        <translation>Ajouter un signet</translation>
     </message>
     <message>
         <source>Display Board</source>
@@ -576,14 +568,6 @@
         <translation>Capturer une fenêtre</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Embarquer un contenu Web</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Capturer un contenu Web embarquable</translation>
-    </message>
-    <message>
         <source>Show Main Screen on Display Screen</source>
         <translation>Afficher l'écran principal sur l'écran d'affichage</translation>
     </message>
@@ -729,7 +713,7 @@
     </message>
     <message>
         <source>Add to Working Document</source>
-        <translation>Ajouter au document</translation>
+        <translation>Ajouter au document courant</translation>
     </message>
     <message>
         <source>Add</source>
@@ -749,7 +733,8 @@
     </message>
     <message>
         <source>Bookmark</source>
-        <translation>Signet</translation>
+        <extracomment>tooltip</extracomment>
+        <translation>Ajouter un signet</translation>
     </message>
     <message>
         <source>Preferences</source>
@@ -824,6 +809,44 @@
         <source>Group</source>
         <translation>Grouper</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translatorcomment>pas certain de la pertinence car le contexte n'est pas précisé ...</translatorcomment>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Télécharger dans</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">la bibliothèque</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Télécharger dans la bibliothèque</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Télécharger sur</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">la page courante</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Télécharger sur la page courante</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ajouter le lien à</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">la bibliothèque</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Ajouter le lien dans la bibliothèque</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ajouter le lien à</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">la page courante</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Ajouter le lien à la page courante</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Signet</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -978,7 +1001,7 @@
     <name>UBCachePropertiesWidget</name>
     <message>
         <source>Cache Properties</source>
-        <translation>Propriétés du cache</translation>
+        <translation>Propriétés du spot</translation>
     </message>
     <message>
         <source>Color:</source>
@@ -989,12 +1012,110 @@
         <translation>Forme :</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Taille :</translation>
+        <source>Alpha:</source>
+        <translation>Alpha :</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Fermer</translation>
+        <source>Geometry:</source>
+        <translation>Géométrie :</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Largeur :</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Hauteur :</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Garder les proportions</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Mode :</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Prévisualisation :</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Fermer le spot</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation>Au clic</translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation>Persistant</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><zone de dépôt></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Images non acceptées</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Ne peut pas afficher la donnée</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Le document déposé n'est pas reconnu comme document audio</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Jouer un document audio</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Ajouter un lien vers une page</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Ajouter un lien vers une page Web</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Glisser et déposer un fichier audio depuis la bibliothèque</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Page suivante</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Page précédente</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Page de titre</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Dernière page</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Page numéro</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Insérer une adresse URL</translation>
     </message>
 </context>
 <context>
@@ -1027,10 +1148,6 @@
 <context>
     <name>UBDocumentController</name>
     <message>
-        <source>No document selected!</source>
-        <translation>Aucun document sélectionné !</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Ouvrir un fichier compatible</translation>
     </message>
@@ -1063,40 +1180,12 @@
         <translation>Supprimer la page</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Supprimer le document</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Vider la corbeille</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Voulez-vous vraiment vider la corbeille ?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Supression du contenu de la corbeille</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Corbeille vidée</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Supprimer le dossier</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Voulez-vous vraiment supprimer le dossier '%1' et tout son contenu ?</translation>
-    </message>
-    <message>
         <source>Importing file %1...</source>
         <translation>Importation du fichier %1...</translation>
     </message>
     <message>
         <source>Failed to import file ... </source>
-        <translation>Impossible d'importer le fichier ...</translation>
+        <translation>Impossible d'importer le fichier ... </translation>
     </message>
     <message>
         <source>Import all Images from Folder</source>
@@ -1131,10 +1220,6 @@
         <translation>La sélection ne contient aucune image !</translation>
     </message>
     <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Voulez-vous vraiment supprimer le document '%1'?</translation>
-    </message>
-    <message>
         <source>Page %1</source>
         <translation>Page %1</translation>
     </message>
@@ -1161,6 +1246,14 @@
         <source>Untitled Documents</source>
         <translation>Documents sans titre</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>Cette opération est irréversible !</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1225,7 +1318,7 @@
     </message>
     <message>
         <source>Export canceled ...</source>
-        <translation>Export annulée ...</translation>
+        <translation>Exportation annulée ...</translation>
     </message>
     <message>
         <source>Converting page %1/%2 ...</source>
@@ -1249,6 +1342,61 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Accepter</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Remplacer</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translatorcomment>j'ai ajouté le terme "Attention" car cette opération est dangereuse (et pas trop conforme aux habitudes ou l'on place en général un n° de version à la fin du fichier pour les différencier et eviter l'effacement)</translatorcomment>
+        <translation>Le nom %1 est déjà utilisé.
+ATTENTION : En gardant ce nom, l'ancien document sera écrasé par le nouveau.
+Un nouveau nom vous permettra un nouveau document.
+</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Mes documents</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Modèles</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Corbeille</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Documents sans titre</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Copie de la page %1/%2 en cours</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 page copiée</numerusform>
+            <numerusform>%1 pages copiées</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1267,6 +1415,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Le téléchargement a échoué.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>le serveur distant refuse l'accès (le serveur n'accepte pas les requêtes)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>le serveur distant a fermé l'accès de manière prématurée avant que la réponse ne soit reçue complètement et ne soit traitée</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>le nom du serveur distant n'a pas été trouvé (nom du serveur distant invalide)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>l'accès au serveur distant a expiré</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>l'opération a été annulée ou fermée avant d'être terminée.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>la connexion SSL/TLS a échoué et la chaîne cryptée n'a pu être établie. Les erreurs SSL () devraient avoir été envoyées.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>la connexion a été interrompue en raison d'une erreur réseau, l'accès a été redirigé. La requête doit être à nouveau présentée et sera traitée dès que la connexion sera rétablie.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>la connexion au serveur proxy a été refusée (le serveur proxy n'accepte pas les requêtes)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>le serveur proxy a fermé la connexion prématurément, avant que la réponse entière n'ait été reçue et traitée</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>le nom d'hôte du proxy n'a pas été trouvé (nom d'hôte du proxy non valide)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>la connexion au proxy a expiré ou le proxy ne répond pas à la requête envoyée</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>le proxy requiert une authentification pour cette demande, mais n'accepte pas les certificats proposés</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>l'accès au contenu distant a été refusé (similaire à l'erreur HTTP 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>l'opération demandée sur le contenu distant n'est pas autorisée</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>le contenu distant n'a pas été trouvé sur le serveur (similaire à l'erreur HTTP 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>le serveur distant requiert une authentification, mais les informations d'identification fournies n'ont pas été acceptées</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>la demande doit être envoyée à nouveau, cela est certainement dû à un problème de relecture.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>l'API d'accès au réseau ne peut pas satisfaire la requête parce que le protocole n'est pas connu</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>l'opération demandée n'est pas valide pour ce protocole</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>une erreur de réseau inconnue a été détectée</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>une erreur de proxy inconnue a été détectée</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>une erreur inconnue liée au contenu distant a été détectée</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>une rupture de protocole a été détectée (erreur d'analyse, réponses non valides ou inattendues...)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1335,6 +1582,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>L'export a échoué...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Exporter comme document UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Exportation du document...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Export réussi.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Echec de l'export.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Exporter au format UBX Open-Sankoré</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1408,22 +1682,26 @@
     <message>
         <source>Add to page</source>
         <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
-        <translation>Ajout page</translation>
+        <translation>Page</translation>
     </message>
     <message>
         <source>Set as background</source>
         <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
-        <translation>Ajout en fond</translation>
+        <translation>Fond</translation>
     </message>
     <message>
         <source>Add to library</source>
         <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
-        <translation>Ajout bibliothèque</translation>
+        <translation>Bibliothèque</translation>
     </message>
     <message>
         <source>Object informations</source>
         <translation>Informations</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation>Ajouter à :</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1506,6 +1784,14 @@
         <source>Trash</source>
         <translation>Corbeille</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Signets</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1539,6 +1825,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Visible sur l'écran étendu</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Ajouter une action</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Retirer le lien audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Retirer le lien sur une page</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Retirer le lien Web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1554,6 +1856,22 @@
         <source>Go to Content Source</source>
         <translation>Aller à la source du contenu</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Ajouter une action</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Retirer le lien audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Retirer le lien sur une page</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Retirer le lien Web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1574,14 +1892,7 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
-</context>
-<context>
-    <name>UBGraphicsWidgetItem</name>
+    <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
         <translation>Chargement en cours ...</translation>
@@ -1602,7 +1913,7 @@
     <name>UBImportCFF</name>
     <message>
         <source>Common File Format (</source>
-        <translation>Format de fichier CFF (</translation>
+        <translation>Format de fichier CFF (*.iwb) (</translation>
     </message>
     <message>
         <source>Importing file %1...</source>
@@ -1610,15 +1921,15 @@
     </message>
     <message>
         <source>Import of file %1 failed.</source>
-        <translation>Echec de l'import du fichier %1.</translation>
+        <translation>Echec de l'importation du fichier %1.</translation>
     </message>
     <message>
         <source>Import successful.</source>
-        <translation>Import terminée.</translation>
+        <translation>Importation terminée.</translation>
     </message>
     <message>
         <source>Import failed.</source>
-        <translation>Echec de l'import.</translation>
+        <translation>Echec de l'importation.</translation>
     </message>
 </context>
 <context>
@@ -1641,6 +1952,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankoré (archive de documents) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1699,7 +2017,7 @@
     </message>
     <message>
         <source>Ok</source>
-        <translation>Ok</translation>
+        <translation>Accepter</translation>
     </message>
 </context>
 <context>
@@ -1727,7 +2045,7 @@
 %2
 
 Do you want to ignore these errors for this host?</source>
-        <translation>Erreur SSL (Secure Socket Layer) sur un serveur sécurisé:
+        <translation>Erreur SSL (Secure Socket Layer) sur un serveur sécurisé :
 
 %1
 
@@ -1779,7 +2097,7 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
     <message>
         <source>Swiss French</source>
-        <translation>Français suisse</translation>
+        <translation>Français (Suisse)</translation>
     </message>
 </context>
 <context>
@@ -1855,6 +2173,142 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
         <source>version: </source>
         <translation>version : </translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>Par défaut</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Arabe</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bulgare</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Catalan</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Tchèque</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Danois</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Allemand</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Grec</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Anglais</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Anglais UK</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Espagnol</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Français</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Français (Suisse)</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Italien</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Hébreux</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Japonais</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Coréen</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Malgache</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Norvégien</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Néerlandais</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Polonais</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Romanche</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Roumain</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Russe</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Slovaque</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Suédois</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Turc</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Chinois</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Chinois simplifié</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Chinois traditionnel</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>Corse</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>Hindi</translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation>Basque</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation>Portugais</translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1896,6 +2350,17 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
         <source>My Movies</source>
         <translation>Mes films</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Visible lors du prochain démarrage</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -1934,6 +2399,7 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     <name>UBTeacherBarWidget</name>
     <message>
         <source></source>
+        <translatorcomment>Je ne sais pas quoi faire avec cet item...</translatorcomment>
         <translation></translation>
     </message>
 </context>
@@ -1945,7 +2411,7 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation>Renseigner le commentaire ici ...</translation>
+        <translation>Ajouter le commentaire ici ...</translation>
     </message>
     <message>
         <source>Add an action</source>
@@ -1961,7 +2427,7 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation>Page: %0</translation>
+        <translation>Page : %0</translation>
     </message>
 </context>
 <context>
@@ -1972,11 +2438,11 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation>Auteur(s) :</translation>
+        <translation>Auteur(s) et crédits :</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation>Ajouter les auteurs ici ...</translation>
+        <translation>Ajouter les auteurs et les crédits des médias ici ...</translation>
     </message>
     <message>
         <source>Objective(s)</source>
@@ -2044,8 +2510,8 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translatorcomment>attention le copyright n'est pas une protection ou une licence puisque ca existe même pour les licences libres les plus ouvertes. C'est simplement la mention détenteur des droits de reproduction (celui qui fixe la licence) . Le terme est donc impropre même en anglais.</translatorcomment>
-        <translation>Protection par le droit d'auteur</translation>
+        <translatorcomment>attention le copyright n'est pas une protection ou une licence puisque ca existe même pour les licences libres les plus ouvertes. C'est simplement la mention détenteur des droits de reproduction (celui qui fixe la licence) . Le terme est donc impropre même en anglais. (je suis d'accord avec la remarque Francois)</translatorcomment>
+        <translation>Protection par le droit d'auteur courant</translation>
     </message>
     <message>
         <source>Created the:
@@ -2066,7 +2532,7 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation>Page: %0</translation>
+        <translation>Page : %0</translation>
     </message>
 </context>
 <context>
@@ -2112,14 +2578,14 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Page complète</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <source>Embed </source>
+        <translation>Embarqué </translation>
     </message>
 </context>
 <context>
@@ -2164,11 +2630,11 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Updating file </source>
-        <translation>Mise à jour du fichier</translation>
+        <translation>Mise à jour du fichier </translation>
     </message>
     <message>
         <source>Please wait the import process will start soon...</source>
-        <translation>Merci de patienter, le processus d'import va commencer...</translation>
+        <translation>Merci de patienter : le processus d'importation va commencer...</translation>
     </message>
     <message>
         <source>Remind me later</source>
@@ -2323,7 +2789,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Error saving: %1</source>
-        <translation>Erreur lors de la sauvegarde du fichier : %1</translation>
+        <translation>Erreur lors de l'enregistrement du fichier : %1</translation>
     </message>
     <message>
         <source>Network Error: %1</source>
@@ -2339,7 +2805,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>- %4 %5 remaining</source>
-        <translation>- %4 %5 restante(s)</translation>
+        <translation>- %4 %5 restantes</translation>
     </message>
     <message>
         <source>%1 of %2 (%3/sec) %4</source>
@@ -2372,12 +2838,12 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     <name>WBDownloadManager</name>
     <message>
         <source>1 Download</source>
-        <translation>1 téléchargement(s)</translation>
+        <translation>1 téléchargement</translation>
     </message>
     <message>
         <source>%1 Downloads</source>
         <comment>always >= 2</comment>
-        <translation>%1 téléchargement(s)</translation>
+        <translation>%1 téléchargements</translation>
     </message>
 </context>
 <context>
@@ -2467,6 +2933,53 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Sélectionner du contenu à capturer :</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Nom de l'application</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Restriction et mise en garde.</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>La capture de contenu fonctionne sur les pages Web les plus courantes.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Veuillez respecter les droits d'auteur lors de la capture de contenu depuis le Web.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>Télécharger dans
+la bibliothèque</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>Télécharger sur 
+la page courante</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>Ajouter un lien
+dans la bibliothèque</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>Ajouter un lien 
+sur la page courante</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2540,7 +3053,7 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">En cliquant sur le bouton "Téléchargement", vous certifiez que vous respectez les conditions générales d'utilisation de YouTube </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">En cliquant sur le bouton "Téléchargement", vous certifiez que vous respectez les conditions générales d'utilisation de YouTube disponibles ici </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
     <message>
         <source>Restore credentials on reboot</source>
@@ -2675,7 +3188,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Keyboard button size:</source>
-        <translation>Taille des touches du clavier virtuel:</translation>
+        <translation>Taille des touches du clavier virtuel :</translation>
     </message>
     <message>
         <source>Positioned at the Top (recommended for tablets)</source>
@@ -2742,22 +3255,10 @@ p, li { white-space: pre-wrap; }
         <translation>Licences</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Réseau</translation>
     </message>
@@ -2795,16 +3296,12 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation>Proxy :</translation>
+        <translation>Login Proxy :</translation>
     </message>
     <message>
         <source>Pass:</source>
         <translation>Mot de passe :</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="obsolete">Identifiant Planète-Sankoré</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Nom d'utilisateur :</translation>
@@ -2814,691 +3311,70 @@ p, li { white-space: pre-wrap; }
         <translation>Mot de passe :</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translatorcomment>non traduisible en l'état (sauf disponibilité d'une version non officielle introuvable sur le web)</translatorcomment>
-        <translation></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Crédits</translation>
     </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Identifiant Planète-Sankoré pour l'export de fichier</translation>
+    </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Les licences proposées ci-dessous sont rédigées en langue anglaise afin de respecter le cadre légal et officiel des traductions approuvées par les auteurs de ces textes.</span></p></td></tr></table></body></html></translation>
+        <source>Restore credentials on reboot  </source>
+        <translation>Enrgistrer les paramètres de connexion.</translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translatorcomment>ATTENTION AU NUMERO DE VERSION MENTIONNÉ DANS LA VERSION ANGLAISE ! (RESTE EN 1.4)</translatorcomment>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 2.0 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    <message>
+        <source>Start up tips</source>
+        <translation>Conseils de démarrage</translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translatorcomment>attention ce texte est en français par défaut ce qui signifie qu'il devrait être traduit en anglais pour les utilisateurs non francophones !</translatorcomment>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    <message>
+        <source>Show start up tips</source>
+        <translation>Afficher les conseils au démarrage</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Langue</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Sélectionner la langue</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Cette nouvelle langue sera utilisée lors du redémarrage du logiciel</translation>
     </message>
     <message utf8="true">
-        <source>Planète Sankoré ID for exporting file</source>
-        <translation>Identifiant Planète Sankoré pour l'export de fichier</translation>
+        <source>Close Open-Sankoré</source>
+        <translation>Quitter Open-Sankoré</translation>
     </message>
     <message>
-        <source>Restore credentials on reboot  </source>
-        <translation>Sauvegarder les paramètres de connexion.</translation>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Les licences sont en anglais pour respecter la traduction officielle et légale approuvée.</span></p></td></tr></table></body></html></translation>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
-        <translation type="unfinished"></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Les licences proposées ci-dessous sont en langue anglaise afin de respecter le cadre légal et officiel de ces textes qui ne disposent pas d'une traduction officialisée en français.</span></p></td></tr></table></body></html></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_fr_CH.ts b/Sankore-3.1/resources/i18n/sankore_fr_CH.ts
index ca0a799..acafd02 100644
--- a/Sankore-3.1/resources/i18n/sankore_fr_CH.ts
+++ b/Sankore-3.1/resources/i18n/sankore_fr_CH.ts
@@ -73,7 +73,7 @@
     </message>
     <message>
         <source>Stylus</source>
-        <translation>Stylets</translation>
+        <translation>Stylet</translation>
     </message>
     <message>
         <source>Backgrounds</source>
@@ -177,15 +177,7 @@
     </message>
     <message>
         <source>Configure Podcast Recording</source>
-        <translation>Configurer le podcast</translation>
-    </message>
-    <message>
-        <source>Flash Trap</source>
-        <translation>Capturer du contenu Flash</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Capturer du contenu Flash</translation>
+        <translation>Configurer l'enregistrement de l'écran</translation>
     </message>
     <message>
         <source>Web Trap</source>
@@ -309,7 +301,7 @@
     </message>
     <message>
         <source>Add Bookmark</source>
-        <translation>Ajouter un favori</translation>
+        <translation>Ajouter un signet</translation>
     </message>
     <message>
         <source>Display Board</source>
@@ -576,14 +568,6 @@
         <translation>Capturer une fenêtre</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Embarquer un contenu Web</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Capturer un contenu Web embarquable</translation>
-    </message>
-    <message>
         <source>Show Main Screen on Display Screen</source>
         <translation>Afficher l'écran principal sur l'écran d'affichage</translation>
     </message>
@@ -729,7 +713,7 @@
     </message>
     <message>
         <source>Add to Working Document</source>
-        <translation>Ajouter au document</translation>
+        <translation>Ajouter au document courant</translation>
     </message>
     <message>
         <source>Add</source>
@@ -749,7 +733,8 @@
     </message>
     <message>
         <source>Bookmark</source>
-        <translation>Signet</translation>
+        <extracomment>tooltip</extracomment>
+        <translation>Ajouter un signet</translation>
     </message>
     <message>
         <source>Preferences</source>
@@ -824,6 +809,44 @@
         <source>Group</source>
         <translation>Grouper</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translatorcomment>pas certain de la pertinence car le contexte n'est pas précisé ...</translatorcomment>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Télécharger dans</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">la bibliothèque</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Télécharger dans la bibliothèque</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Télécharger sur</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">la page courante</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Télécharger sur la page courante</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ajouter le lien à</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">la bibliothèque</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Ajouter le lien dans la bibliothèque</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ajouter le lien à</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">la page courante</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Ajouter le lien à la page courante</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Signet</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -978,7 +1001,7 @@
     <name>UBCachePropertiesWidget</name>
     <message>
         <source>Cache Properties</source>
-        <translation>Propriétés du cache</translation>
+        <translation>Propriétés du spot</translation>
     </message>
     <message>
         <source>Color:</source>
@@ -989,12 +1012,110 @@
         <translation>Forme :</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Taille :</translation>
+        <source>Alpha:</source>
+        <translation>Alpha :</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Fermer</translation>
+        <source>Geometry:</source>
+        <translation>Géométrie :</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Largeur :</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Hauteur :</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Garder les proportions</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Mode :</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Prévisualisation :</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Fermer le spot</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation>Au clic</translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation>Persistant</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><zone de dépôt></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Images non acceptées</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Ne peut pas afficher la donnée</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Le document déposé n'est pas reconnu comme document audio</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Jouer un document audio</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Ajouter un lien vers une page</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Ajouter un lien vers une page Web</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Glisser et déposer un fichier audio depuis la bibliothèque</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Page suivante</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Page précédente</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Page de titre</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Dernière page</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Page numéro</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Insérer une adresse URL</translation>
     </message>
 </context>
 <context>
@@ -1027,10 +1148,6 @@
 <context>
     <name>UBDocumentController</name>
     <message>
-        <source>No document selected!</source>
-        <translation>Aucun document sélectionné !</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Ouvrir un fichier compatible</translation>
     </message>
@@ -1063,40 +1180,12 @@
         <translation>Supprimer la page</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Supprimer le document</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Vider la corbeille</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Voulez-vous vraiment vider la corbeille ?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Supression du contenu de la corbeille</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Corbeille vidée</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Supprimer le dossier</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Voulez-vous vraiment supprimer le dossier '%1' et tout son contenu ?</translation>
-    </message>
-    <message>
         <source>Importing file %1...</source>
         <translation>Importation du fichier %1...</translation>
     </message>
     <message>
         <source>Failed to import file ... </source>
-        <translation>Impossible d'importer le fichier ...</translation>
+        <translation>Impossible d'importer le fichier ... </translation>
     </message>
     <message>
         <source>Import all Images from Folder</source>
@@ -1131,10 +1220,6 @@
         <translation>La sélection ne contient aucune image !</translation>
     </message>
     <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Voulez-vous vraiment supprimer le document '%1'?</translation>
-    </message>
-    <message>
         <source>Page %1</source>
         <translation>Page %1</translation>
     </message>
@@ -1161,6 +1246,14 @@
         <source>Untitled Documents</source>
         <translation>Documents sans titre</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>Cette opération est irréversible !</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1225,7 +1318,7 @@
     </message>
     <message>
         <source>Export canceled ...</source>
-        <translation>Export annulée ...</translation>
+        <translation>Exportation annulée ...</translation>
     </message>
     <message>
         <source>Converting page %1/%2 ...</source>
@@ -1249,6 +1342,61 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Accepter</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Remplacer</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translatorcomment>j'ai ajouté le terme "Attention" car cette opération est dangereuse (et pas trop conforme aux habitudes ou l'on place en général un n° de version à la fin du fichier pour les différencier et eviter l'effacement)</translatorcomment>
+        <translation>Le nom %1 est déjà utilisé.
+ATTENTION : En gardant ce nom, l'ancien document sera écrasé par le nouveau.
+Un nouveau nom vous permettra un nouveau document.
+</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Mes documents</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Modèles</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Corbeille</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Documents sans titre</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Copie de la page %1/%2 en cours</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 page copiée</numerusform>
+            <numerusform>%1 pages copiées</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1267,6 +1415,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Le téléchargement a échoué.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>le serveur distant refuse l'accès (le serveur n'accepte pas les requêtes)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>le serveur distant a fermé l'accès de manière prématurée avant que la réponse ne soit reçue complètement et ne soit traitée</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>le nom du serveur distant n'a pas été trouvé (nom du serveur distant invalide)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>l'accès au serveur distant a expiré</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>l'opération a été annulée ou fermée avant d'être terminée.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>la connexion SSL/TLS a échoué et la chaîne cryptée n'a pu être établie. Les erreurs SSL () devraient avoir été envoyées.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>la connexion a été interrompue en raison d'une erreur réseau, l'accès a été redirigé. La requête doit être à nouveau présentée et sera traitée dès que la connexion sera rétablie.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>la connexion au serveur proxy a été refusée (le serveur proxy n'accepte pas les requêtes)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>le serveur proxy a fermé la connexion prématurément, avant que la réponse entière n'ait été reçue et traitée</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>le nom d'hôte du proxy n'a pas été trouvé (nom d'hôte du proxy non valide)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>la connexion au proxy a expiré ou le proxy ne répond pas à la requête envoyée</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>le proxy requiert une authentification pour cette demande, mais n'accepte pas les certificats proposés</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>l'accès au contenu distant a été refusé (similaire à l'erreur HTTP 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>l'opération demandée sur le contenu distant n'est pas autorisée</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>le contenu distant n'a pas été trouvé sur le serveur (similaire à l'erreur HTTP 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>le serveur distant requiert une authentification, mais les informations d'identification fournies n'ont pas été acceptées</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>la demande doit être envoyée à nouveau, cela est certainement dû à un problème de relecture.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>l'API d'accès au réseau ne peut pas satisfaire la requête parce que le protocole n'est pas connu</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>l'opération demandée n'est pas valide pour ce protocole</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>une erreur de réseau inconnue a été détectée</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>une erreur de proxy inconnue a été détectée</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>une erreur inconnue liée au contenu distant a été détectée</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>une rupture de protocole a été détectée (erreur d'analyse, réponses non valides ou inattendues...)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1335,6 +1582,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>L'export a échoué...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Exporter comme document UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Exportation du document...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Export réussi.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Echec de l'export.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Exporter au format UBX Open-Sankoré</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1408,22 +1682,26 @@
     <message>
         <source>Add to page</source>
         <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
-        <translation>Ajout page</translation>
+        <translation>Page</translation>
     </message>
     <message>
         <source>Set as background</source>
         <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
-        <translation>Ajout en fond</translation>
+        <translation>Fond</translation>
     </message>
     <message>
         <source>Add to library</source>
         <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
-        <translation>Ajout bibliothèque</translation>
+        <translation>Bibliothèque</translation>
     </message>
     <message>
         <source>Object informations</source>
         <translation>Informations</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation>Ajouter à :</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1506,6 +1784,14 @@
         <source>Trash</source>
         <translation>Corbeille</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Signets</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1539,6 +1825,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Visible sur l'écran étendu</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Ajouter une action</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Retirer le lien audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Retirer le lien sur une page</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Retirer le lien Web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1554,6 +1856,22 @@
         <source>Go to Content Source</source>
         <translation>Aller à la source du contenu</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Ajouter une action</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Retirer le lien audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Retirer le lien sur une page</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Retirer le lien Web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1574,14 +1892,7 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
-</context>
-<context>
-    <name>UBGraphicsWidgetItem</name>
+    <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
         <translation>Chargement en cours ...</translation>
@@ -1602,7 +1913,7 @@
     <name>UBImportCFF</name>
     <message>
         <source>Common File Format (</source>
-        <translation>Format de fichier CFF (</translation>
+        <translation>Format de fichier CFF (*.iwb) (</translation>
     </message>
     <message>
         <source>Importing file %1...</source>
@@ -1610,15 +1921,15 @@
     </message>
     <message>
         <source>Import of file %1 failed.</source>
-        <translation>Echec de l'import du fichier %1.</translation>
+        <translation>Echec de l'importation du fichier %1.</translation>
     </message>
     <message>
         <source>Import successful.</source>
-        <translation>Import terminée.</translation>
+        <translation>Importation terminée.</translation>
     </message>
     <message>
         <source>Import failed.</source>
-        <translation>Echec de l'import.</translation>
+        <translation>Echec de l'importation.</translation>
     </message>
 </context>
 <context>
@@ -1641,6 +1952,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankoré (archive de documents) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1699,7 +2017,7 @@
     </message>
     <message>
         <source>Ok</source>
-        <translation>Ok</translation>
+        <translation>Accepter</translation>
     </message>
 </context>
 <context>
@@ -1727,7 +2045,7 @@
 %2
 
 Do you want to ignore these errors for this host?</source>
-        <translation>Erreur SSL (Secure Socket Layer) sur un serveur sécurisé:
+        <translation>Erreur SSL (Secure Socket Layer) sur un serveur sécurisé :
 
 %1
 
@@ -1779,7 +2097,7 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
     <message>
         <source>Swiss French</source>
-        <translation>Français suisse</translation>
+        <translation>Français (Suisse)</translation>
     </message>
 </context>
 <context>
@@ -1855,6 +2173,142 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
         <source>version: </source>
         <translation>version : </translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>Par défaut</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Arabe</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bulgare</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Catalan</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Tchèque</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Danois</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Allemand</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Grec</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Anglais</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Anglais UK</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Espagnol</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Français</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Français (Suisse)</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Italien</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Hébreux</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Japonais</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Coréen</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Malgache</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Norvégien</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Néerlandais</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Polonais</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Romanche</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Roumain</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Russe</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Slovaque</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Suédois</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Turc</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Chinois</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Chinois simplifié</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Chinois traditionnel</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>Corse</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>Hindi</translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation>Basque</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation>Portugais</translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1896,6 +2350,17 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
         <source>My Movies</source>
         <translation>Mes films</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Visible lors du prochain démarrage</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -1934,6 +2399,7 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     <name>UBTeacherBarWidget</name>
     <message>
         <source></source>
+        <translatorcomment>Je ne sais pas quoi faire avec cet item...</translatorcomment>
         <translation></translation>
     </message>
 </context>
@@ -1945,7 +2411,7 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation>Renseigner le commentaire ici ...</translation>
+        <translation>Ajouter le commentaire ici ...</translation>
     </message>
     <message>
         <source>Add an action</source>
@@ -1961,7 +2427,7 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation>Page: %0</translation>
+        <translation>Page : %0</translation>
     </message>
 </context>
 <context>
@@ -1972,11 +2438,11 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation>Auteur(s) :</translation>
+        <translation>Auteur(s) et crédits :</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation>Ajouter les auteurs ici ...</translation>
+        <translation>Ajouter les auteurs et les crédits des médias ici ...</translation>
     </message>
     <message>
         <source>Objective(s)</source>
@@ -2044,8 +2510,8 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translatorcomment>attention le copyright n'est pas une protection ou une licence puisque ca existe même pour les licences libres les plus ouvertes. C'est simplement la mention détenteur des droits de reproduction (celui qui fixe la licence) . Le terme est donc impropre même en anglais.</translatorcomment>
-        <translation>Protection par le droit d'auteur</translation>
+        <translatorcomment>attention le copyright n'est pas une protection ou une licence puisque ca existe même pour les licences libres les plus ouvertes. C'est simplement la mention détenteur des droits de reproduction (celui qui fixe la licence) . Le terme est donc impropre même en anglais. (je suis d'accord avec la remarque Francois)</translatorcomment>
+        <translation>Protection par le droit d'auteur courant</translation>
     </message>
     <message>
         <source>Created the:
@@ -2066,7 +2532,7 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation>Page: %0</translation>
+        <translation>Page : %0</translation>
     </message>
 </context>
 <context>
@@ -2112,14 +2578,14 @@ Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Page complète</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <source>Embed </source>
+        <translation>Embarqué </translation>
     </message>
 </context>
 <context>
@@ -2164,11 +2630,11 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Updating file </source>
-        <translation>Mise à jour du fichier</translation>
+        <translation>Mise à jour du fichier </translation>
     </message>
     <message>
         <source>Please wait the import process will start soon...</source>
-        <translation>Merci de patienter, le processus d'import va commencer...</translation>
+        <translation>Merci de patienter : le processus d'importation va commencer...</translation>
     </message>
     <message>
         <source>Remind me later</source>
@@ -2323,7 +2789,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Error saving: %1</source>
-        <translation>Erreur lors de la sauvegarde du fichier : %1</translation>
+        <translation>Erreur lors de l'enregistrement du fichier : %1</translation>
     </message>
     <message>
         <source>Network Error: %1</source>
@@ -2339,7 +2805,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>- %4 %5 remaining</source>
-        <translation>- %4 %5 restante(s)</translation>
+        <translation>- %4 %5 restantes</translation>
     </message>
     <message>
         <source>%1 of %2 (%3/sec) %4</source>
@@ -2372,12 +2838,12 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     <name>WBDownloadManager</name>
     <message>
         <source>1 Download</source>
-        <translation>1 téléchargement(s)</translation>
+        <translation>1 téléchargement</translation>
     </message>
     <message>
         <source>%1 Downloads</source>
         <comment>always >= 2</comment>
-        <translation>%1 téléchargement(s)</translation>
+        <translation>%1 téléchargements</translation>
     </message>
 </context>
 <context>
@@ -2467,6 +2933,53 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Sélectionner du contenu à capturer :</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Nom de l'application</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Restriction et mise en garde.</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>La capture de contenu fonctionne sur les pages Web les plus courantes.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Veuillez respecter les droits d'auteur lors de la capture de contenu depuis le Web.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>Télécharger dans
+la bibliothèque</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>Télécharger sur 
+la page courante</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>Ajouter un lien
+dans la bibliothèque</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>Ajouter un lien 
+sur la page courante</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2540,7 +3053,7 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">En cliquant sur le bouton "Téléchargement", vous certifiez que vous respectez les conditions générales d'utilisation de YouTube </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">En cliquant sur le bouton "Téléchargement", vous certifiez que vous respectez les conditions générales d'utilisation de YouTube disponibles ici </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
     <message>
         <source>Restore credentials on reboot</source>
@@ -2675,7 +3188,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Keyboard button size:</source>
-        <translation>Taille des touches du clavier virtuel:</translation>
+        <translation>Taille des touches du clavier virtuel :</translation>
     </message>
     <message>
         <source>Positioned at the Top (recommended for tablets)</source>
@@ -2742,22 +3255,10 @@ p, li { white-space: pre-wrap; }
         <translation>Licences</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Réseau</translation>
     </message>
@@ -2795,16 +3296,12 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation>Proxy :</translation>
+        <translation>Login Proxy :</translation>
     </message>
     <message>
         <source>Pass:</source>
         <translation>Mot de passe :</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="obsolete">Identifiant Planète-Sankoré</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Nom d'utilisateur :</translation>
@@ -2814,691 +3311,70 @@ p, li { white-space: pre-wrap; }
         <translation>Mot de passe :</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translatorcomment>non traduisible en l'état (sauf disponibilité d'une version non officielle introuvable sur le web)</translatorcomment>
-        <translation></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Crédits</translation>
     </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Identifiant Planète-Sankoré pour l'export de fichier</translation>
+    </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Les licences proposées ci-dessous sont rédigées en langue anglaise afin de respecter le cadre légal et officiel des traductions approuvées par les auteurs de ces textes.</span></p></td></tr></table></body></html></translation>
+        <source>Restore credentials on reboot  </source>
+        <translation>Enrgistrer les paramètres de connexion.</translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translatorcomment>ATTENTION AU NUMERO DE VERSION MENTIONNÉ DANS LA VERSION ANGLAISE ! (RESTE EN 1.4)</translatorcomment>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 2.0 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    <message>
+        <source>Start up tips</source>
+        <translation>Conseils de démarrage</translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translatorcomment>attention ce texte est en français par défaut ce qui signifie qu'il devrait être traduit en anglais pour les utilisateurs non francophones !</translatorcomment>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    <message>
+        <source>Show start up tips</source>
+        <translation>Afficher les conseils au démarrage</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Langue</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Sélectionner la langue</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Cette nouvelle langue sera utilisée lors du redémarrage du logiciel</translation>
     </message>
     <message utf8="true">
-        <source>Planète Sankoré ID for exporting file</source>
-        <translation>Identifiant Planète Sankoré pour l'export de fichier</translation>
+        <source>Close Open-Sankoré</source>
+        <translation>Quitter Open-Sankoré</translation>
     </message>
     <message>
-        <source>Restore credentials on reboot  </source>
-        <translation>Sauvegarder les paramètres de connexion.</translation>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Les licences sont en anglais pour respecter la traduction officielle et légale approuvée.</span></p></td></tr></table></body></html></translation>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
-        <translation type="unfinished"></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Les licences proposées ci-dessous sont en langue anglaise afin de respecter le cadre légal et officiel de ces textes qui ne disposent pas d'une traduction officialisée en français.</span></p></td></tr></table></body></html></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_hi.ts b/Sankore-3.1/resources/i18n/sankore_hi.ts
new file mode 100644
index 0000000..7943059
--- /dev/null
+++ b/Sankore-3.1/resources/i18n/sankore_hi.ts
@@ -0,0 +1,3374 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="hi_IN">
+<context>
+    <name>BlackoutWidget</name>
+    <message>
+        <source>Click to Return to Application</source>
+        <translation type="unfinished">प्रयोग पर लौटने के लिए क्लिक करें । </translation>
+    </message>
+</context>
+<context>
+    <name>DownloadDialog</name>
+    <message>
+        <source>Downloads</source>
+        <translation type="unfinished">डाउनलोड</translation>
+    </message>
+    <message>
+        <source>Clean Up</source>
+        <translation>साफ़ करे</translation>
+    </message>
+    <message>
+        <source>0 Items</source>
+        <translation type="unfinished">0 वस्तु
+</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadItem</name>
+    <message>
+        <source>Form</source>
+        <translation type="unfinished">प्रपत्र</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation type="unfinished">फ़ाइल नाम</translation>
+    </message>
+    <message>
+        <source>Try Again</source>
+        <translation type="unfinished">फिर कोशिश करें</translation>
+    </message>
+    <message>
+        <source>Stop</source>
+        <translation type="unfinished">रोकें </translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <translation type="unfinished">खोलें </translation>
+    </message>
+</context>
+<context>
+    <name>IntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation type="unfinished">यूट्यूब पर पब्लिश करें </translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation type="unfinished">शीर्षक</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation type="unfinished">विवरण</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation type="unfinished">लेखक</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <source>Board</source>
+        <translation type="unfinished">बोर्ड़ </translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation type="unfinished">वेब</translation>
+    </message>
+    <message>
+        <source>Documents</source>
+        <translation type="unfinished">दस्तावेज़</translation>
+    </message>
+    <message>
+        <source>Tutorial</source>
+        <translation type="unfinished">ट्यूटोरियल</translation>
+    </message>
+    <message>
+        <source>Stylus</source>
+        <translation type="unfinished">लेखनी</translation>
+    </message>
+    <message>
+        <source>Ctrl+T</source>
+        <translation type="unfinished">Ctrl + T</translation>
+    </message>
+    <message>
+        <source>Backgrounds</source>
+        <translation type="unfinished">पृष्ठभूमि</translation>
+    </message>
+    <message>
+        <source>Change Background</source>
+        <translation type="unfinished">पृष्भभूमि बदलें </translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation type="unfinished">पूर्ववत् करें</translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <translation type="unfinished">Ctrl+Z</translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation type="unfinished">फिर से करना
+</translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <translation type="unfinished">Ctrl+Y</translation>
+    </message>
+    <message>
+        <source>Previous</source>
+        <translation type="unfinished">पिछला</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation type="unfinished">पिछला  पृष्ठ</translation>
+    </message>
+    <message>
+        <source>PgUp</source>
+        <translation type="unfinished">पेज अप </translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translation type="unfinished">अगला </translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation type="unfinished">अगला पृष्ठ </translation>
+    </message>
+    <message>
+        <source>PgDown</source>
+        <translation type="unfinished">पेज डाउन </translation>
+    </message>
+    <message>
+        <source>Manage Documents</source>
+        <translation type="unfinished">दस्तावेज प्रबंधित करें </translation>
+    </message>
+    <message>
+        <source>Ctrl+D</source>
+        <translation type="unfinished">Ctrl+D</translation>
+    </message>
+    <message>
+        <source>Web Browsing</source>
+        <translation type="unfinished">वेब ब्राउजिंग </translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <translation type="unfinished">Ctrl+W</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation type="unfinished">बाहर जाएं </translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished">वापस </translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation type="unfinished">बांया </translation>
+    </message>
+    <message>
+        <source>Forward</source>
+        <translation type="unfinished">आगे </translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation type="unfinished">दांये</translation>
+    </message>
+    <message>
+        <source>Reload</source>
+        <translation type="unfinished">फिर लोड करें </translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <translation type="unfinished">होम </translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation type="unfinished">बुकमार्क्स </translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
+        <translation type="unfinished">बुकमार्क </translation>
+    </message>
+    <message>
+        <source>Ctrl+B</source>
+        <translation type="unfinished">Ctrl+B</translation>
+    </message>
+    <message>
+        <source>Erase</source>
+        <translation type="unfinished">मिटाएं </translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translation type="unfinished">वरियताएं </translation>
+    </message>
+    <message>
+        <source>Library</source>
+        <translation type="unfinished">पुस्तकालय </translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <translation type="unfinished">Ctrl+L</translation>
+    </message>
+    <message>
+        <source>Show Desktop</source>
+        <translation type="unfinished">डेस्कटाप दिखाएं </translation>
+    </message>
+    <message>
+        <source>Bigger</source>
+        <translation type="unfinished">बड़ा </translation>
+    </message>
+    <message>
+        <source>Ctrl++</source>
+        <translation type="unfinished">Ctrl++</translation>
+    </message>
+    <message>
+        <source>Smaller</source>
+        <translation type="unfinished">छोटा </translation>
+    </message>
+    <message>
+        <source>Ctrl+-</source>
+        <translation type="unfinished">Ctrl+-</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translation type="unfinished">नया फोल्डर </translation>
+    </message>
+    <message>
+        <source>New Document</source>
+        <translation type="unfinished">नया दस्तावेज </translation>
+    </message>
+    <message>
+        <source>Import</source>
+        <translation type="unfinished">इंपोर्ट </translation>
+    </message>
+    <message>
+        <source>Export</source>
+        <translation type="unfinished">एक्सपोर्ट </translation>
+    </message>
+    <message>
+        <source>Open in Board</source>
+        <translation type="unfinished">बोर्ड में खोलें </translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation type="unfinished">Ctrl+O</translation>
+    </message>
+    <message>
+        <source>Duplicate</source>
+        <translation type="unfinished">डुप्लिकेट </translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation type="unfinished">मिटाएं </translation>
+    </message>
+    <message>
+        <source>Del</source>
+        <translation type="unfinished">मिटाएं </translation>
+    </message>
+    <message>
+        <source>Add to Working Document</source>
+        <translation type="unfinished">चालू दस्तावेज में जोड़ें </translation>
+    </message>
+    <message>
+        <source>Add Selected Content to Open Document</source>
+        <translation type="unfinished">चयनित विषयसामग्री को यहां जोड़ें </translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">जोडें </translation>
+    </message>
+    <message>
+        <source>Rename</source>
+        <translation type="unfinished">फिर नाम दें </translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation type="unfinished">टूल्स </translation>
+    </message>
+    <message>
+        <source>Multi Screen</source>
+        <translation type="unfinished">एक से अधिक स्क्रीन </translation>
+    </message>
+    <message>
+        <source>Wide Size (16/9)</source>
+        <translation type="unfinished">चौड़ा आकार  (16/9)</translation>
+    </message>
+    <message>
+        <source>Regular Size (4/3)</source>
+        <translation type="unfinished">नियमित आकार  (4/3)</translation>
+    </message>
+    <message>
+        <source>Custom Size</source>
+        <translation type="unfinished">प्रचलित आकार </translation>
+    </message>
+    <message>
+        <source>Stop Loading</source>
+        <translation type="unfinished">लोडिंग रोकें </translation>
+    </message>
+    <message>
+        <source>Cut</source>
+        <translation type="unfinished">काटें </translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation type="unfinished">कापी </translation>
+    </message>
+    <message>
+        <source>Paste</source>
+        <translation type="unfinished">पेस्ट </translation>
+    </message>
+    <message>
+        <source>Sleep</source>
+        <translation type="unfinished">स्लीप </translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation type="unfinished">आभासी कीबोर्ड </translation>
+    </message>
+    <message>
+        <source>Plain Light Background</source>
+        <translation type="unfinished">सपाट हल्की पृष्ठभूमि </translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translation type="unfinished">हल्की </translation>
+    </message>
+    <message>
+        <source>Grid Light Background</source>
+        <translation type="unfinished">छड़ीदार हल्की पृष्ठभूमि </translation>
+    </message>
+    <message>
+        <source>Plain Dark Background</source>
+        <translation type="unfinished">सपाट गहरी पृष्ठभूमि </translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translation type="unfinished">गहरी </translation>
+    </message>
+    <message>
+        <source>Grid Dark Background</source>
+        <translation type="unfinished">छड़ीदार गहरी पृष्ठभूमि </translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation type="unfinished">पोडकास्ट </translation>
+    </message>
+    <message>
+        <source>Record</source>
+        <translation type="unfinished">रिकार्ड </translation>
+    </message>
+    <message>
+        <source>Start Screen Recording</source>
+        <translation type="unfinished">स्क्रीन रिकार्डिंग  शुरु करें </translation>
+    </message>
+    <message>
+        <source>Erase Items</source>
+        <translation type="unfinished">वस्तुएं मिटाएं </translation>
+    </message>
+    <message>
+        <source>Erase Annotations</source>
+        <translation type="unfinished">टिप्पणियां मिटाएं </translation>
+    </message>
+    <message>
+        <source>Clear Page</source>
+        <translation type="unfinished">पृष्ठ हटाएं </translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation type="unfinished">पेन </translation>
+    </message>
+    <message>
+        <source>Open the tutorial</source>
+        <translation type="unfinished">ट्युटोरियल खोलें </translation>
+    </message>
+    <message>
+        <source>Check Update</source>
+        <translation type="unfinished">अपडेट जांचें </translation>
+    </message>
+    <message>
+        <source>Ctrl+H</source>
+        <translation type="unfinished">Ctrl+H</translation>
+    </message>
+    <message>
+        <source>Eraser</source>
+        <translation type="unfinished">इरेजर </translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation type="unfinished">मार्कर्</translation>
+    </message>
+    <message>
+        <source>Selector</source>
+        <translation type="unfinished">सिलेक्टर </translation>
+    </message>
+    <message>
+        <source>Hand</source>
+        <translation type="unfinished">हैण्ड </translation>
+    </message>
+    <message>
+        <source>Zoom In</source>
+        <translation type="unfinished">बड़ा करें </translation>
+    </message>
+    <message>
+        <source>Zoom Out</source>
+        <translation type="unfinished">छोटा करें </translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation type="unfinished">लाइन </translation>
+    </message>
+    <message>
+        <source>Small Line</source>
+        <translation type="unfinished">छोटी लाइन </translation>
+    </message>
+    <message>
+        <source>Medium Line</source>
+        <translation type="unfinished">मध्यम लाइन </translation>
+    </message>
+    <message>
+        <source>Large Line</source>
+        <translation type="unfinished">बड़ी लाइन </translation>
+    </message>
+    <message>
+        <source>Smalle Eraser</source>
+        <translation type="unfinished">छोटा इरेजर </translation>
+    </message>
+    <message>
+        <source>Medium Eraser</source>
+        <translation type="unfinished">मध्यम इरेजर </translation>
+    </message>
+    <message>
+        <source>Large Eraser</source>
+        <translation type="unfinished">बड़ा इरेजर </translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translation type="unfinished">कलर </translation>
+    </message>
+    <message>
+        <source>Reload Current Page</source>
+        <translation type="unfinished">वर्तमान पेज को फिर लोड करें </translation>
+    </message>
+    <message>
+        <source>Load Home Page</source>
+        <translation type="unfinished">होम पेज लोड करें </translation>
+    </message>
+    <message>
+        <source>Show Bookmarks</source>
+        <translation type="unfinished">बुकमार्क्स दिखाएं </translation>
+    </message>
+    <message>
+        <source>Add Bookmark</source>
+        <translation type="unfinished">बुकमार्क्स जोड़ें </translation>
+    </message>
+    <message>
+        <source>Display Board</source>
+        <translation type="unfinished">बोर्ड प्रदर्शित करें </translation>
+    </message>
+    <message>
+        <source>Erase Content</source>
+        <translation type="unfinished">विषयवस्तु मिटाएं </translation>
+    </message>
+    <message>
+        <source>Display Preferences</source>
+        <translation type="unfinished">वरियता दिखाएं </translation>
+    </message>
+    <message>
+        <source>Show Library</source>
+        <translation type="unfinished">पुस्तकालय दिखाएं </translation>
+    </message>
+    <message>
+        <source>Show Computer Desktop</source>
+        <translation type="unfinished">कम्प्युटर डेस्कटाप दिखाएं </translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <translation type="unfinished">Ctrl+Shift+H</translation>
+    </message>
+    <message>
+        <source>Create a New Folder</source>
+        <translation type="unfinished">एक नया फोल्डर बनाएं </translation>
+    </message>
+    <message>
+        <source>Create a New Document</source>
+        <translation type="unfinished">एक नया दस्तावेज बनाएं </translation>
+    </message>
+    <message>
+        <source>Import a Document</source>
+        <translation type="unfinished">एक दस्तावेज इंपोर्ट करें </translation>
+    </message>
+    <message>
+        <source>Export a Document</source>
+        <translation type="unfinished">एक दस्तावेज एक्सपोर्ट करें </translation>
+    </message>
+    <message>
+        <source>Open Page in Board</source>
+        <translation type="unfinished">पेज को बोर्ड में खोलें </translation>
+    </message>
+    <message>
+        <source>Duplicate Selected Content</source>
+        <translation type="unfinished">चयनित डुप्लिकेट विषयसामग्री </translation>
+    </message>
+    <message>
+        <source>Delete Selected Content</source>
+        <translation type="unfinished">चयनित विषयसामग्री को मिटाएं </translation>
+    </message>
+    <message>
+        <source>Add Content to Document</source>
+        <translation type="unfinished">दस्तावेज में विषयसामग्री जोड़ें </translation>
+    </message>
+    <message>
+        <source>Rename Content</source>
+        <translation type="unfinished">विषयवस्तु को फिर नाम दें </translation>
+    </message>
+    <message>
+        <source>Display Tools</source>
+        <translation type="unfinished">टूल्स प्रदर्शित करें </translation>
+    </message>
+    <message>
+        <source>Use Document Wide Size (16/9)</source>
+        <translation type="unfinished">चौड़े आकार का दस्तावेज प्रयोग करें (16/9)</translation>
+    </message>
+    <message>
+        <source>Use Document Regular Size (4/3)</source>
+        <translation type="unfinished">नियमित आकार का दस्तावेज उपयोग करें (4/3)</translation>
+    </message>
+    <message>
+        <source>Use Custom Document Size</source>
+        <translation type="unfinished">प्रचलित आकार का दस्तावेज उपयोग करें </translation>
+    </message>
+    <message>
+        <source>Stop Loading Web Page</source>
+        <translation type="unfinished">वेब पेज लोडिंग रोकें </translation>
+    </message>
+    <message>
+        <source>Put Presentation to Sleep</source>
+        <translation type="unfinished">प्रेजेंटेशन को स्लीप पर रखें </translation>
+    </message>
+    <message>
+        <source>Display Virtual Keyboard</source>
+        <translation type="unfinished">आभासी कीबोर्ड प्रदर्शित करें </translation>
+    </message>
+    <message>
+        <source>Record Presentation to Video</source>
+        <translation type="unfinished">प्रेजेंटेशन को वीडियो पर रिकार्ड करें </translation>
+    </message>
+    <message>
+        <source>Erase All Items</source>
+        <translation type="unfinished">सभी वस्तुओं को मिटा दें </translation>
+    </message>
+    <message>
+        <source>Erase All Annotations</source>
+        <translation type="unfinished">सभी टिप्पणियों को मिटा दें </translation>
+    </message>
+    <message>
+        <source>Clear All Elements</source>
+        <translation type="unfinished">सभी तत्वों को मिटा दें </translation>
+    </message>
+    <message>
+        <source>Annotate Document</source>
+        <translation type="unfinished">दस्तावेज की व्याख्या </translation>
+    </message>
+    <message>
+        <source>Ctrl+I</source>
+        <translation type="unfinished">Ctrl+I</translation>
+    </message>
+    <message>
+        <source>Erase Annotation</source>
+        <translation type="unfinished">टिप्पणी मिटाएं </translation>
+    </message>
+    <message>
+        <source>Ctrl+E</source>
+        <translation type="unfinished">Ctrl+E</translation>
+    </message>
+    <message>
+        <source>Highlight </source>
+        <translation type="unfinished">हाईलाइट </translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <translation type="unfinished">Ctrl+M</translation>
+    </message>
+    <message>
+        <source>Select And Modify Objects</source>
+        <translation type="unfinished">वस्तुओं को चुनें और बदलें  </translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <translation type="unfinished">Ctrl+F</translation>
+    </message>
+    <message>
+        <source>Scroll Page</source>
+        <translation type="unfinished">स्क्रोल पेज </translation>
+    </message>
+    <message>
+        <source>Laser Pointer</source>
+        <translation type="unfinished">लेजर पाइंटर </translation>
+    </message>
+    <message>
+        <source>Virtual Laser Pointer</source>
+        <translation type="unfinished">आभासी लेजर पाइंटर </translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <translation type="unfinished">Ctrl+G</translation>
+    </message>
+    <message>
+        <source>Draw Lines</source>
+        <translation type="unfinished">लाइन खींचें </translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <translation type="unfinished">Ctrl+J</translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation type="unfinished">पाठ </translation>
+    </message>
+    <message>
+        <source>Write Text</source>
+        <translation type="unfinished">पाठ लिखें </translation>
+    </message>
+    <message>
+        <source>Ctrl+K</source>
+        <translation type="unfinished">Ctrl+K</translation>
+    </message>
+    <message>
+        <source>Capture</source>
+        <translation type="unfinished">अधिकृत करें </translation>
+    </message>
+    <message>
+        <source>Add To Current Page</source>
+        <translation type="unfinished">वर्तमान्ह पेज पर जोड़ें </translation>
+    </message>
+    <message>
+        <source>Add Item To Current Page</source>
+        <translation type="unfinished">वर्तमान पेज पर वस्तु जोड़ें </translation>
+    </message>
+    <message>
+        <source>Add To New Page</source>
+        <translation type="unfinished">नये पेज पर जोड़ें </translation>
+    </message>
+    <message>
+        <source>Add Item To New Page</source>
+        <translation type="unfinished">नये पेज पर वस्तु जोड़ें </translation>
+    </message>
+    <message>
+        <source>Add To Library</source>
+        <translation type="unfinished">पुस्तकालय पर जोड़ें </translation>
+    </message>
+    <message>
+        <source>Add Item To Library</source>
+        <translation type="unfinished">वस्तु को पुस्तकालय पर जोड़ें </translation>
+    </message>
+    <message>
+        <source>Pages</source>
+        <translation type="unfinished">पेज </translation>
+    </message>
+    <message>
+        <source>Create a New Page</source>
+        <translation type="unfinished">एक नया पेज बनाएं </translation>
+    </message>
+    <message>
+        <source>New Page</source>
+        <translation type="unfinished">नया पेज </translation>
+    </message>
+    <message>
+        <source>Duplicate Page</source>
+        <translation type="unfinished">डुप्लिकेट पेज </translation>
+    </message>
+    <message>
+        <source>Duplicate the Current Page</source>
+        <translation type="unfinished">वर्तमान पेज का डुप्लिकेट तैयार करें </translation>
+    </message>
+    <message>
+        <source>Import Page</source>
+        <translation type="unfinished">पेज इंपोर्ट करें </translation>
+    </message>
+    <message>
+        <source>Import an External Page</source>
+        <translation type="unfinished">एक बाहरी पेज इंपोर्ट करें  </translation>
+    </message>
+    <message>
+        <source>Pause</source>
+        <translation type="unfinished">विराम </translation>
+    </message>
+    <message>
+        <source>Pause Podcast Recording</source>
+        <translation type="unfinished">पोडकास्ट रिकार्डिंग को विराम दें </translation>
+    </message>
+    <message>
+        <source>Podcast Config</source>
+        <translation type="unfinished">पोडकास्ट विन्यास </translation>
+    </message>
+    <message>
+        <source>Configure Podcast Recording</source>
+        <translation type="unfinished">पोडकास्ट रिकार्डिंग का विन्यास करें </translation>
+    </message>
+    <message>
+        <source>Web Trap</source>
+        <translation type="unfinished">वेब ट्रेप </translation>
+    </message>
+    <message>
+        <source>Trap Web Content</source>
+        <translation type="unfinished">ट्रेप वेब विषयसामग्री </translation>
+    </message>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation type="unfinished">स्क्रीन का अधिगृहित भाग </translation>
+    </message>
+    <message>
+        <source>Custom Capture</source>
+        <translation type="unfinished">प्रचलित अधिग्रहण </translation>
+    </message>
+    <message>
+        <source>Capture a Window</source>
+        <translation type="unfinished">एक विण्डो अधिगृहित करें </translation>
+    </message>
+    <message>
+        <source>Show Main Screen on Display Screen</source>
+        <translation type="unfinished">मेन स्क्रीन को डिसप्ले स्क्रीन पर दिखाएं  </translation>
+    </message>
+    <message>
+        <source>Erase all Annotations</source>
+        <translation type="unfinished">सभी टिप्पणियां मिटाएं </translation>
+    </message>
+    <message>
+        <source>eduMedia</source>
+        <translation type="unfinished">एज्यु मीडिया </translation>
+    </message>
+    <message>
+        <source>Import eduMedia simulation</source>
+        <translation type="unfinished">एज्यु मीडिया सिमुलेशन इंपोर्ट करें </translation>
+    </message>
+    <message>
+        <source>Window Capture</source>
+        <translation type="unfinished">विण्डो अधिगृहण </translation>
+    </message>
+    <message>
+        <source>Show on Display</source>
+        <translation type="unfinished">डिसप्ले पर दिखाएं </translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation type="unfinished">संकोरं-खोलें </translation>
+    </message>
+    <message utf8="true">
+        <source>Quit Open-Sankoré</source>
+        <translation type="unfinished">संकोर्_खोलें से बाहर जाएं</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré Editor</source>
+        <translation type="unfinished">संकोर-एडिटर खोलें </translation>
+    </message>
+    <message utf8="true">
+        <source>Show Open-Sankoré Widgets Editor</source>
+        <translation type="unfinished">संकोर विजेट्स उपयोग खोलें दिखाएं </translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré</source>
+        <translation type="unfinished">संकोर्_खोलें छुपायें </translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré Application</source>
+        <translation type="unfinished">संकोर्_खोलें उपयोग छुपायें </translation>
+    </message>
+    <message>
+        <source>Import Uniboard Documents</source>
+        <translation type="unfinished">यूनिबोर्ड दस्तावेज इंपोर्ट करें </translation>
+    </message>
+    <message>
+        <source>Import old Sankore or Uniboard documents</source>
+        <translation type="unfinished">पुराने संकोर या यूनिबोर्ड दस्तावेज इंपोर्ट करें </translation>
+    </message>
+    <message>
+        <source>Group items</source>
+        <translation type="unfinished">समूह वस्तुएं </translation>
+    </message>
+    <message>
+        <source>Play</source>
+        <translation type="unfinished">प्ले </translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation type="unfinished">वस्तुओं के साथ संवाद करें </translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation type="unfinished">पृष्ठभूमि मिटाएं </translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation type="unfinished">पृष्ठभूमि हटाएं </translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation type="unfinished">समूह</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation type="unfinished"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation type="unfinished">पुस्तकालय  मै डाउनलोड करें </translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation type="unfinished"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation type="unfinished">वर्तमान पृष्ठ पर डाउनलोड करें </translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation type="unfinished"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation type="unfinished">पुस्तकालय से सम्बन्ध जोड़ </translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation type="unfinished"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation type="unfinished">वर्तमान पृष्ठ से सम्बन्ध जोड़  </translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">बुकमार्क </translation>
+    </message>
+</context>
+<context>
+    <name>PasswordDialog</name>
+    <message>
+        <source>Authentication Required</source>
+        <translation type="unfinished">प्रमाणीकरण की आवश्यक </translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation type="unfinished">प्रयोक्ता नाम</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation type="unfinished">पासवर्ड </translation>
+    </message>
+</context>
+<context>
+    <name>ProxyDialog</name>
+    <message>
+        <source>Proxy Authentication</source>
+        <translation type="unfinished">प्राक्सी प्रमाणीकरण </translation>
+    </message>
+    <message>
+        <source>Connect to Proxy</source>
+        <translation type="unfinished">प्राक्सी से जोड़ें </translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation type="unfinished">प्रयोक्ता का नाम :</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation type="unfinished">पासवर्ड :</translation>
+    </message>
+    <message>
+        <source>Save username and password for future use</source>
+        <translation type="unfinished">आगामी उपयोग के लिए प्रयोक्ता का नाम और पासवर्ड सुरक्षित करें  </translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Element ID = </source>
+        <translation type="unfinished">तत्व आई डी = </translation>
+    </message>
+    <message>
+        <source>Content is not supported in destination format.</source>
+        <translation type="unfinished">विषय सामग्री गंतव्य प्रारुप में समर्थित नहीं है. </translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation type="unfinished">पेज हटाएं </translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation type="unfinished">क्या आप सुनिश्चित हैं कि आप चयनित दस्तावेज में से 1 पेज हटाना चाहते हैं  ? </translation>
+    </message>
+</context>
+<context>
+    <name>UBApplication</name>
+    <message>
+        <source>Page Size</source>
+        <translation type="unfinished">पेज का आकार </translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation type="unfinished">पोडकास्ट </translation>
+    </message>
+</context>
+<context>
+    <name>UBApplicationController</name>
+    <message>
+        <source>Web</source>
+        <translation type="unfinished">वेब </translation>
+    </message>
+    <message>
+        <source>New update available, would you go to the web page ?</source>
+        <translation type="unfinished">नया अपडेट तैयार है, क्या आप वेब पेज पर जाएंगे ? </translation>
+    </message>
+    <message>
+        <source>No update available</source>
+        <translation type="unfinished">कोई अपडेट उपलब्ध नहीं है </translation>
+    </message>
+    <message>
+        <source>Update available</source>
+        <translation type="unfinished">अपडेट उपलब्ध हैं </translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation type="unfinished">अपडेट </translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardController</name>
+    <message>
+        <source>Downloading content %1 failed</source>
+        <translation type="unfinished">विषय सामग्री %1 की डाउनलोडिंग विफल  </translation>
+    </message>
+    <message>
+        <source>Download finished</source>
+        <translation type="unfinished">डाउनलोड पूर्ण </translation>
+    </message>
+    <message>
+        <source>Unknown tool type %1</source>
+        <translation type="unfinished">अज्ञात टूल प्रकार  %1 </translation>
+    </message>
+    <message>
+        <source>Unknown content type %1</source>
+        <translation type="unfinished">अज्ञात विषय वस्तु का प्रकार %1</translation>
+    </message>
+    <message>
+        <source>Add Item</source>
+        <translation type="unfinished">वस्तु जोड़ें </translation>
+    </message>
+    <message>
+        <source>All Supported (%1)</source>
+        <translation type="unfinished">सभी समर्थित (%1) </translation>
+    </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation type="unfinished">दस्तावेज से %1पेज मिटाएं </translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation type="unfinished">पेज %1 मिटाया गया </translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation type="unfinished">फाईल जोड़ने का कार्य विफल: फाईल कापी त्रुटि </translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation type="unfinished">समूह बनाएं </translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation type="unfinished">समूह से हटाएं </translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardPaletteManager</name>
+    <message>
+        <source>Error Adding Image to Library</source>
+        <translation type="unfinished">पुस्तकालय पर चित्र जोड़ने में त्रुटि </translation>
+    </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation type="unfinished">चित्र अधिगृहित करें </translation>
+    </message>
+</context>
+<context>
+    <name>UBCachePropertiesWidget</name>
+    <message>
+        <source>Cache Properties</source>
+        <translation type="unfinished">केच विशेषताएं </translation>
+    </message>
+    <message>
+        <source>Color:</source>
+        <translation type="unfinished">रंग : </translation>
+    </message>
+    <message>
+        <source>Shape:</source>
+        <translation type="unfinished">रुप : </translation>
+    </message>
+    <message>
+        <source>Alpha:</source>
+        <translation type="unfinished">अल्फा </translation>
+    </message>
+    <message>
+        <source>Geometry:</source>
+        <translation type="unfinished">ज्यामिति</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation type="unfinished">चौडाई</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation type="unfinished">ऊंचाई</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation type="unfinished">अनुपात रखना</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation type="unfinished">प्रकार</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation type="unfinished">पूर्वावलोकन</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation type="unfinished">cache बंद करना</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation type="unfinished">विषय सामग्री  गिराएँ </translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation type="unfinished">छवियों को  स्वीकार नहीं कर सकतै</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation type="unfinished">डेटा प्रदर्शित नहीं कर सकते</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation type="unfinished">ऑडियो फ़ाइल नहीं है</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation type="unfinished"> ऑडियो फ़ाइल चलाये </translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation type="unfinished">पेज पे लिंक जोड़ने के लिए</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation type="unfinished">वेबपेज पे लिंक जोड़ने के लिए</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation type="unfinished">पुस्तकालय से ऑडियो फ़ाइल खींचें और इस बॉक्स में ड्रॉप करें </translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation type="unfinished">ठीक है  </translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation type="unfinished">अगला पृष्ठ </translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation type="unfinished">पिछला  पृष्ठ</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation type="unfinished">शीर्षक पृष्ठ</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation type="unfinished">अंतिम पृष्ठ</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation type="unfinished">पृष्ठ संख्या</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation type="unfinished">Url पाठ यहाँ सम्मिलित करें</translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation type="unfinished">स्क्रीन का हिस्सा अधिगृहित करें </translation>
+    </message>
+    <message>
+        <source>Capture the Screen</source>
+        <translation type="unfinished">स्क्रीन अधिग्रहित करें </translation>
+    </message>
+    <message>
+        <source>Show the stylus palette</source>
+        <translation type="unfinished">लेखनीं-पैलेट दिखाएं </translation>
+    </message>
+    <message>
+        <source>Show Board on Secondary Screen</source>
+        <translation type="unfinished">बोर्ड को सेकण्डरी स्क्रीन पर दिखाएं </translation>
+    </message>
+    <message>
+        <source>Show Desktop on Secondary Screen</source>
+        <translation type="unfinished">सेकण्डरी स्क्रीन पर डेस्कटाप दिखाएं </translation>
+    </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation type="unfinished">संकोरं-खोलें दिखाएं </translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentController</name>
+    <message>
+        <source>New Folder</source>
+        <translation type="unfinished">नया फोल्डर </translation>
+    </message>
+    <message>
+        <source>Page %1</source>
+        <translation type="unfinished">पेज %1</translation>
+    </message>
+    <message>
+        <source>Add Folder of Images</source>
+        <translation type="unfinished">चित्रों के फोल्डर जोड़ें </translation>
+    </message>
+    <message>
+        <source>Add Images</source>
+        <translation type="unfinished">चित्र जोड़ें </translation>
+    </message>
+    <message>
+        <source>Add Pages from File</source>
+        <translation type="unfinished">फाइल से पेज जोड़ें </translation>
+    </message>
+    <message>
+        <source>Duplicating Document %1</source>
+        <translation type="unfinished">दस्तावेज %1 की नकल हो रही है </translation>
+    </message>
+    <message>
+        <source>Document %1 copied</source>
+        <translation type="unfinished">दस्तावेज %1 कापी किया गया </translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation type="unfinished">पेज हटाएं </translation>
+    </message>
+    <message>
+        <source>Open Supported File</source>
+        <translation type="unfinished">समर्थित फाइल खोलें </translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation type="unfinished">फाइल %1 इंपोर्ट हो रही है...</translation>
+    </message>
+    <message>
+        <source>Failed to import file ... </source>
+        <translation type="unfinished">फाइल इंपोर्ट करने में विफल... </translation>
+    </message>
+    <message>
+        <source>Import all Images from Folder</source>
+        <translation type="unfinished">फोल्डर से सभी चित्रों को इंपोर्ट करें </translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation type="unfinished">मिटाएं </translation>
+    </message>
+    <message>
+        <source>Empty</source>
+        <translation type="unfinished">खाली </translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation type="unfinished">ट्रेश </translation>
+    </message>
+    <message>
+        <source>Open Document</source>
+        <translation type="unfinished">दस्तावेज खोलें </translation>
+    </message>
+    <message>
+        <source>Add all Images to Document</source>
+        <translation type="unfinished">सभी कित्रों को दस्तावेज में जोड़ें </translation>
+    </message>
+    <message>
+        <source>All Images (%1)</source>
+        <translation type="unfinished">सभी चित्र  (%1)</translation>
+    </message>
+    <message>
+        <source>Selection does not contain any image files!</source>
+        <translation type="unfinished">चयन में कोई चित्र फाइलें नहीं हैं !  </translation>
+    </message>
+    <message>
+        <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
+        <translation type="unfinished">दस्तावेज '%1'संकोर के एक नवीन संस्करण (%2) से तैयार हुआ है । इसे खोलकर आप कुछ जानकारी गंवा सकते हैं । क्या आप आगे बढ़ना चाहते हैं ? </translation>
+    </message>
+    <message numerus="yes">
+        <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
+        <translation type="unfinished">
+            <numerusform>आप सुनिश्चित हैं कि आप चयनित दस्तावेज %1 से पेज %n (पेजों) को हटाना चाहते हैं ?</numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation type="unfinished">शीर्षक पेज </translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation type="unfinished">फोल्डर में कोई चित्र फाइलें नहीं है </translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation type="unfinished">बिना शीर्षक के दस्तावेज </translation>
+    </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentManager</name>
+    <message>
+        <source>images</source>
+        <translation type="unfinished">चित्र </translation>
+    </message>
+    <message>
+        <source>videos</source>
+        <translation type="unfinished">विडीयोज </translation>
+    </message>
+    <message>
+        <source>objects</source>
+        <translation type="unfinished">वस्तुएं </translation>
+    </message>
+    <message>
+        <source>widgets</source>
+        <translation type="unfinished">विजेट्स </translation>
+    </message>
+    <message>
+        <source>All supported files (*.%1)</source>
+        <translation type="unfinished">सभी समर्थित फाइलें (*.%1)</translation>
+    </message>
+    <message>
+        <source>File %1 saved</source>
+        <translation type="unfinished">फाइल %1 सुरक्षित </translation>
+    </message>
+    <message>
+        <source>Inserting page %1 of %2</source>
+        <translation type="unfinished">%2 का पेज %1 प्रविष्ट हो रहा है </translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation type="unfinished">इंपोर्ट सफल.  </translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation type="unfinished">फाइल %1 का इंपोर्ट सफल. </translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation type="unfinished">फाइल %1 इंपोर्ट हो रही है </translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentNavigator</name>
+    <message>
+        <source>Page %0</source>
+        <translation type="unfinished">पेज %0</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation type="unfinished">शीर्षक पेज </translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentPublisher</name>
+    <message>
+        <source>Export failed.</source>
+        <translation type="unfinished">एक्सपोर्ट विफल.  </translation>
+    </message>
+    <message>
+        <source>Export canceled ...</source>
+        <translation type="unfinished">एक्सपोर्ट निरस्त किया गया ...</translation>
+    </message>
+    <message>
+        <source>Converting page %1/%2 ...</source>
+        <translation type="unfinished">पेज %1/%2 रुपांतरित हो रहा है ...</translation>
+    </message>
+    <message>
+        <source>Credentials has to not been filled out yet.</source>
+        <translation type="unfinished">अब तक परिचय पत्र नही भरे गए हैं. </translation>
+    </message>
+    <message>
+        <source>Uploading Sankore File on Web.</source>
+        <translation type="unfinished">संकोर फाइल वेब पर अपलोड कर रहा है </translation>
+    </message>
+    <message>
+        <source>Document uploaded correctly on the web.</source>
+        <translation type="unfinished">दस्तावेज को वेब पर सही तरीके से अपलोड किया गया. </translation>
+    </message>
+    <message>
+        <source>Failed to upload document on the web.</source>
+        <translation type="unfinished">वेब पर दस्तावेज को अपलोड करने में विफल </translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation type="unfinished">स्वीकार </translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation type="unfinished">बदलें</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">निरस्त </translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation type="unfinished">नाम% 1  पहले से  प्रयोग किया गया  है
+इस नाम को रखने सेदस्तावेज़ बदल जायेगा 
+नया नाम प्रदान करने से एक नया दस्तावेज़ बनेगा</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation type="unfinished">मेरे दस्तावेज़</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation type="unfinished">मॉडल</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation type="unfinished">ट्रेश </translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation type="unfinished">अनामांकित दस्तावेज़</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">पेज  %1/%2 कापी कर रहा है </translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 पेज कापी हुए </numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeWidget</name>
+    <message>
+        <source>%1 (copy)</source>
+        <translation type="unfinished">%1 (कापी)</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">पेज  %1/%2 कापी कर रहा है </translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 पेज कापी हुए </numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation type="unfinished">डाउनलोड विफल.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation type="unfinished">दूरस्थ सर्वर ने कनेक्शन से इनकार कर दिया  है (सर्वर अनुरोधों को स्वीकार नहीं कर रहा है)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation type="unfinished">प्रॉक्सी सर्वर ने कनेक्शन को  समय से पहले ही बंद कर दिया है, इससे पहले कि पूरे उत्तर प्राप्त और और संसाधित किये  जाते</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation type="unfinished">दूरस्थ मेजबान नाम (होस्टनाम अमान्य) नहीं मिला है</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation type="unfinished">दूरस्थ सर्वर से कनेक्शन समयबाह्य हो गई है</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation type="unfinished">आपरेशन पूरा होने से पहले  समापन () या बन्द() के माध्यम से रद्द कर दिया गया  है</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation type="unfinished">SSL / TLS हाथ मिलाने  में विफल रहा है  और एन्क्रिप्टेड चैनल स्थापित नहीं किया जा सका. (SslErrors) संकेत उत्सर्जित किये जाने चाहिए थे.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation type="unfinished">कनेक्शन नेटवर्क से वियोग के कारण टूट गया है, लेकिन प्रणाली एक और पहुँच बिंदु के लिए घूम शुरू कर दी है।अनुरोध पुन: सबमिट  किया जाना चाहिए, जल्द ही संबंध फिर से स्थापित होने पर कार्रवाई की जाएगी.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation type="unfinished">प्रॉक्सी सर्वर ने कनेक्शन से इनकार कर दिया है(प्रॉक्सी सर्वर अनुरोध  स्वीकार नहीं  कर रहा है)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation type="unfinished">प्रॉक्सी सर्वर ने कनेक्शन को  समय से पहले ही बंद कर दिया है, इससे पहले कि पूरे उत्तर प्राप्त और और संसाधित किये  जाते
+</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation type="unfinished">प्रॉक्सी होस्ट नाम (होस्टनाम अमान्य प्रॉक्सी) नहीं मिला है</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation type="unfinished">प्रॉक्सी के लिए कनेक्शन समयबाह्य हो गय है या प्रॉक्सी समय में भेजा अनुरोध का जवाब नहीं दे रहा है</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation type="unfinished">प्रॉक्सी को अनुरोध का सम्मान करने के लिए प्रमाणीकरण की आवश्यकता है लेकिन किसी भी क्रेडेंशियल्स (यदि कोई हो) की पेशकश को स्वीकार नहीं किया है </translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation type="unfinished">दूरस्थ सामग्री का उपयोग करने से इनकार किया गया है (HTTP 401 त्रुटि के समान)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation type="unfinished">दूरस्थ सामग्री पर अनुरोध ऑपरेशन की अनुमति नहीं है</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation type="unfinished">दूरस्थ सामग्री सर्वर पर नहीं मिलि (HTTP 404 त्रुटि के लिए इसी तरह की)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation type="unfinished">दूरस्थ सर्वर को प्रमाणीकरण के लिए सामग्री की  आवश्यकता है लेकिन प्रदान किये गये क्रेडेंशियल्स (यदि कोई हो) को  स्वीकार नहीं किया गया है</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation type="unfinished">अनुरोध  फिर से भेजा जाना जरूरी है,लेकिन  यह उदाहरण विफल रहा क्योंकि अपलोड डेटा एक दूसरी बार पढ़ा नहीं जा सका.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation type="unfinished">नेटवर्क प्रवेश एपीआई अनुरोध का सम्मान नहीं कर सकता क्योंकि प्रोटोकॉल ज्ञात नहीं है हो पा रहा है</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation type="unfinished">अनुरोधित आपरेशन इस प्रोटोकॉल के लिए अमान्य है</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation type="unfinished">एक अज्ञात नेटवर्क से संबंधित त्रुटि का पता चला है</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation type="unfinished">एक अज्ञात प्रॉक्सी से संबंधित त्रुटि का पता चला है</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation type="unfinished">एक अज्ञात दूरस्थ सामग्री से संबंधित त्रुटि का पता चला है</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation type="unfinished">प्रोटोकॉल में  टूटने का पता चला है (पार्सिंग त्रुटि, अवैध या अप्रत्याशित  प्रतिक्रियाएँ , आदि)</translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadWidget</name>
+    <message>
+        <source>Downloading files</source>
+        <translation type="unfinished">फाइलें डाउनलोड हो रही है </translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">निरस्त </translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation type="unfinished">एक्सपोर्ट के दौरान चेतावनी उभरी थी </translation>
+    </message>
+</context>
+<context>
+    <name>UBExportCFF</name>
+    <message>
+        <source>Export to IWB</source>
+        <translation type="unfinished">IWB पर एक्सपोर्ट करें </translation>
+    </message>
+    <message>
+        <source>Export as IWB File</source>
+        <translation type="unfinished">IWB फाइल के रुप में एक्सपोर्ट करें </translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation type="unfinished">दस्तावेज एक्सपोर्ट हो रहा है ...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation type="unfinished">एक्सपोर्ट सफल. </translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation type="unfinished">एक्सपोर्ट विफल. </translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocument</name>
+    <message>
+        <source>Page</source>
+        <translation type="unfinished">दस्तावेज एक्सपोर्ट कर रहा है .. </translation>
+    </message>
+    <message>
+        <source>Export as UBZ File</source>
+        <translation type="unfinished">UBZ फाइल के रुप में एक्सपोर्ट करें </translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation type="unfinished">दस्तावेज एक्सपोर्ट कर रहा है ..</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation type="unfinished">एक्सपोर्ट सफल. </translation>
+    </message>
+    <message>
+        <source>Exporting %1 %2 of %3</source>
+        <translation type="unfinished">%3 का  %1 %2  एक्सपोर्ट कर रहा है </translation>
+    </message>
+    <message>
+        <source>Export to Sankore Format</source>
+        <translation type="unfinished">संकोर प्रारुप में एक्सपोर्ट करें </translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation type="unfinished">निर्यात करने में विफल ...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation type="unfinished">UBX फ़ाइल के रूप में निर्यात करें </translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation type="unfinished">निर्यात दस्तावेज़ ...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation type="unfinished">निर्यात में सफल  रहा  </translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation type="unfinished">निर्यात में विफल रहा </translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation type="unfinished">Sankore UBX फ़ाइल के रूप में निर्यात करें</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportFullPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation type="unfinished">PDF फाइल के रुप में एक्सपोर्ट </translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation type="unfinished">दस्तावेज एक्सपोर्ट कर रहा है...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation type="unfinished">एक्सपोर्ट सफल </translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation type="unfinished">PDF पर एक्सपोर्ट कर रहा है </translation>
+    </message>
+</context>
+<context>
+    <name>UBExportPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation type="unfinished">PDF फाइल के रुप में एक्सपोर्ट </translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation type="unfinished">दस्तावेज एक्सपोर्ट कर रहा है...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation type="unfinished">एक्सपोर्ट सफल </translation>
+    </message>
+    <message>
+        <source>Exporting page %1 of %2</source>
+        <translation type="unfinished">%2 का %1 पेज एक्सपोर्ट कर रहा है </translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation type="unfinished">PDF पर एक्सपोर्ट हो रहा है</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportWeb</name>
+    <message>
+        <source>Page</source>
+        <translation type="unfinished">पेज </translation>
+    </message>
+    <message>
+        <source>Export as Web data</source>
+        <translation type="unfinished">वेब डाटा के रुप में एक्सपोर्ट </translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation type="unfinished">दस्तावेज एक्सपोर्ट हो रहा है...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation type="unfinished">एक्सपोर्ट सफल. .</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation type="unfinished">एक्सपोर्ट विफल. </translation>
+    </message>
+    <message>
+        <source>Export to Web Browser</source>
+        <translation type="unfinished">वेब ब्राउजर पर एक्सपोर्ट कर रहा है </translation>
+    </message>
+</context>
+<context>
+    <name>UBFeatureProperties</name>
+    <message>
+        <source>Add to page</source>
+        <translation type="unfinished">पेज पर जोड़ें </translation>
+    </message>
+    <message>
+        <source>Set as background</source>
+        <translation type="unfinished">पृष्ठभूमि के रुप में सेट करें </translation>
+    </message>
+    <message>
+        <source>Add to library</source>
+        <translation type="unfinished">पुस्तकालय पर जोड़ें </translation>
+    </message>
+    <message>
+        <source>Object informations</source>
+        <translation type="unfinished">वस्तु की जानकारी </translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">जोडें </translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesActionBar</name>
+    <message>
+        <source>Add to favorites</source>
+        <translation type="unfinished">पसन्दीदा पर  जोड़ें </translation>
+    </message>
+    <message>
+        <source>Share</source>
+        <translation type="unfinished">साझा करें </translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation type="unfinished">तलाश </translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation type="unfinished">मिटाएं </translation>
+    </message>
+    <message>
+        <source>Back to folder</source>
+        <translation type="unfinished">फोल्डर पर लौटें </translation>
+    </message>
+    <message>
+        <source>Remove from favorites</source>
+        <translation type="unfinished">पसन्दीदा से हटाएं </translation>
+    </message>
+    <message>
+        <source>Create new folder</source>
+        <translation type="unfinished">नया फोल्डर बनाएं </translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation type="unfinished">फाइल सिस्टम फिर स्केन करें </translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesController</name>
+    <message>
+        <source>ImportedImage</source>
+        <translation type="unfinished">इंपोर्ट किए गए चित्र </translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation type="unfinished">आडियोज </translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation type="unfinished">मूव्हीज </translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation type="unfinished">चित्र </translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation type="unfinished">एनिमेशन्स  </translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation type="unfinished">परस्पर संवाद </translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation type="unfinished">उपयोग </translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation type="unfinished">रुप </translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation type="unfinished">पसन्दीदा </translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation type="unfinished">वेब तलाश  </translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation type="unfinished">ट्रेश </translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation type="unfinished">बुकमार्क्स </translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation type="unfinished">वेब</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation type="unfinished">स्वीकार </translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">निरस्त </translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation type="unfinished">एक नया फोल्डर नाम प्रविष्ट करें </translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation type="unfinished">लोड हो रहा है </translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsGroupContainerItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation type="unfinished">बन्द </translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation type="unfinished">विस्तारित स्क्रीन पर दिखाई देने योग्य </translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation type="unfinished">एक कार्यवाही जोड़ें </translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation type="unfinished">ऑडियो  के लिए लिंक निकालें</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation type="unfinished">पेज के लिए लिंक निकालें</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation type="unfinished">वेब url के लिए लिंक निकालें</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation type="unfinished">बन्द </translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation type="unfinished">विस्तारित स्क्रीन पर दिखाई देने योग्य </translation>
+    </message>
+    <message>
+        <source>Go to Content Source</source>
+        <translation type="unfinished">विषय सामग्री स्त्रोत पर जाएं </translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation type="unfinished">एक कार्यवाही जोड़ें </translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation type="unfinished">ऑडियो  के लिए लिंक निकालें</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation type="unfinished">पेज के लिए लिंक निकालें</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation type="unfinished">वेब url के लिए लिंक निकालें</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
+    <message>
+        <source><Type Text Here></source>
+        <translation type="unfinished"><यहां पाठ टाईप करेँ ></translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItemDelegate</name>
+    <message>
+        <source>Text Color</source>
+        <translation type="unfinished">पाठ रंग </translation>
+    </message>
+    <message>
+        <source>Editable</source>
+        <translation type="unfinished">सुधार के योग्य </translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation type="unfinished">लोड हो रहा है ... </translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItemDelegate</name>
+    <message>
+        <source>Frozen</source>
+        <translation type="unfinished">जमा हुआ </translation>
+    </message>
+    <message>
+        <source>Transform as Tool </source>
+        <translation type="unfinished">टूल के रुप में रुपांतरित </translation>
+    </message>
+</context>
+<context>
+    <name>UBImportCFF</name>
+    <message>
+        <source>Common File Format (</source>
+        <translation type="unfinished">सामान्य फाइल प्रारुप </translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation type="unfinished">फाइल  %1 इँपोर्ट कर रहा है ...</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation type="unfinished">फाइल %1 का इंपोर्ट विफल. </translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation type="unfinished">इंपोर्ट सफल. </translation>
+    </message>
+    <message>
+        <source>Import failed.</source>
+        <translation type="unfinished">इंपोर्ट विफल. </translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocument</name>
+    <message>
+        <source>Importing file %1...</source>
+        <translation type="unfinished">फाइल  %1 इंपोर्ट कर रहा है...</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation type="unfinished">इंपोर्ट सफल. </translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation type="unfinished">फाइल %1 का इंपोर्ट विफल. </translation>
+    </message>
+    <message>
+        <source>Open-Sankore (*.ubz)</source>
+        <translation type="unfinished">संकोर-खोलें   (*.ubz)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation type="unfinished">ओपन - Sankore (दस्तावेजों का सेट) (ubx *.)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
+    <message>
+        <source>Image Format (</source>
+        <translation type="unfinished">चित्र प्रारुप  (</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
+    <message>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation type="unfinished">पोर्टेबल डाक्युमेंट फार्मेट  (*.pdf)</translation>
+    </message>
+    <message>
+        <source>PDF import failed.</source>
+        <translation type="unfinished">PDF इंपोर्ट विफल. </translation>
+    </message>
+    <message>
+        <source>Importing page %1 of %2</source>
+        <translation type="unfinished">%2 का पेज %1 इंपोर्ट कर रहा है.</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
+    <message>
+        <source>Error while publishing video to intranet (%1)</source>
+        <translation type="unfinished">इंटरनेट पर विडीयो पब्लिशिंग करने के दौरान त्रुटि  (%1)</translation>
+    </message>
+    <message>
+        <source>Publishing to Intranet in progress %1 %</source>
+        <translation type="unfinished">इंट्रानेट पर पब्लिशिंग प्रगति पर है  %1 %</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish</source>
+        <translation type="unfinished">पब्लिश </translation>
+    </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
+    <message>
+        <source>Enter</source>
+        <translation type="unfinished">प्रविष्ट </translation>
+    </message>
+</context>
+<context>
+    <name>UBMainWindow</name>
+    <message>
+        <source>Yes</source>
+        <translation type="unfinished">हां </translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation type="unfinished">नहीं </translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation type="unfinished">ठीक है  </translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished">बन्द </translation>
+    </message>
+</context>
+<context>
+    <name>UBNetworkAccessManager</name>
+    <message>
+        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <translation type="unfinished"><qt> %2</qt> पर %1 के लिए प्रयोक्ता का नाम और पासवर्ड प्रविष्ट करें </translation>
+    </message>
+    <message>
+        <source>Failed to log to Proxy</source>
+        <translation type="unfinished">प्राक्सी पर लाग करने में विफल </translation>
+    </message>
+    <message>
+        <source>SSL Errors:
+
+%1
+
+%2
+
+Do you want to ignore these errors for this host?</source>
+        <translation type="unfinished">SSL त्रुटियां :  %1 %2 क्या आप इस मेजबान के लिए इन त्रुटियों को नजर अन्दाज करना चाहते हैं ? </translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation type="unfinished">हां </translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation type="unfinished">नहीं </translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translation type="unfinished">(कापी) </translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translation type="unfinished">दस्तावेज रिपाजिटरी हानि </translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation type="unfinished">दस्तावेज रिपाजिटरी '%1 पर संकोर ने अपनी पहुंच गंवा दी है. दुर्भाग्य से डाटा करप्शन से बचने के लिए प्रयोग को बन्द करना जरुरी है. नवीनतम बदलाव की हानि भी हो सकती है. </translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation type="unfinished">इंग्लिश </translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation type="unfinished">रुसी </translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation type="unfinished">जर्मन </translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation type="unfinished">फ्रेंच </translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation type="unfinished">स्विस फ्रेंच </translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation type="unfinished">इनकोडर शुरु करने में विफल... </translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation type="unfinished">कोई पोडकास्ट इनकोडर उपलब्ध नहीं... </translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation type="unfinished">पार्ट  %1</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation type="unfinished">आपके डेस्कटाप पर ...</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation type="unfinished">फोल्डर  %1 में </translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation type="unfinished">पोडकास्ट तैयार  %1</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation type="unfinished">पोडकास्ट रिकार्डिंग त्रुटि (%1)</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation type="unfinished">डिफाल्ट आडियो इनपुट </translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation type="unfinished">कोई आडियो रिकार्डिंग नहीं </translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translation type="unfinished">छोटा </translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation type="unfinished">माध्यम </translation>
+    </message>
+    <message>
+        <source>Full</source>
+        <translation type="unfinished">पूर्ण </translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translation type="unfinished">इंट्रानेट पर पब्लिश करें </translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translation type="unfinished">यूट्युब पर पब्लिश करें </translation>
+    </message>
+    <message>
+        <source>Sankore Cast</source>
+        <translation type="unfinished">संकोर कास्ट </translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>version: </source>
+        <translation type="unfinished">संस्करण : </translation>
+    </message>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translation type="unfinished">मार्कर दबाव के प्रति संवेदनशील है </translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation type="unfinished">डिफ़ॉल्ट</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation type="unfinished">अरबी भाषा</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation type="unfinished">बल्गेरियाई</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation type="unfinished">कैटलन</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation type="unfinished">चेक</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation type="unfinished">डेनिश</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation type="unfinished">जर्मन </translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation type="unfinished">ग्रीक</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation type="unfinished">इंग्लिश </translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation type="unfinished">इंग्लिश UK</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation type="unfinished">स्पेनिश</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation type="unfinished">फ्रेंच </translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation type="unfinished">स्विस फ्रेंच </translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation type="unfinished">इतालवी</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation type="unfinished">यहूदी</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation type="unfinished">जापानी</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation type="unfinished">कोरियाई</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation type="unfinished">मेलेगसी</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation type="unfinished">नार्वेजियन</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation type="unfinished">डच</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation type="unfinished">पोलिश</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation type="unfinished">रोमांश</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation type="unfinished">रोमानियाई</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation type="unfinished">रुसी </translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation type="unfinished">स्लोवाक</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation type="unfinished">स्वीडिश</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation type="unfinished">तुर्की</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation type="unfinished">चीनी</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation type="unfinished">चीनी सरलीकृत</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation type="unfinished">पारंपरिक चीनी</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBProxyLoginDlg</name>
+    <message>
+        <source>Proxy Login</source>
+        <translation type="unfinished">प्राक्सी लाग इन </translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation type="unfinished">प्रयोक्ता का नाम : </translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation type="unfinished">पासवर्ड : </translation>
+    </message>
+</context>
+<context>
+    <name>UBPublicationDlg</name>
+    <message>
+        <source>Publish document on the web</source>
+        <translation type="unfinished">दस्तावेज को वेब पर पब्लिश करें </translation>
+    </message>
+    <message>
+        <source>Title:</source>
+        <translation type="unfinished">शीर्षक : </translation>
+    </message>
+    <message>
+        <source>Description:</source>
+        <translation type="unfinished">विवरण : </translation>
+    </message>
+    <message>
+        <source>Publish</source>
+        <translation type="unfinished">पब्लिश </translation>
+    </message>
+</context>
+<context>
+    <name>UBSettings</name>
+    <message>
+        <source>My Movies</source>
+        <translation type="unfinished">मेरे चलचित्र  </translation>
+    </message>
+    <message>
+        <source>/Web</source>
+        <translation type="unfinished">/वेव</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation type="unfinished">अगली बार दर्शनीय</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGActionWidget</name>
+    <message>
+        <source>Teacher</source>
+        <translation type="unfinished">शिक्षक </translation>
+    </message>
+    <message>
+        <source>Student</source>
+        <translation type="unfinished">विद्यार्थी </translation>
+    </message>
+    <message>
+        <source>Type task here ...</source>
+        <translation type="unfinished">कार्य यहां टाइप करें... </translation>
+    </message>
+</context>
+<context>
+    <name>UBTGMediaWidget</name>
+    <message>
+        <source>drop media here ...</source>
+        <translation type="unfinished">मीडिया यहां ड्राप करें ... </translation>
+    </message>
+    <message>
+        <source>Type title here...</source>
+        <translation type="unfinished">शीर्षक यहां टाइप करें ... </translation>
+    </message>
+</context>
+<context>
+    <name>UBTGUrlWidget</name>
+    <message>
+        <source>Insert link title here...</source>
+        <translation type="unfinished">लिंक का शीर्षक यहां प्रविष्ट करें ... </translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherBarWidget</name>
+    <message>
+        <source></source>
+        <translatorcomment><सन्दर्भ टिप्पणी ></translatorcomment>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuideEditionWidget</name>
+    <message>
+        <source>Type title here ...</source>
+        <translation type="unfinished">यहां शीर्षक टाइप करें ... </translation>
+    </message>
+    <message>
+        <source>Type comment here ...</source>
+        <translation type="unfinished">यहां टिप्पणी टाइप करें ... </translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation type="unfinished">एक कार्यवाही जोड़ें </translation>
+    </message>
+    <message>
+        <source>Add a media</source>
+        <translation type="unfinished">एक मीडिया जोड़ें </translation>
+    </message>
+    <message>
+        <source>Add a link</source>
+        <translation type="unfinished">एक लिंक जोड़ें </translation>
+    </message>
+    <message>
+        <source>Page: %0</source>
+        <translation type="unfinished">पेज्: %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePageZeroWidget</name>
+    <message>
+        <source>Type session title here ...</source>
+        <translation type="unfinished">सत्र का शीर्षक यहां टाइप करें ... </translation>
+    </message>
+    <message>
+        <source>Author(s)</source>
+        <translation type="unfinished">लेखक </translation>
+    </message>
+    <message>
+        <source>Type authors here ...</source>
+        <translation type="unfinished">लेखकों के नाम यहां टाइप करें ... </translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation type="unfinished">उद्देश्य </translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation type="unfinished">उद्देश्यों को यहां टाइप करें ... </translation>
+    </message>
+    <message>
+        <source>Resource indexing</source>
+        <translation type="unfinished">संसाधन अनुसूची </translation>
+    </message>
+    <message>
+        <source>Keywords:</source>
+        <translation type="unfinished">कीवर्ड्स : </translation>
+    </message>
+    <message>
+        <source>Type keywords here ...</source>
+        <translation type="unfinished">कीवर्ड्स यहां टाइप करें ... </translation>
+    </message>
+    <message>
+        <source>Level:</source>
+        <translation type="unfinished">स्तर:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation type="unfinished">विषय : </translation>
+    </message>
+    <message>
+        <source>Type:</source>
+        <translation type="unfinished">टाइप : </translation>
+    </message>
+    <message>
+        <source>Licence</source>
+        <translation type="unfinished">लाइसेंस</translation>
+    </message>
+    <message>
+        <source>Attribution CC BY</source>
+        <translation type="unfinished">एट्रीब्यूशन सीसी बाय </translation>
+    </message>
+    <message>
+        <source>Attribution-NoDerivs CC BY-ND</source>
+        <translation type="unfinished">एट्रीब्यूशन-नो डेराइव्ज सीसी बाय-एनडी  </translation>
+    </message>
+    <message>
+        <source>Attribution-ShareAlike CC BY-SA</source>
+        <translation type="unfinished">एट्रीब्यूशन -शेयर अलाइक सीसी बाय-एसए </translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial CC BY-NC</source>
+        <translation type="unfinished">एट्रीब्यूशन-नान कमर्शियल सीसी ब्य-एनसी </translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
+        <translation type="unfinished">एट्रीब्यूशन-नान कमर्शियल-नो डिराइव्ज सीसी बाय-... </translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
+        <translation type="unfinished">एट्रीब्यूशन-नान कमर्शियल-शेयर अलाइक सीसी बाय ..एनसी-एसए </translation>
+    </message>
+    <message>
+        <source>Public domain</source>
+        <translation type="unfinished">पब्लिक डोमेन </translation>
+    </message>
+    <message>
+        <source>Copyright</source>
+        <translation type="unfinished">सर्वाधिकार </translation>
+    </message>
+    <message>
+        <source>Created the:
+</source>
+        <translation type="unfinished">बनाया गया : </translation>
+    </message>
+    <message>
+        <source>Updated the:
+</source>
+        <translation type="unfinished">अपडेट किया गया : </translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation type="unfinished">शीर्षक पेज </translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePresentationWidget</name>
+    <message>
+        <source>Page: %0</source>
+        <translation type="unfinished">पेज : %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBThumbnailAdaptor</name>
+    <message>
+        <source>Generating preview thumbnails ...</source>
+        <translation type="unfinished">पूर्व अवलोकन थंबनेल्स तैयार हो रहा है ... </translation>
+    </message>
+    <message>
+        <source>%1 thumbnails generated ...</source>
+        <translation type="unfinished">%1 थंबनेल्स तैयार ... </translation>
+    </message>
+</context>
+<context>
+    <name>UBToolsManager</name>
+    <message>
+        <source>Mask</source>
+        <translation type="unfinished">मुखौटा</translation>
+    </message>
+    <message>
+        <source>Ruler</source>
+        <translation type="unfinished">पैमाना</translation>
+    </message>
+    <message>
+        <source>Compass</source>
+        <translation type="unfinished">प्रकार </translation>
+    </message>
+    <message>
+        <source>Protractor</source>
+        <translation type="unfinished">चान्दा</translation>
+    </message>
+    <message>
+        <source>Triangle</source>
+        <translation type="unfinished">त्रिकोण </translation>
+    </message>
+    <message>
+        <source>Magnifier</source>
+        <translation type="unfinished">सूक्ष्मदर्शी </translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translation type="unfinished">कैश</translation>
+    </message>
+</context>
+<context>
+    <name>UBTrapWebPageContentController</name>
+    <message>
+        <source>Whole page</source>
+        <translation type="unfinished">पूर्ण पेज </translation>
+    </message>
+    <message>
+        <source>Embed </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBUpdateDlg</name>
+    <message>
+        <source>Document updater</source>
+        <translation type="unfinished">दस्तावेज अपडेटर </translation>
+    </message>
+    <message>
+        <source> files require an update.</source>
+        <translation type="unfinished">फाइलों को एक अपडेट की जरुरत है.  </translation>
+    </message>
+    <message>
+        <source>Backup path: </source>
+        <translation type="unfinished">बेक अप मार्ग : </translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation type="unfinished">ब्राउज </translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation type="unfinished">अपडेट </translation>
+    </message>
+    <message>
+        <source>Select a backup folder</source>
+        <translation type="unfinished">एक बेक अप फोल्डर चुने  </translation>
+    </message>
+    <message>
+        <source>Files update successful!
+Please reboot the application to access the updated documents.</source>
+        <translation type="unfinished">फाइल्स अपडेट सफल ! कृपया अपडेट किए दस्तावेजों को देखने के लिए प्रयोगों को रिबूट करें. </translation>
+    </message>
+    <message>
+        <source>An error occured during the update. The files have not been affected.</source>
+        <translation type="unfinished">अपडेट के दौरान एक त्रुटि आई है. फाइल्स प्रभावित नही हुई है. </translation>
+    </message>
+    <message>
+        <source>Files update results</source>
+        <translation type="unfinished">फाइल्स अपडेट परिणाम </translation>
+    </message>
+    <message>
+        <source>Updating file </source>
+        <translation type="unfinished">फाइल अपडेट हो रही है </translation>
+    </message>
+    <message>
+        <source>Please wait the import process will start soon...</source>
+        <translation type="unfinished">कृपया इंतजार करें इंपोर्ट प्रक्रिया जल्दी ही शुरु होगी... </translation>
+    </message>
+    <message>
+        <source>Remind me later</source>
+        <translation type="unfinished">मुझे बाद में याद दिलाएं </translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPluginWidget</name>
+    <message>
+        <source>Loading...</source>
+        <translation type="unfinished">लोड हो रहा हए... </translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPublisher</name>
+    <message>
+        <source>Publish Document on Sankore Web</source>
+        <translation type="unfinished">दस्तावेज को संकोर वेब पर पब्लिश करें </translation>
+    </message>
+</context>
+<context>
+    <name>UBWidgetUniboardAPI</name>
+    <message>
+        <source>%0 called (method=%1, status=%2)</source>
+        <translation type="unfinished">%0 काल्ड (विधि=%1, स्थिति=%2)</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublisher</name>
+    <message>
+        <source>YouTube authentication failed.</source>
+        <translation type="unfinished">यूटयूब प्रमाणीकरण विफल. </translation>
+    </message>
+    <message>
+        <source>Error while uploading video to YouTube (%1)</source>
+        <translation type="unfinished">यूट्यूब पर विडीयो अपलोड करने के दौरान त्रुटि  (%1)</translation>
+    </message>
+    <message>
+        <source>Upload to YouTube in progress %1 %</source>
+        <translation type="unfinished">यूटयूब पर विडीयो अपलोड हो रहा है  %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation type="unfinished">संकोर-खोलें </translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation type="unfinished">संकोर खोलें</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublishingDialog</name>
+    <message>
+        <source>Upload</source>
+        <translation type="unfinished">अपलोड </translation>
+    </message>
+    <message>
+        <source>Autos & Vehicles</source>
+        <translation type="unfinished">आटो तथा गाड़ियां </translation>
+    </message>
+    <message>
+        <source>Music</source>
+        <translation type="unfinished">संगीत </translation>
+    </message>
+    <message>
+        <source>Pets & Animals</source>
+        <translation type="unfinished">पालतु जानवर तथा पशु </translation>
+    </message>
+    <message>
+        <source>Sports</source>
+        <translation type="unfinished">खेलकूद </translation>
+    </message>
+    <message>
+        <source>Travel & Events</source>
+        <translation type="unfinished">यात्रा तथा घटनाएं </translation>
+    </message>
+    <message>
+        <source>Gaming</source>
+        <translation type="unfinished">गेमिंग </translation>
+    </message>
+    <message>
+        <source>Comedy</source>
+        <translation type="unfinished">कामेडी </translation>
+    </message>
+    <message>
+        <source>People & Blogs</source>
+        <translation type="unfinished">लोग तथा ब्लाग्स </translation>
+    </message>
+    <message>
+        <source>News & Politics</source>
+        <translation type="unfinished">समाचार तथा राजनीति </translation>
+    </message>
+    <message>
+        <source>Entertainment</source>
+        <translation type="unfinished">मनोरंजन </translation>
+    </message>
+    <message>
+        <source>Education</source>
+        <translation type="unfinished">शिक्षा </translation>
+    </message>
+    <message>
+        <source>Howto & Style</source>
+        <translation type="unfinished">कैसे तथा शैली </translation>
+    </message>
+    <message>
+        <source>Nonprofits & Activism</source>
+        <translation type="unfinished">गैर लाभकारी तथा सक्रियतावाद </translation>
+    </message>
+    <message>
+        <source>Science & Technology</source>
+        <translation type="unfinished">विज्ञान तथा तकनीक </translation>
+    </message>
+</context>
+<context>
+    <name>UBZoomPalette</name>
+    <message>
+        <source>%1 x</source>
+        <translation type="unfinished">%1 x</translation>
+    </message>
+</context>
+<context>
+    <name>UniboardSankoreTransition</name>
+    <message>
+        <source>Import old Uniboard/Sankore documents</source>
+        <translation type="unfinished">पुराने यूनिबोर्ड/संकोर दस्तावेज इंपोर्ट करें </translation>
+    </message>
+    <message>
+        <source>There are no documents that should be imported</source>
+        <translation type="unfinished">ऐसे कोई दस्तावेज नहीं है जिन्हें इंपोर्ट किया जाना चाहिए </translation>
+    </message>
+</context>
+<context>
+    <name>WBClearButton</name>
+    <message>
+        <source>Clear</source>
+        <translation type="unfinished">क्लियर </translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadItem</name>
+    <message>
+        <source>Save File</source>
+        <translation type="unfinished">फाइल सुरक्षित करें </translation>
+    </message>
+    <message>
+        <source>Download canceled: %1</source>
+        <translation type="unfinished">डाउनलोड निरस्त :  %1</translation>
+    </message>
+    <message>
+        <source>Error opening saved file: %1</source>
+        <translation type="unfinished">सुरक्षित फाइल खोलने में त्रुटि : %1</translation>
+    </message>
+    <message>
+        <source>Error saving: %1</source>
+        <translation type="unfinished">सुरक्षित करने में त्रुटि :  %1</translation>
+    </message>
+    <message>
+        <source>Network Error: %1</source>
+        <translation type="unfinished">नेटवर्क त्रुटि :  %1</translation>
+    </message>
+    <message>
+        <source>seconds</source>
+        <translation type="unfinished">सैकण्ड्स </translation>
+    </message>
+    <message>
+        <source>minutes</source>
+        <translation type="unfinished">मिनट्स </translation>
+    </message>
+    <message>
+        <source>- %4 %5 remaining</source>
+        <translation type="unfinished">- %4 %5 शेष </translation>
+    </message>
+    <message>
+        <source>%1 of %2 (%3/sec) %4</source>
+        <translation type="unfinished">%2 (%3/sec) %4 का %1 </translation>
+    </message>
+    <message>
+        <source>?</source>
+        <comment>unknown file size</comment>
+        <translation type="unfinished">?</translation>
+    </message>
+    <message>
+        <source>%1 of %2 - Stopped</source>
+        <translation type="unfinished"> %2 का %1  - रोका गया </translation>
+    </message>
+    <message>
+        <source>bytes</source>
+        <translation type="unfinished">बाइट्स </translation>
+    </message>
+    <message>
+        <source>KB</source>
+        <translation type="unfinished">केबी </translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translation type="unfinished">एमबी </translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadManager</name>
+    <message>
+        <source>1 Download</source>
+        <translation type="unfinished">1 डाउनलोड </translation>
+    </message>
+    <message>
+        <source>%1 Downloads</source>
+        <comment>always >= 2</comment>
+        <translation type="unfinished">%1 डाउनलोड्स </translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryModel</name>
+    <message>
+        <source>Title</source>
+        <translation type="unfinished">शीर्षक</translation>
+    </message>
+    <message>
+        <source>Address</source>
+        <translation type="unfinished">पता </translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryTreeModel</name>
+    <message>
+        <source>Earlier Today</source>
+        <translation type="unfinished">आज पहले </translation>
+    </message>
+    <message>
+        <source>%1 items</source>
+        <translation type="unfinished">%1 वस्तुएं </translation>
+    </message>
+</context>
+<context>
+    <name>WBSearchLineEdit</name>
+    <message>
+        <source>Search</source>
+        <translation type="unfinished">तलाश </translation>
+    </message>
+</context>
+<context>
+    <name>WBTabBar</name>
+    <message>
+        <source>New &Tab</source>
+        <translation type="unfinished">नया और टेब </translation>
+    </message>
+    <message>
+        <source>Clone Tab</source>
+        <translation type="unfinished">क्लोन टेब </translation>
+    </message>
+    <message>
+        <source>&Close Tab</source>
+        <translation type="unfinished">और बन्द टेब </translation>
+    </message>
+    <message>
+        <source>Close &Other Tabs</source>
+        <translation type="unfinished">बन्द और अन्य टेब्ज </translation>
+    </message>
+    <message>
+        <source>Reload Tab</source>
+        <translation type="unfinished">रिलोड टेब </translation>
+    </message>
+    <message>
+        <source>Reload All Tabs</source>
+        <translation type="unfinished">सभी टॆब्ज रिलोड करें </translation>
+    </message>
+</context>
+<context>
+    <name>WBTabWidget</name>
+    <message>
+        <source>Recently Closed Tabs</source>
+        <translation type="unfinished">हाल में ही बन्द टेब्ज </translation>
+    </message>
+    <message>
+        <source>(Untitled)</source>
+        <translation type="unfinished">(बिना शीर्षक के) </translation>
+    </message>
+</context>
+<context>
+    <name>WBToolbarSearch</name>
+    <message>
+        <source>Search</source>
+        <translation type="unfinished">तलाश </translation>
+    </message>
+    <message>
+        <source>No Recent Searches</source>
+        <translation type="unfinished">हाल की कोई तलाश नहीं </translation>
+    </message>
+    <message>
+        <source>Recent Searches</source>
+        <translation type="unfinished">हाल की तलाशें </translation>
+    </message>
+    <message>
+        <source>Clear Recent Searches</source>
+        <translation type="unfinished">हाल की खोजों को खत्म करें </translation>
+    </message>
+</context>
+<context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation type="unfinished">जाल के लिए सामग्री का चयन करें:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation type="unfinished">प्रयोग का नाम </translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation type="unfinished">प्रतिबंध और अस्वीकरण.</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation type="unfinished">यह सुविधा सबसे आम वेब पन्नों पर काम करने के लिए विकसित की है</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation type="unfinished">कृपया लिंक बनाने या वेब से सामग्री को  पकड़ने  के लिए  कॉपीराइट का सम्मान करें </translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>WBWebPage</name>
+    <message>
+        <source>Download</source>
+        <translation type="unfinished">डाउनलोड </translation>
+    </message>
+    <message>
+        <source>Add to Current Document</source>
+        <translation type="unfinished">वर्तमान दस्तावेज पर जोड़ें </translation>
+    </message>
+    <message>
+        <source>PDF</source>
+        <translation type="unfinished">पीडीएफ </translation>
+    </message>
+    <message>
+        <source>Error loading page: %1</source>
+        <translation type="unfinished">पेज लोड करने में त्रुटि : %1</translation>
+    </message>
+    <message>
+        <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
+        <translation type="unfinished">डाउनलोड किया गया पीडीएफ-दस्तावेज : आप पीडीएफ-फाइल डाउनलोड करना चाहेंगे या इसे वर्तमान संकोर दस्तावेज पर जोड़्ना पसन्द करेंगे ? </translation>
+    </message>
+</context>
+<context>
+    <name>WBWebView</name>
+    <message>
+        <source>Open in New Tab</source>
+        <translation type="unfinished">नये टेब पर खोलें </translation>
+    </message>
+</context>
+<context>
+    <name>YouTubePublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation type="unfinished">पोडकास्ट को यूटयूब पर पब्लिश करें </translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation type="unfinished">शीर्षक </translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation type="unfinished">विवरण </translation>
+    </message>
+    <message>
+        <source>Keywords</source>
+        <translation type="unfinished">कीवर्ड्स </translation>
+    </message>
+    <message>
+        <source>Uniboard</source>
+        <translation type="unfinished">यूनिबोर्ड </translation>
+    </message>
+    <message>
+        <source>Category</source>
+        <translation type="unfinished">कैटेगरी </translation>
+    </message>
+    <message>
+        <source>YouTube Username</source>
+        <translation type="unfinished">यूटयूब प्रयोक्ता का नाम </translation>
+    </message>
+    <message>
+        <source>YouTube Password</source>
+        <translation type="unfinished">यूटयूब पासवर्ड </translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
+        <translation type="unfinished"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">'अपलोड' क्लिक करते हुए, आप यह प्रमाणित करते हैं कि आपके पास विषय सामग्री के सर्वाधिकार हैं या आप स्वामी के द्वारा विषय सामग्री को यूटयूब पर सार्वजनिक रुप से उपलब्ध कराने के लिए अधिकृत किए गए है, और अन्यथा यह यहां स्थित यूट्यूब के नियमों के अनुसार है </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished">रिबूट पर साख पुनर्स्थापित</translation>
+    </message>
+</context>
+<context>
+    <name>brushProperties</name>
+    <message>
+        <source>Opacity</source>
+        <translation type="unfinished">अस्पष्टता</translation>
+    </message>
+    <message>
+        <source>On Light Background</source>
+        <translation type="unfinished">हलकी पृष्ठभूमि पर </translation>
+    </message>
+    <message>
+        <source>On Dark Background</source>
+        <translation type="unfinished">गहरी पृष्ठभूमि पर</translation>
+    </message>
+    <message>
+        <source>Line Width</source>
+        <translation type="unfinished">लाईन की चौड़ाई </translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation type="unfinished">माध्यम </translation>
+    </message>
+    <message>
+        <source>Strong</source>
+        <translation type="unfinished">शक्तिशाली</translation>
+    </message>
+    <message>
+        <source>Fine</source>
+        <translation type="unfinished">उत्कृष्ट </translation>
+    </message>
+    <message>
+        <source>Pen is Pressure Sensitive</source>
+        <translation type="unfinished">पेन दबाव के प्रति संवेदनशील है </translation>
+    </message>
+</context>
+<context>
+    <name>capturePublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation type="unfinished">डायलाग </translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation type="unfinished">शीर्षक</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation type="unfinished">ई-मेल </translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation type="unfinished">लेखक </translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation type="unfinished">विवरण</translation>
+    </message>
+</context>
+<context>
+    <name>documentPublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation type="unfinished">डायलाग</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation type="unfinished">शीर्षक</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation type="unfinished">ई-मेल</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation type="unfinished">लेखक</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation type="unfinished">विवरण</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable PDF Version</source>
+        <translation type="unfinished">डाउनलोड करने योग्य पीडीएफ वर्शन संलग्न करें </translation>
+    </message>
+    <message>
+        <source>Attach Downloadable Uniboard File (UBZ)</source>
+        <translation type="unfinished">डाउनलोड किए जाने योग्य यूनिबोर्ड फाईल  (UBZ) संलग्न करें </translation>
+    </message>
+    <message>
+        <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
+        <translation type="unfinished">चेतावनी : इस दस्तावेज में वीडियो है जो वेब पर सही ढंग से नहीं दिखाई देगा । </translation>
+    </message>
+</context>
+<context>
+    <name>documents</name>
+    <message>
+        <source>Uniboard Documents</source>
+        <translation type="unfinished">यूनिबोर्ड दस्तावेज </translation>
+    </message>
+</context>
+<context>
+    <name>preferencesDialog</name>
+    <message>
+        <source>Preferences</source>
+        <translation type="unfinished">वरियताएं </translation>
+    </message>
+    <message>
+        <source>Default Settings</source>
+        <translation type="unfinished">डिफाल्ट सेटिंग्स </translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished">बन्द करें </translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translation type="unfinished">प्रदर्शित करें </translation>
+    </message>
+    <message>
+        <source>Show Page with External Browser</source>
+        <translation type="unfinished">बाहरी ब्राउजर के साथ पेज दिखाएं </translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation type="unfinished">आभासी कीबोर्ड </translation>
+    </message>
+    <message>
+        <source>Keyboard button size:</source>
+        <translation type="unfinished">कीबोर्ड बटन साइज : </translation>
+    </message>
+    <message>
+        <source>Positioned at the Top (recommended for tablets)</source>
+        <translation type="unfinished">ऊपर स्थित (टेबलेट्स के लिए अनुशंसित) </translation>
+    </message>
+    <message>
+        <source>Positioned at the Bottom (recommended for white boards)</source>
+        <translation type="unfinished">नीचे स्थित (व्हाइट बोर्ड्स के लिए अनुशंसित) </translation>
+    </message>
+    <message>
+        <source>Display Text Under Button</source>
+        <translation type="unfinished">बटन के नीचे पाठ प्रदर्शित </translation>
+    </message>
+    <message>
+        <source>Stylus Palette</source>
+        <translation type="unfinished">लेखनी पैलेट </translation>
+    </message>
+    <message>
+        <source>Horizontal</source>
+        <translation type="unfinished">क्षैतिज </translation>
+    </message>
+    <message>
+        <source>Vertical</source>
+        <translation type="unfinished">लंब </translation>
+    </message>
+    <message>
+        <source>About</source>
+        <translation type="unfinished">के बारे में </translation>
+    </message>
+    <message>
+        <source>Software Update</source>
+        <translation type="unfinished">साफ्टवेयर अपडेट्स </translation>
+    </message>
+    <message>
+        <source>Check software update at launch</source>
+        <translation type="unfinished">लांच पर साफ्टवेयर जांच करें </translation>
+    </message>
+    <message>
+        <source>Internet</source>
+        <translation type="unfinished">इंटरनेट </translation>
+    </message>
+    <message>
+        <source>Home Page:</source>
+        <translation type="unfinished">होम पेज : </translation>
+    </message>
+    <message>
+        <source>Toolbar</source>
+        <translation type="unfinished">टूलबार </translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation type="unfinished">पेन </translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation type="unfinished">मार्कर </translation>
+    </message>
+    <message utf8="true">
+        <source>version : …</source>
+        <translation type="unfinished">संस्करण : </translation>
+    </message>
+    <message>
+        <source>Licences</source>
+        <translation type="unfinished">लाइसेंस </translation>
+    </message>
+    <message>
+        <source>zlib</source>
+        <translation type="unfinished">zlib</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <translation type="unfinished">नेटवर्क </translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation type="unfinished">संकोर-खोलें </translation>
+    </message>
+    <message>
+        <source>Show internal web page content on secondary screen or projector</source>
+        <translation type="unfinished">सेकण्डरी स्क्रीन या प्रोजेक्टर पर आंतरिक वेब पेज विषयसामग्री दिखाएं </translation>
+    </message>
+    <message>
+        <source>Multi display</source>
+        <translation type="unfinished">मल्टी डिसप्ले </translation>
+    </message>
+    <message>
+        <source>Swap control display and view display</source>
+        <translation type="unfinished">स्वेप कंट्रोल डिसप्ले तथा व्यू डिसप्ले </translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation type="unfinished">माध्यम </translation>
+    </message>
+    <message>
+        <source>Mode to start in:</source>
+        <translation type="unfinished">शुरु करने के लिए माध्यम :</translation>
+    </message>
+    <message>
+        <source>Board</source>
+        <translation type="unfinished">बोर्ड </translation>
+    </message>
+    <message>
+        <source>Desktop</source>
+        <translation type="unfinished">डेस्कटाप </translation>
+    </message>
+    <message>
+        <source>Proxy User:</source>
+        <translation type="unfinished">प्रोक्सी यूजर :</translation>
+    </message>
+    <message>
+        <source>Pass:</source>
+        <translation type="unfinished">पास : </translation>
+    </message>
+    <message>
+        <source>User:</source>
+        <translation type="unfinished">प्रयोक्ता : </translation>
+    </message>
+    <message>
+        <source>Pass: </source>
+        <translation type="unfinished">पास : </translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translation type="unfinished">क्रेडिट्स</translation>
+    </message>
+    <message>
+        <source>Start up tips</source>
+        <translation type="unfinished">प्रारंभ करने की युक्तियाँ </translation>
+    </message>
+    <message>
+        <source>Show start up tips</source>
+        <translation type="unfinished">प्रारंभ करने की युक्तियाँ दिखाएँ </translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation type="unfinished">भाषा</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation type="unfinished">एक भाषा का चयन करें</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation type="unfinished">नई भाषा अगले पुनर्प्रारंभ पर लोड किया जाएगा</translation>
+    </message>
+    <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation type="unfinished"> Open-Sankoré बन्द करें </translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation type="unfinished">फ़ाइल  निर्यात  करने  के लिये Planete Sankoré आईडी</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation type="unfinished">रिबूट पर साख पुनर्स्थापित</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation type="unfinished"> ओपन SSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation type="unfinished">Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation type="unfinished">QuaZIP</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>trapFlashDialog</name>
+    <message>
+        <source>Trap flash</source>
+        <translation type="unfinished">ट्रेप फ्लेश </translation>
+    </message>
+    <message>
+        <source>Select a flash to trap</source>
+        <translation type="unfinished">ट्रेप के लिए एक फ्लेश चुनें </translation>
+    </message>
+    <message>
+        <source>about:blank</source>
+        <translation type="unfinished">के बारे में : खाली </translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation type="unfinished">प्रयोग का नाम </translation>
+    </message>
+    <message>
+        <source>Create Application</source>
+        <translation type="unfinished">प्रयोग तैयार करें </translation>
+    </message>
+</context>
+</TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_it.ts b/Sankore-3.1/resources/i18n/sankore_it.ts
index 1db687f..e98816a 100644
--- a/Sankore-3.1/resources/i18n/sankore_it.ts
+++ b/Sankore-3.1/resources/i18n/sankore_it.ts
@@ -50,7 +50,7 @@
     <name>IntranetPodcastPublishingDialog</name>
     <message>
         <source>Publish Podcast to YouTube</source>
-        <translation>Pubblica su YouTube</translation>
+        <translation>Pubblica Podcast su YouTube</translation>
     </message>
     <message>
         <source>Title</source>
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Segnalibro</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>Configura la registrazione del Podcast</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Cattura Flash</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Cattura contenuto flash</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Cattura Web</translation>
     </message>
@@ -728,20 +721,12 @@
         <translation>Cattura una finestra</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Incorpora contenuto web</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Cattura un contenuto web incorporabile</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>Visualizza sullo schermo</translation>
     </message>
     <message>
         <source>Show Main Screen on Display Screen</source>
-        <translation>Visualizza lo schermo principale sullo schermo</translation>
+        <translation>Visualizza lo schermo principale sullo schermo esteso</translation>
     </message>
     <message>
         <source>Erase all Annotations</source>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation>Raggruppa</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download nella</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">biblioteca</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Download nella libreria</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download nella</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">pagina corrente</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Download nella pagina corrente</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aggiungi collegamento nella</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">biblioteca</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Aggiungi collegamento nella libreria</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Aggiungi collegamento nella</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">pagina corrente</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Aggiungi collegamento nella pagina corrente</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Segnalibro</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -988,12 +1010,110 @@
         <translation>Forma:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Dimensione:</translation>
+        <source>Alpha:</source>
+        <translation>Alfa:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Chiudi</translation>
+        <source>Geometry:</source>
+        <translation>Geometria:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Larghezza: </translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Altezza:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Mantieni le proporzioni</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Modalità:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Anteprima:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Chiudi cache</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><rilascia il contenuto></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Le immagini non sono accettate</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Impossibile visualizzare dati</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Il file rilasciato non è riconosciuto come file audio</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Riproduce un file audio</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Aggiungi il collegamento nella pagina</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Aggiungi collegamento ad una pagina Web</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Trascina e rilascia in questo box il file audio prelevato dalla biblioteca</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Pagina successiva</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Pagina precedente</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Titolo pagina</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Ultima pagina</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Numero Pagina</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Inserisci il testo del collegamento qui</translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1178,6 @@
         <translation>Elimina pagina</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Elimina documento</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Sei sicuro di voler eliminare il documento '%1'?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Svuota il cestino</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Sei sicuro di voler svuotare il cestino?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Sto svuotanto il cestino</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Cestino svuotato</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Elimina cartella</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Sei sicuro di voler eliminare la cartella '%1' e tutto il suo contenuto?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Nessun documento selezionato!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Apri file supportato</translation>
     </message>
@@ -1144,8 +1228,7 @@
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
         <translation type="unfinished">
-            <numerusform>Sei sicuro di voler rimuovere %n pagine dal documento '%1' selezionato?
-        </numerusform>
+            <numerusform>Sei sicuro di voler rimuovere %n pagine dal documento '%1' selezionato?</numerusform>
         </translation>
     </message>
     <message>
@@ -1160,6 +1243,14 @@
         <source>Untitled Documents</source>
         <translation>Documenti senza titolo</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1247,6 +1338,58 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Accetta</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Sostituisci</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Il nome %1 è già usato.
+Mantenendo questo nome sarà sovrascritto il documento esistente.
+Fornendo un nome nuovo sarà creato un nuovo documento.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>I miei documenti</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Modelli</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Cestino</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Documenti senza titolo</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Sto copiando pagina %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 pagine copiate</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1259,12 +1402,110 @@
     <message numerus="yes">
         <source>%1 pages copied</source>
         <translation type="unfinished">
-            <numerusform>%1 pagine copiate
-        </numerusform>
+            <numerusform>%1 pagine copiate</numerusform>
         </translation>
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Download fallito.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>il server remoto ha rifiutato la connessione (il server non sta accettando richieste)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>il server remoto ha chiuso la connessione prematuramente, prima che l'intera risposta fosse ricevuta ed elaborata</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>il nome dell'host remoto non è stato trovato (nome host non valido)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>la connessione al server remoto è scaduta</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>l'operazione è stata annullata con chiamate ad abort() o close() prima che fosse completata.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>la connessione SSL/TLS non è riuscita e non è stato stabilito il canale criptato. Dovrebbe essere stato emesso un segnale sslErrors().</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>la connessione è stata interrotta a causa della disconnessione dalla rete, tuttavia il sistema ha avviato il roaming a un altro punto di accesso. La richiesta sarà nuovamente sottomesssa e sarà elaborata non appena la connessione verrà ristabilita.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>la connessione al server proxy è stata rifiutata (il server proxy non sta accettando richieste)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>il proxy server ha chiuso la connessione prematuramente, prima che l'intera risposta fosse ricevuta e processata</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>il nome host del proxy non è stato trovato (proxy hostname non valido)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>la connessione al proxy è scaduta o il proxy non ha risposto in tempo utile alla richiesta inviata</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>il proxy richiede autenticazione per soddisfare la richiesta ma non ha accettato le credenziali fornite (se fornite)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>l'accesso al contenuto remoto è stato negato (simile all'errore HTTP 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>l'operazione richiesta sul contenuto remoto non è permessa</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>il contenuto remoto non è stato trovato sul server (simile all'errore HTTP 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>il server remoto richiede l'autenticazione per restituire il contenuto, ma le credenziali fornite non sono state accettate (se fornite)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>la richiesta necessitava di un reinvio, ma ciò non è riuscito per esempio perché non è possibile leggere i dati di upload una seconda volta.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>l'API di accesso alla rete non può soddisfare la richiesta perché il protocollo non è noto</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>l'operazione richiesta non è valida per questo protocollo</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>è stato rilevato un errore sconosciuto relativo alla rete</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>è stato rilevato un errore sconosciuto relativo al proxy</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>è stato rilevato un errore sconosciuto relativo al contenuto remoto</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>è stata rilevata un'interruzione nel protocollo (errore di parsing, risposte non valide o impreviste, ecc)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1333,6 +1574,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Esportazione fallita...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Esporta come file UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Esportazione documento in corso...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Esportazione riuscita.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Esportazione fallita.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Esporta nel formato UBX di Sankoré</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1419,6 +1687,10 @@
         <source>Object informations</source>
         <translation>Informazioni sull'oggetto</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">Aggiungi</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1501,6 +1773,14 @@
         <source>Trash</source>
         <translation>Cestino</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Segnalibri</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1534,6 +1814,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Visibile sullo schermo esteso</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Aggiungi un'azione</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Rimuovi il collegamento all'audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Rimuovi il collegamento alla pagina</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Rimuovi il collegamento all'indirizzo web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1549,6 +1845,22 @@
         <source>Go to Content Source</source>
         <translation>Vai alla sorgente del contenuto</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Aggiungi un'azione</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Rimuovi il collegamento all'audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Rimuovi il collegamento alla pagina</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Rimuovi il collegamento all'indirizzo web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1569,13 +1881,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1636,6 +1941,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (insieme di documenti) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1844,12 +2156,148 @@ Vuoi ignorare gli errori per questo host?</translation>
     <name>UBPreferencesController</name>
     <message>
         <source>version: </source>
-        <translation>versione:</translation>
+        <translation>versione: </translation>
     </message>
     <message>
         <source>Marker is pressure sensitive</source>
         <translation>L'evidenziatore è sensibile alla pressione</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>Predefinito</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Arabo</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bulgaro</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Catalano</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Ceco</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Danese</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Tedesco</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Greco</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Inglese</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Inglese UK</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Spagnolo</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francese</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Francese Svizzero</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Italiano</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Ebraico</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Giapponese</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Coreano</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Malgascio</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Norvegese</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Olandese</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Polacco</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Romancio</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Rumeno</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Russo</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Slovacco</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Svedese</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Turco</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Cinese</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Cinese Semplificato</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Cinese Tradizionale</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1891,6 +2339,17 @@ Vuoi ignorare gli errori per questo host?</translation>
         <source>My Movies</source>
         <translation>I miei film</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Visibile la prossima volta</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2107,20 +2566,16 @@ risorsa multimediale ...</translation>
         <source>Cache</source>
         <translation>Cache</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation type="obsolete">Goniometro 2</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
-        <translation>Pagina intera</translation>
+        <translation>Intera pagina</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <source>Embed </source>
+        <translation>Incorporato </translation>
     </message>
 </context>
 <context>
@@ -2467,6 +2922,49 @@ Si prega di riavviare l'applicazione per accedere ai documenti aggiornati.<
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Seleziona il contenuto da catturare:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Nome applicazione</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Restrizioni e limitazioni di responsabilità. </translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Questa funzione è sviluppata per lavorare sulle pagine web più comuni.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Si prega di rispettare il diritto d'autore durante la creazione di collegamenti o nella cattura di contenuto dal web.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2544,7 +3042,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Restore credentials on reboot</source>
-        <translation type="unfinished"></translation>
+        <translation>Ripristina le credenziali al riavvio</translation>
     </message>
 </context>
 <context>
@@ -2742,22 +3240,10 @@ p, li { white-space: pre-wrap; }
         <translation>Licenze</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSL</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Rete</translation>
     </message>
@@ -2801,10 +3287,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Password:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="obsolete">ID Pianeta Sankoré</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Utente:</translation>
@@ -2814,560 +3296,62 @@ p, li { white-space: pre-wrap; }
         <translation>Password: </translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Riconoscimenti</translation>
     </message>
-    <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Le licenze sono in inglese per rispettare le traduzioni ufficiali legalmente approvate.</span></p></td></tr></table></body></html></translation>
-    </message>
     <message utf8="true">
         <source>Planète Sankoré ID for exporting file</source>
-        <translation type="unfinished"></translation>
+        <translation>ID Planète Sankoré per l'esportazione file</translation>
     </message>
     <message>
         <source>Restore credentials on reboot  </source>
-        <translation type="unfinished"></translation>
+        <translation>Ripristina le credenziali al riavvio </translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Start up tips</source>
+        <translation>Suggerimenti all'avvio</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Show start up tips</source>
+        <translation>Mostra i suggerimenti all'avvio</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Lingua</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Seleziona una lingua</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>La nuova lingua sarà caricate al successivo riavvio</translation>
     </message>
     <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Chiudi Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_iw.ts b/Sankore-3.1/resources/i18n/sankore_iw.ts
index 7005e79..e00c50f 100644
--- a/Sankore-3.1/resources/i18n/sankore_iw.ts
+++ b/Sankore-3.1/resources/i18n/sankore_iw.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>סימניות</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>קבע תצורת הקלטת הפודקסט</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>מלכודת פלאש</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>תוכן מלכודת פלאש</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>מלכודת אינטרנט</translation>
     </message>
@@ -728,14 +721,6 @@
         <translation>לכד חלון</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>שלב תוכן אינטרנט</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>לכד תוכן אינטרנט מוכנס</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>הראה על המסך</translation>
     </message>
@@ -810,7 +795,7 @@
     <message>
         <source>Interact with items</source>
         <translatorcomment>There is no direct translation of this sentence- please provide contexte</translatorcomment>
-        <translation type="unfinished">לתפעל את הפריט</translation>
+        <translation>לתפעל את הפריטים</translation>
     </message>
     <message>
         <source>Erase Background</source>
@@ -824,6 +809,43 @@
         <source>Group</source>
         <translation>קבוצה</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">הורדה ל</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ספריה</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>הורדה לספריה</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">הורדה ל</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">דף הנוכחי</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>הורדה לדף הנוכחי</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">הוסף קישור ל</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ספריה</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>הוסף קישור לספריה</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">הוספת קישור </p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">לדף הנוכחי</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>הוספת קישור לדף הנוכחי</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">סימניות</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -989,12 +1011,110 @@
         <translation>צורה:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>מימדים:</translation>
+        <source>Alpha:</source>
+        <translation>אלפא:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>סגור</translation>
+        <source>Geometry:</source>
+        <translation>גיאומטריה:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>רוחב:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>גובה:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>שמור על יחסי המידות</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>מצב:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>צפייה מוקדמת:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>סגור מטמון</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>תמונות לא מתקבלות</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>לא ניתן להציג נתונים</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>הקובץ שנשמט אינו מזוהה כקובץ שמע</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>נגן קובץ שמע</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>הוסף קישור לדף</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>הוסף קישור לדף אינטרנט</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>גרור ושחרר את קובץ השמע מהספריה בתיבה זו</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>אישור</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>הדף הבא</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>דף קודם</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>דף כותרת</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>דף אחרון</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>מספר דף</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>הכנס כאן טקסט URL</translation>
     </message>
 </context>
 <context>
@@ -1059,42 +1179,6 @@
         <translation>הסר את הדף</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>הסר את המסמך</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>אתה בטוח שברצונך להסיר את  %1'המסמך?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>רוקן את הסל</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>אתה בטוח שברצונך לרוקן את הסל?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>מרוקן סל</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>הסל הורק</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>הסר תיקיה</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>אתה בטוח שברצונך להסיר את התיקיה %1 ואת כל תכנה?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>לא נבחר כל מסמך!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>פתח קובץ מתאים</translation>
     </message>
@@ -1161,6 +1245,14 @@
         <source>Untitled Documents</source>
         <translation>מסמכים ללא שם</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>זוהי פעולה בלתי הפיכה!</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1248,6 +1340,57 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>קבל</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>החלף</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>בטל</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>השם %1 כבר נמצא בשימוש. המשך שימוש בשם זה יחליף את המסמך. מתן שם חדש ייצור מסמך חדש.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>המסמכים שלי</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>תבניות</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>  אשפהסל</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>מסמך ללא שם</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">מעתיק עמוד %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 דפים הועתקו</numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1266,6 +1409,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>ההורדה נכשלה</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>השרת המרוחק סירב לחיבור (השרת אינו מקבל בקשות)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>השרת המרוחק סגר את החיבור באופן לפני הזמן, לפני שהתשובה התקבלה ועובדה במלואה</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>שם המארח המרוחק לא ננמצא (שם מאחרי לא תקין)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>החיבור לשרת המרוחק נותק באופן זמני</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>הפעולה בוטלה על ידי קריאות להפסקה() או סגירה() לפני סיומה.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>לחיצת היד SSL/TLS נכשלה ולא ניתן לפתוח את הערוץ המוצפן. אות השגיאה sslError() היה צריך להופיע.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>הקשר ניתק כתוצאה מניתוק מהרשת, אך המערכת פתחה בניוד לנקודת גישה אחרת. על הבקשה להישלח מחדש והיא תעובד עם חידוש הקשר.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>החיבור לשרת הפרוקסי נדחה (שרת הפרוקסי אינו מקבל בקשות)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>שרת הפרוקסי סגר את החיבור טרם זמנו, לפני שהתשובה השלמה התקבלה ועובדה</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>שם מארח הפרוקסי לא נמצא (שם מארח פרוקסי בלתי תקין)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>החיבור לפרוקסי נותק זמנית או הפרוקסי לא ענה בזמן לבקשה שנשלחה</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>הפרוקסי דורש זיהוי על מנת להיענות לבקשה אך לא קיבל אף הרשאה שהוצעה )אם הייתה כזו)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>הגישה לתוכן המרוחק נדחתה (בדומה לשגיאת HTTP מס 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>הפעולה המבוקשת על התוכן המרוחק אסורה</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>התוכן המרוחק לא נמצא בשרת (בדומה לשגיאת HTTP מס' 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>השרת המרוחק מצריך זיהוי כדי לשרת את התוכן אך ההרשאות שניתנו נדחו (אם היו)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>הבקשה הייתה צריכה להישלח שנית, אך הדבר נכשל למשל מכיוון שלא ניתן היה לקרוא שנית את הנתונים שהועלו</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>גישת הרשת API לא יכולה להיענות לבקשה מכיוון שהפרוטוקול אינו מוכר</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>הפעולה המבוקשת אינה תקפה עבור פרוטוקול זה</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>התגלתה שגיאה בלתי ידועה הקשורה לרשת </translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>התגלתה שגיאה בלתי ידועה הקשורה לפרוקסי</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>התגלתה שגיאה בלתי ידועה הקשורה לתוכן המרוחק</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>התגלה קלקול בפרוטוקול (שגיאת דקדוק, תשובות בלתי תקינות או בלתי צפויות, וכו')</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1335,6 +1577,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>הייצוא נכשל...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>ייצא כקובץ UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>מייצא מסמך...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>הייצוא בוצע בהצלחה.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>הייצוא נכשל.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>ייצוא ל- Sankore  בפורמט UBX</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1421,6 +1690,10 @@
         <source>Object informations</source>
         <translation>מידע על האובייקט</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation>הוסף</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1503,6 +1776,14 @@
         <source>Trash</source>
         <translation>סל</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>סימניות</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>אינטרנט</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1536,6 +1817,22 @@
         <source>Visible on Extended Screen</source>
         <translation>ניתן לראותו במסך רחב</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>הוסף פעולה</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>הסר קישור לשמע</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>הסר קישור לדף</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>הסר קישור ל- URL אינטרנט</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1551,6 +1848,22 @@
         <source>Go to Content Source</source>
         <translation>עבור למקור התוכן</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>הוסף פעולה</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>הסר קישור לשמע</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>הסר קישור לדף</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>הסר קישור ל- URL באינטרנט</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1571,13 +1884,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>אינטרנט</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1638,6 +1944,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (מערך מסמכים) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1847,6 +2160,142 @@ Do you want to ignore these errors for this host?</source>
         <source>Marker is pressure sensitive</source>
         <translation>הסמן רגיש ללחץ</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>ברירת מחדל</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>ערבית</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>בולגרית</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>קטלאנית</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>צ'כית</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>דנית</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>גרמנית</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>יוונית</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>אנגלית</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>אנגלית של בריטניה</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>ספרדית</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>צרפתית</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>צרפתית של שוויץ</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>איטלקית</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>עברית</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>יפנית</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>קוריאנית</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>מלגשית</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>נורבגית</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>הולנדית</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>פולנית</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>רומאנש</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>רומנית</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>רוסית</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>סלובקית</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>שוודית</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>טורקית</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>סינית</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>סינית מופשטת</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>סינית מסורתית</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>קורסיקאית</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>הינדית</translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1888,6 +2337,17 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation>הסרטים שלי</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>ניתן לראותו בפעם הבאה</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2012,23 +2472,23 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NoDerivs CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-ShareAlike CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NonCommercial CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
@@ -2101,20 +2561,16 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>מטמון</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation>אריסטו</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>דף מלא</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>אינטרנט</translation>
+        <source>Embed </source>
+        <translation>שבץ</translation>
     </message>
 </context>
 <context>
@@ -2207,11 +2663,11 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Open-Sankore</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore</translation>
     </message>
     <message>
         <source>OpenSankore</source>
-        <translation type="unfinished"></translation>
+        <translation>OpenSankore</translation>
     </message>
 </context>
 <context>
@@ -2461,6 +2917,49 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>בחר תוכן ללכידה</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>שם היישום</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>מגבלות והצהרות</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>מאפיין זה מתוכנן לעבוד על דפי האינטרנט הנפוצים ביותר.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>נא לשמור על זכויות היוצרים כשיוצרים קישורים או לוכדים תוכן מהאינטרנט.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>הורדה לספריה</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>הורדה לדף הנוכחי</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>הוספת קישור לספריה</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>הוספת קישור לדף הנוכחי</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
@@ -2532,6 +3031,10 @@ p, li { white-space: pre-wrap; }
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
         <translation></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>שחזר הרשאות בעת אתחול</translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2716,22 +3219,10 @@ p, li { white-space: pre-wrap; }
         <translation>רשיונות</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>About</source>
         <translation>אודות</translation>
     </message>
@@ -2787,10 +3278,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>סיסמא:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation>שם מזהה בפלנטת Sankoré</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>משתמש: </translation>
@@ -2800,535 +3287,70 @@ p, li { white-space: pre-wrap; }
         <translation>סיסמא:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>אשראי</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Start up tips</source>
+        <translation>עצות לאתחול</translation>
+    </message>
+    <message>
+        <source>Show start up tips</source>
+        <translation>הצג עצות לאתחול</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>שפה</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>בחר שפה</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>השפה החדשה תיטען באיתחול הבא</translation>
+    </message>
+    <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>סגור את Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Planète Sankoré מזהה לייצוא קבצים</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>שחזר הרשאות בזמן איתחול</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">הרשיונות בשפה האנגלית כדי לכבד את התרגום הרשמי והחוקי המאושר</span></p></td></tr></table></body></html></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_ja.ts b/Sankore-3.1/resources/i18n/sankore_ja.ts
index 8d66fe5..fc3e0a3 100644
--- a/Sankore-3.1/resources/i18n/sankore_ja.ts
+++ b/Sankore-3.1/resources/i18n/sankore_ja.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>ブックマーク</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>ポッドキャストレコーディング設定 </translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>フラッシュトラップ</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>トラップフラッシュコンテンツ</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>ウェブトラップ </translation>
     </message>
@@ -728,14 +721,6 @@
         <translation>ウィンドウをキャプチャ</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>ウェブコンテンツを埋め込む</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>埋め込み可能ウェブコンテンツをキャプチャ</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>ディスプレイ上に表示</translation>
     </message>
@@ -800,10 +785,6 @@
         <translation>古いSankore書類やUniboard書類を移入する</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="obsolete">アイテムを纏める</translation>
-    </message>
-    <message>
         <source>Group items</source>
         <translation>アイテムを纏める</translation>
     </message>
@@ -825,7 +806,44 @@
     </message>
     <message>
         <source>Group</source>
-        <translation type="unfinished"></translation>
+        <translation>グループ</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ライブラリに</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ダウンロード</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>ライブラリにダウンロード</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">現在のページに</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ダウンロード</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>現在のページにダウンロード</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ライブラリに</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">リンクを追加</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>ライブラリにリンクを追加</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">現在のページに</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">リンクを追加</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>現在のページにリンクを追加</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">ブックマーク</translation>
     </message>
 </context>
 <context>
@@ -869,37 +887,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation type="obsolete">ゴミ箱</translation>
-    </message>
-    <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation type="obsolete">/ホーム</translation>
-    </message>
-    <message>
         <source>Element ID = </source>
-        <translation type="unfinished"></translation>
+        <translation>エレメントのID = </translation>
     </message>
     <message>
         <source>Content is not supported in destination format.</source>
-        <translation type="unfinished"></translation>
+        <translation>コンテンツは送り先のフォーマットではサポートされていません。</translation>
     </message>
     <message>
         <source>Remove Page</source>
-        <translation type="unfinished">ページ削除</translation>
+        <translation>ページ削除</translation>
     </message>
     <message>
         <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
-    <message>
-        <source>Loading ...</source>
-        <translation type="obsolete">ローディング中… </translation>
+        <translation>選択したドキュメント '%0'から1ページ削除してもよろしいですか?</translation>
     </message>
 </context>
 <context>
@@ -964,23 +965,23 @@
     </message>
     <message>
         <source>Group</source>
-        <translation type="unfinished"></translation>
+        <translation>グループ化</translation>
     </message>
     <message>
         <source>Ungroup</source>
-        <translation type="unfinished"></translation>
+        <translation>グループ解除</translation>
     </message>
     <message>
         <source>Delete page %1 from document</source>
-        <translation type="unfinished"></translation>
+        <translation>ドキュメントからページ %1 を削除</translation>
     </message>
     <message>
         <source>Page %1 deleted</source>
-        <translation type="unfinished"></translation>
+        <translation>ページ %1 が削除されました</translation>
     </message>
     <message>
         <source>Add file operation failed: file copying error</source>
-        <translation type="unfinished"></translation>
+        <translation>ファイルの追加操作に失敗:ファイルコピーのエラー</translation>
     </message>
 </context>
 <context>
@@ -1009,21 +1010,115 @@
         <translation>形状: </translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>サイズ: </translation>
+        <source>Alpha:</source>
+        <translation>アルファ:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>閉じる</translation>
+        <source>Geometry:</source>
+        <translation>形状:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>幅:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>高さ:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>比率を維持</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>モード:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>プレビュー:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>キャッシュを閉じる</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBDesktopPalette</name>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><コンテンツをドロップ></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>画像は許可されません</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>データを表示できません</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>ドロップされたファイルは音声ファイルであると認められません</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>音声ファイルを再生</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>ページにリンクを追加</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>ウェブページにリンクを追加</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>ライブラリからこのボックスに音声ファイルをドラッグ&ドロップ</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>次のページ</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>前のページ</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>タイトルページ</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>最後のページ</translation>
+    </message>
     <message>
-        <source>Show Uniboard</source>
-        <translation type="obsolete">Uniboard表示 </translation>
+        <source>Page Number</source>
+        <translation>ページ番号</translation>
     </message>
     <message>
+        <source>Insert url text here</source>
+        <translation>ここにURL文字列を挿入</translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
         <source>Capture Part of the Screen</source>
         <translation>画面の一部をキャプチャ </translation>
     </message>
@@ -1045,7 +1140,7 @@
     </message>
     <message>
         <source>Show Open-Sankore</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoreを表示</translation>
     </message>
 </context>
 <context>
@@ -1083,42 +1178,6 @@
         <translation>ページ削除</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>ドキュメント削除 </translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>本当にドキュメント%1を削除しますか?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>ゴミ箱を空にする</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>本当にこのゴミ箱を空にしますか?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>ゴミ箱を空にしています</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>ゴミ箱を空にしました</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>フォルダーを削除</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>本当にフォルダー%1とそのコンテンツを削除しますか?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>ドキュメントが選択されていません!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>サポートされたファイルを開く</translation>
     </message>
@@ -1135,10 +1194,6 @@
         <translation>フォルダーから全ての画像をインポート</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation type="obsolete">フィルダーには画像ファイルが含まれていません! </translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>削除</translation>
     </message>
@@ -1182,10 +1237,18 @@
     </message>
     <message>
         <source>Untitled Documents</source>
-        <translation type="unfinished">タイトルなしドキュメント</translation>
+        <translation>無題ドキュメント</translation>
     </message>
     <message>
         <source>Folder does not contain any image files</source>
+        <translation>フォルダには画像ファイルが含まれていません</translation>
+    </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>この操作は取り消し不可能です!</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1216,28 +1279,20 @@
         <translation>ファイル%1保存済み </translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation type="obsolete"> %1 / %2 ページをインポート</translation>
-    </message>
-    <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation type="obsolete">画像データエラー、ファイル%1をスキップ</translation>
-    </message>
-    <message>
         <source>Inserting page %1 of %2</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 / %2ページを挿入中</translation>
     </message>
     <message>
         <source>Import successful.</source>
-        <translation type="unfinished">インポートに成功。</translation>
+        <translation>インポートに成功。</translation>
     </message>
     <message>
         <source>Importing file %1</source>
-        <translation type="unfinished"></translation>
+        <translation>ファイル%1をインポート中</translation>
     </message>
     <message>
         <source>Import of file %1 successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>ファイル%1のインポートに成功。</translation>
     </message>
 </context>
 <context>
@@ -1283,6 +1338,58 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>承認する</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>置き換える</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>キャンセル</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>名前%1はすでに使用されています。
+この名前のままにするとドキュメントが置き換えられます。
+新規の名前を付けると新規のドキュメントが作成されます。</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>マイドキュメント</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>テンプレート</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>ごみ箱</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>無題ドキュメント</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">%1/%2 ページ コピー中</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>ページを%1枚をコピーしました</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1300,6 +1407,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>ダウンロードに失敗。</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>リモートサーバーが接続を拒否しました(サーバーは要求を承認していません)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>リモートサーバーが、応答が最後まで受信・処理される前に接続を途中で切断しました</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>リモートホスト名が見つかりませんでした(ホスト名が無効です)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>リモートサーバーへの接続がタイムアウトしました</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>操作は終了前に中止呼び出し() または終了呼び出し() 経由でキャンセルされました。</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>SSL/TLSのハンドシェイクに失敗し、暗号化チャンネルを確立できませんでした。SSLエラー() シグナルが発信されている必要があります。</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>ネットワークとの切断で接続が中断されましたが、システムは別のアクセスポイントへのローミングを開始しました。要求は再送信され、接続が回復次第処理されます。</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>プロキシサーバーへの接続が拒否されました(プロキシサーバーは要求を承認していません)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>プロキシサーバーが、応答が最後まで受信・処理される前に接続を途中で切断しました</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>プロキシサーバーのホスト名が見つかりませんでした(ホスト名が無効です)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>プロキシサーバーへの接続がタイムアウトしたか、プロキシサーバーが送信された要求に時間内に応答しませんでした</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>プロキシは要求を実行するのに認証が必要ですが、提示したクレデンシャル(あったとしても)は承認されませんでした</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>リモートコンテンツへのアクセスが拒否されました(HTTPエラー401と同様)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>リモートコンテンツで要求した操作は許可されていません</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>サーバーでリモートコンテンツが見つかりませんでした(HTTPエラー404と同様)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>リモートサーバーはコンテンツを提供するのに認証が必要ですが、提示したクレデンシャル(あったとしても)は承認されませんでした</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>要求は再送信が必要でしたが、アップロードデータが2度目に読み込まれなかったなどの理由でこれに失敗しました。</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>Network Access API は、プロトコルが不明なため要求を実行できません</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>要求された操作はこのプロトコルに対して無効です</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>ネットワーク関連の不明なエラーが検出されました</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>プロキシ関連の不明なエラーが検出されました</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>リモートコンテンツ関連の不明なエラーが検出されました</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>プロトコルのブレークダウンが検出されました(構文エラー、無効なまたは予期しない応答など)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1314,7 +1520,7 @@
     <name>UBExportAdaptor</name>
     <message>
         <source>Warnings during export was appeared</source>
-        <translation type="unfinished"></translation>
+        <translation>エクスポート中に警告が表示されました</translation>
     </message>
 </context>
 <context>
@@ -1368,6 +1574,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>エクスポートに失敗...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>UBXファイルとしてエクスポート</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>ドキュメントをエクスポート中...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>エクスポートに成功。</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>エクスポートに失敗。</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Sankore UBXフォーマットへエクスポート</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1454,6 +1687,10 @@
         <source>Object informations</source>
         <translation>オブジェクトインフォーメーション</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation>追加</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1498,76 +1735,100 @@
     </message>
     <message>
         <source>Audios</source>
-        <translation type="unfinished">オーディオ</translation>
+        <translation>オーディオ</translation>
     </message>
     <message>
         <source>Movies</source>
-        <translation type="unfinished">ムービー</translation>
+        <translation>ムービー</translation>
     </message>
     <message>
         <source>Pictures</source>
-        <translation type="unfinished">写真</translation>
+        <translation>写真</translation>
     </message>
     <message>
         <source>Animations</source>
-        <translation type="unfinished">å‹•ç”»</translation>
+        <translation>å‹•ç”»</translation>
     </message>
     <message>
         <source>Interactivities</source>
-        <translation type="unfinished">インタラクティブ</translation>
+        <translation>インタラクティブ</translation>
     </message>
     <message>
         <source>Applications</source>
-        <translation type="unfinished">アプリケーション</translation>
+        <translation>アプリケーション</translation>
     </message>
     <message>
         <source>Shapes</source>
-        <translation type="unfinished">形状</translation>
+        <translation>形状</translation>
     </message>
     <message>
         <source>Favorites</source>
-        <translation type="unfinished"></translation>
+        <translation>お気に入り</translation>
     </message>
     <message>
         <source>Web search</source>
-        <translation type="unfinished"></translation>
+        <translation>ウェブ検索</translation>
     </message>
     <message>
         <source>Trash</source>
-        <translation type="unfinished">ゴミ箱</translation>
+        <translation>ごみ箱</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>ブックマーク</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>ウェブ</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
     <message>
         <source>Accept</source>
-        <translation type="unfinished"></translation>
+        <translation>承認する</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">キャンセル</translation>
+        <translation>キャンセル</translation>
     </message>
     <message>
         <source>Enter a new folder name</source>
-        <translation type="unfinished"></translation>
+        <translation>新規フォルダ名を入力</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesProgressInfo</name>
     <message>
         <source>Loading </source>
-        <translation type="unfinished"></translation>
+        <translation>ロード中</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">ロック</translation>
+        <translation>ロック</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">拡張画面でみることができます </translation>
+        <translation>拡張画面でみることができます</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>操作を追加</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>オーディオへのリンクを削除</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>ページへのリンクを削除</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>ウェブURLへのリンクを削除</translation>
     </message>
 </context>
 <context>
@@ -1584,6 +1845,22 @@
         <source>Go to Content Source</source>
         <translation>コンテンツのソースへ移動 </translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>操作を追加</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>オーディオへのリンクを削除</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>ページへのリンクを削除</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>ウェブURLへのリンクを削除</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1604,17 +1881,10 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation type="unfinished">ウェブ</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
-        <translation type="unfinished">ローディング中… </translation>
+        <translation>ロード中...</translation>
     </message>
 </context>
 <context>
@@ -1671,19 +1941,18 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore(ドキュメントセット)(*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
         <translation>画像フォーマット(</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation type="obsolete">画像インポートに失敗 </translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation type="obsolete">画像インポートに成功 </translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1699,10 +1968,6 @@
         <source>Importing page %1 of %2</source>
         <translation>%1 / %2 ページをインポート</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation type="obsolete">PDFインポートに成功</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1726,121 +1991,7 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation>Enter</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation type="obsolete">お気に入りに追加</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation type="obsolete">シェアする</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation type="obsolete">検索</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation type="obsolete">削除</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation type="obsolete">フォルダーに戻る</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation type="obsolete">お気に入りから削除</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation type="obsolete">新規フォルダーを作成</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation type="obsolete">ページに追加 </translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation type="obsolete">背景として設定</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation type="obsolete">ライブラリに追加</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation type="obsolete">オブジェクトインフォーメーション</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation type="obsolete">ライブラリに1画像追加</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation type="obsolete">オーディオ</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation type="obsolete">ムービー</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation type="obsolete">写真</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation type="obsolete">形状</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation type="obsolete">アプリケーション</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation type="obsolete">お気に入り</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation type="obsolete">%1のサムネイル画像を作成</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation type="obsolete">%1のページへの追加に失敗 </translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation type="obsolete">インタラクティブ</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation type="obsolete">インポートされた画像</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation type="obsolete">å‹•ç”»</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="obsolete">ウエブに経験する</translation>
+        <translation>Enter</translation>
     </message>
 </context>
 <context>
@@ -1862,7 +2013,7 @@
     <name>UBMessagesDialog</name>
     <message>
         <source>Close</source>
-        <translation type="unfinished">閉じる</translation>
+        <translation>閉じる</translation>
     </message>
 </context>
 <context>
@@ -1902,25 +2053,6 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation type="obsolete">新規フォルダー追加</translation>
-    </message>
-    <message>
-        <source>New Folder name:</source>
-        <translation type="obsolete">新規フォルダー名: </translation>
-    </message>
-    <message>
-        <source>Add</source>
-        <translation type="obsolete">追加</translation>
-    </message>
-    <message>
-        <source>Cancel</source>
-        <translation type="obsolete">キャンセル</translation>
-    </message>
-</context>
-<context>
     <name>UBPersistenceManager</name>
     <message>
         <source>(copy)</source>
@@ -2031,6 +2163,142 @@ Do you want to ignore these errors for this host?</source>
         <source>Marker is pressure sensitive</source>
         <translation>感圧性マーカー</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>デフォルト</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>アラビア語</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>ブルガリア語</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>カタロニア語</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>チェコ語</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>デンマーク語</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>ドイツ語</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>ギリシャ語</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>英語</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>イギリス英語</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>スペイン語</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>フランス語</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>スイスのフランス語</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>イタリア語</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>ヘブライ語</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>日本語</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>韓国語</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>マダガスカル語</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>ノルウェー語</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>オランダ語</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>ポーランド語</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>ロマンシュ語</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>ルーマニア語</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>ロシア語</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>スロバキア語</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>スウェーデン語</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>トルコ語</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>中国語</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>簡体字中国語</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>繁体字中国語</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>コルシカ語</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>ヒンディー語</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -2069,16 +2337,19 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation type="obsolete">タイトルなしドキュメント</translation>
+        <source>My Movies</source>
+        <translation>マイ・ムービー </translation>
     </message>
     <message>
-        <source>Trash</source>
-        <translation type="obsolete">ゴミ箱</translation>
+        <source>/Web</source>
+        <translation>/ウェブ</translation>
     </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
     <message>
-        <source>My Movies</source>
-        <translation>マイ・ムービー </translation>
+        <source>Visible next time</source>
+        <translation>次回から表示</translation>
     </message>
 </context>
 <context>
@@ -2295,14 +2566,14 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>ページ全体</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>ウェブ</translation>
+        <source>Embed </source>
+        <translation>埋め込み</translation>
     </message>
 </context>
 <context>
@@ -2359,13 +2630,6 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation type="obsolete">ウェブ</translation>
-    </message>
-</context>
-<context>
     <name>UBWebPluginWidget</name>
     <message>
         <source>Loading...</source>
@@ -2402,11 +2666,11 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Open-Sankore</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore</translation>
     </message>
     <message>
         <source>OpenSankore</source>
-        <translation type="unfinished"></translation>
+        <translation>OpenSankore</translation>
     </message>
 </context>
 <context>
@@ -2656,6 +2920,53 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>コンテンツを選択してトラップ:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>アプリケーション名</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>制限および免責事項。</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>この機能は最も一般的なウェブページで作動するよう開発されています。</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>リンクを作成したりウェブからコンテンツをトラップする場合は著作権を遵守してください。</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>ライブラリに
+ダウンロード</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>現在のページに
+ダウンロード</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>ライブラリに
+リンクを追加</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>現在のページに
+リンクを追加</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2729,7 +3040,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Restore credentials on reboot</source>
-        <translation type="unfinished"></translation>
+        <translation>再起動時にクレデンシャルを復元</translation>
     </message>
 </context>
 <context>
@@ -2927,22 +3238,10 @@ p, li { white-space: pre-wrap; }
         <translation>ライセンス</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>オープンSSl </translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib </translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf </translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip </translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>ネットワーク</translation>
     </message>
@@ -2986,10 +3285,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>パスワード:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="obsolete">Planète SankoréのID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>利用者:</translation>
@@ -2999,543 +3294,70 @@ p, li { white-space: pre-wrap; }
         <translation>パスワード:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
+        <source>Credits</source>
         <translation></translation>
     </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>ファイルをエクスポートするためのPlanète Sankoré ID</translation>
+    </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation></translation>
+        <source>Restore credentials on reboot  </source>
+        <translation>再起動時にクレデンシャルを復元</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation></translation>
+        <source>Start up tips</source>
+        <translation>起動に関するヒント</translation>
     </message>
     <message>
-        <source>Credits</source>
-        <translation></translation>
+        <source>Show start up tips</source>
+        <translation>起動に関するヒントを表示</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID for exporting file</source>
-        <translation type="unfinished"></translation>
+    <message>
+        <source>Language</source>
+        <translation>言語</translation>
     </message>
     <message>
-        <source>Restore credentials on reboot  </source>
-        <translation type="unfinished"></translation>
+        <source>Select a language</source>
+        <translation>言語を選択</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>新しい言語は、次回の起動時にロードされます</translation>
     </message>
     <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Open-Sankoréを閉じる</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">ライセンスは、法的に有効な公式翻訳に基づいて英語で記載されています。</span></p></td></tr></table></body></html></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_ko.ts b/Sankore-3.1/resources/i18n/sankore_ko.ts
index 2e2d5d8..14d5e83 100644
--- a/Sankore-3.1/resources/i18n/sankore_ko.ts
+++ b/Sankore-3.1/resources/i18n/sankore_ko.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>북마크</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>팟캐스트 레코딩 설정</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>플래시 트랩</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>플래시 콘텐츠 트랩</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>웹 트랩</translation>
     </message>
@@ -728,14 +721,6 @@
         <translation>창 캡처하기</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>웹 콘텐츠 포함</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>포함 가능한 웹 콘텐츠 캡처</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>디스플레이에 보이기</translation>
     </message>
@@ -769,59 +754,96 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished">Open-Sankoré</translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished">Open-Sankoré 종료</translation>
+        <translation>Open-Sankoré 종료</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished">Open-Sankoré 편집기</translation>
+        <translation>Open-Sankoré 편집기</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished">Open-Sankoré 위젯 편집기 표시</translation>
+        <translation>Open-Sankoré 위젯 편집기 표시</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished">Open-Sankoré 숨기기</translation>
+        <translation>Open-Sankoré 숨기기</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished">Open-Sankoré 응용 프로그램 숨기기</translation>
+        <translation>Open-Sankoré 응용 프로그램 숨기기</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished">유니보드 문서 가져오기</translation>
+        <translation>유니보드 문서 가져오기</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished">기존 Sankore 또는 유니보드 문서 가져오기</translation>
+        <translation>기존 Sankore 또는 유니보드 문서 가져오기</translation>
     </message>
     <message>
         <source>Group items</source>
-        <translation type="unfinished">항목 그룹화</translation>
+        <translation>그룹 항목</translation>
     </message>
     <message>
         <source>Play</source>
-        <translation type="unfinished">재생</translation>
+        <translation>재생</translation>
     </message>
     <message>
         <source>Interact with items</source>
-        <translation type="unfinished">항목과 상호 작용</translation>
+        <translation>항목과 상호 작용</translation>
     </message>
     <message>
         <source>Erase Background</source>
-        <translation type="unfinished">배경 지우기</translation>
+        <translation>배경 지우기</translation>
     </message>
     <message>
         <source>Remove the backgound</source>
-        <translation type="unfinished">배경 제거</translation>
+        <translation>배경 제거</translation>
     </message>
     <message>
         <source>Group</source>
-        <translation type="unfinished">그룹화</translation>
+        <translation>그룹</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">다운로드 위치:</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">라이브러리</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>라이브러리에 다운로드</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">다운로드 위치:</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">현재 페이지</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>현재 페이지에 다운로드</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">링크 추가 위치:</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">라이브러리</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>라이브러리에 링크 추가</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">링크 추가 위치:</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">현재 페이지</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>현재 페이지에 링크 추가</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">북마크</translation>
     </message>
 </context>
 <context>
@@ -866,19 +888,19 @@
     <name>QObject</name>
     <message>
         <source>Element ID = </source>
-        <translation type="unfinished">요소 ID = </translation>
+        <translation>요소 ID = </translation>
     </message>
     <message>
         <source>Content is not supported in destination format.</source>
-        <translation type="unfinished">대상 형식으로 지원되지 않는 콘텐츠입니다.</translation>
+        <translation>대상 형식으로 지원되지 않는 콘텐츠입니다.</translation>
     </message>
     <message>
         <source>Remove Page</source>
-        <translation type="unfinished">페이지 제거</translation>
+        <translation>페이지 제거</translation>
     </message>
     <message>
         <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
-        <translation type="unfinished">선택한 문서 '%0'에서 1페이지를 제거하시겠습니까?</translation>
+        <translation>선택한 문서 '%0'에서 1페이지를 제거하시겠습니까?</translation>
     </message>
 </context>
 <context>
@@ -943,23 +965,23 @@
     </message>
     <message>
         <source>Delete page %1 from document</source>
-        <translation type="unfinished">문서에서 %1페이지 삭제</translation>
+        <translation>문서에서 %1페이지 삭제</translation>
     </message>
     <message>
         <source>Page %1 deleted</source>
-        <translation type="unfinished">%1페이지 삭제됨</translation>
+        <translation>%1페이지 삭제됨</translation>
     </message>
     <message>
         <source>Add file operation failed: file copying error</source>
-        <translation type="unfinished">파일 추가 작업 실패: 파일을 복사하는 도중 오류 발생</translation>
+        <translation>파일 추가 작업 실패: 파일을 복사하는 도중 오류 발생</translation>
     </message>
     <message>
         <source>Group</source>
-        <translation type="unfinished">그룹화</translation>
+        <translation>그룹</translation>
     </message>
     <message>
         <source>Ungroup</source>
-        <translation type="unfinished">그룹 해제</translation>
+        <translation>그룹 해제</translation>
     </message>
 </context>
 <context>
@@ -970,7 +992,7 @@
     </message>
     <message>
         <source>CapturedImage</source>
-        <translation type="unfinished">캡처한 이미지</translation>
+        <translation>캡처이미지</translation>
     </message>
 </context>
 <context>
@@ -988,12 +1010,110 @@
         <translation>모양:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>크기:</translation>
+        <source>Alpha:</source>
+        <translation>알파:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>닫기</translation>
+        <source>Geometry:</source>
+        <translation>도형:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>너비:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>높이:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>비율 유지</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>모드:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>미리보기:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>캐시 닫기</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><drop content></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>이미지가 허락되지 않았습니다</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>데이터 표시 불가</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>드롭한 파일은 오디오 파일이 아닙니다</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>오디오 파일 재생</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>페이지에 링크 추가</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>웹 페이지에 링크 추가</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>라이브러리에서 이 상자로 오디오 파일 끌어다 놓기</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>확인</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>다음 페이지</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>이전 페이지</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>제목 페이지</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>마지막 페이지</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>페이지 번호</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>여기에 url 텍스트 삽입</translation>
     </message>
 </context>
 <context>
@@ -1020,7 +1140,7 @@
     </message>
     <message>
         <source>Show Open-Sankore</source>
-        <translation type="unfinished">Open-Sankore 표시</translation>
+        <translation>Open-Sankore 표시</translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1178,6 @@
         <translation>페이지 제거</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>문서 제거</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>정말로 '%1' 문서를 제거하시겠습니까?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>휴지통 비우기</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>정말로 휴지통을 비우시겠습니까?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>휴지통 비우는 중</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>휴지통 비우기 완료</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>폴더 제거</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>정말로 '%1' 폴더와 해당 내용을 모두 제거하시겠습니까?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>선택된 문서가 없습니다!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>지원되는 파일 열기</translation>
     </message>
@@ -1143,21 +1227,29 @@
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
+        <translation>
             <numerusform>선택한 문서 '%1'에서 %n페이지를 제거하시겠습니까?</numerusform>
         </translation>
     </message>
     <message>
         <source>Title page</source>
-        <translation type="unfinished">제목 페이지</translation>
+        <translation>제목 페이지</translation>
     </message>
     <message>
         <source>Folder does not contain any image files</source>
-        <translation type="unfinished">폴더에 이미지 파일이 없습니다</translation>
+        <translation>폴더에 이미지 파일이 없습니다</translation>
     </message>
     <message>
         <source>Untitled Documents</source>
-        <translation type="unfinished">무제 문서</translation>
+        <translation>제목없는 문서</translation>
+    </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>돌이킬 수 없는 행동입니다!</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1188,19 +1280,19 @@
     </message>
     <message>
         <source>Inserting page %1 of %2</source>
-        <translation type="unfinished">%1/%2페이지 삽입 중</translation>
+        <translation>%1/%2페이지 삽입 중</translation>
     </message>
     <message>
         <source>Import successful.</source>
-        <translation type="unfinished">가져오기 완료.</translation>
+        <translation>가져오기 완료.</translation>
     </message>
     <message>
         <source>Import of file %1 successful.</source>
-        <translation type="unfinished">%1 파일 가져오기 완료.</translation>
+        <translation>%1 파일 가져오기 완료.</translation>
     </message>
     <message>
         <source>Importing file %1</source>
-        <translation type="unfinished">%1 파일 가져오는 중</translation>
+        <translation>%1 파일 가져오는 중</translation>
     </message>
 </context>
 <context>
@@ -1211,7 +1303,7 @@
     </message>
     <message>
         <source>Title page</source>
-        <translation type="unfinished">제목 페이지</translation>
+        <translation>제목 페이지</translation>
     </message>
 </context>
 <context>
@@ -1246,6 +1338,58 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>허용</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>대체</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>취소</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>제목 이름 %1(은)는 이미 사용중입니다.
+이 이름을 계속 사용하면 문서가 대체됩니다.
+새 이름을 제공하면 새로운 문서가 생성됩니다.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>내 문서</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>모델</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>휴지통</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>제목없는 문서</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">%1/%2 페이지 복사 중</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1페이지 복사됨</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1257,53 +1401,149 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
-            <numerusform variants="yes">
-                <lengthvariant>%1 페이지 복사됨</lengthvariant>
-                <lengthvariant></lengthvariant>
-            </numerusform>
+        <translation>
+            <numerusform>%1페이지 복사됨</numerusform>
         </translation>
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>다운로드 실패.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>원격 서버가 연결을 거절했습니다 (서버가 요청을 허락하지 않습니다)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>전체 답변이 수령되고 처리되기 전에, 원격 서버가 연결을 영구적으로 종료했습니다</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>원격 호스트 이름을 찾을 수 없습니다(잘못된 호스트 이름)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>원격 서버 연결 시간이 마감되었습니다</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>완료되기 전에 중단t() 또는 닫기() 명령을 통해 작동이 취소되었습니다.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation> SSL/TLS 악수가 실패하였고 암호화된 채널이 구성되지 않았습니다. sslErrors() 신호가 발송되었을 것입니다.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>연결이 네트워크에서 분리되어 끊겼습니다, 그러나 시스템이 다른 액세스 포인트로 로밍을 시작했습니다. 요청을 다시 제출해야하며 다시 연결이 되자마자 처리될 것입니다.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>프록시 서버가 연결을 거절했습니다 (프록시 서버가 요청을 허락하지 않습니다)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>전체 답변이 수령되고 처리되기 전에, 프록시 서버가 연결을 영구적으로 종료했습니다</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>프록시 호스트 이름을 찾을 수 없습니다(잘못된 프록시 호스트 이름)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>프록시 서버 연결시간이 만료되었거나 프록시가 발송된 요청을 시간 내에 답변하지 않았습니다</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>프록시는 요청을 받기 위해 인증이 필요하지만 제공한 어떤 자격 증명도 허락하지 않았습니다(해당되는 경우)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>원격 컨텐츠에 대한 액세스가 거절되었습니다 ( HTTP 오류 401과 유사)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>원격 컨텐츠에 대한 요청한 작동은 허락되지 않습니다</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>서버에서 원격 컨텐츠를 찾을 수 없습니다 ( HTTP 오류 404와 유사)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>원격 서버는 컨텐츠를 제공하기 위해 인증이 필요하지만 제공한 자격 증명을 허락하지 않았습니다 (해당되는 경우)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>요청을 재발송해야 합니다, 이는 예를 들어 업로드 데이터를 두 번째 읽을 수 없어서 실패했습니다.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>알수 없는 프로토콜이어서 네트워크 액세스 API가 요청을 받을 수 없습니다</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>요청한 작업은 이 프로토콜에 유효하지 않습니다</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>알 수 없는 네트워크 관련 오류가 감지되었습니다</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>알 수 없는 프록시 관련 오류가 감지되었습니다</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>원격 컨텐츠 관련된 알 수 없는 오류가 감지되었습니다</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>프로토콜에 고장이 감지되었습니다 (파싱 오류, 잘못된 또는 예상치 못한 반응 등)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished">파일 다운로드 중</translation>
+        <translation>파일 다운로드 중</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">취소</translation>
+        <translation>취소</translation>
     </message>
 </context>
 <context>
     <name>UBExportAdaptor</name>
     <message>
         <source>Warnings during export was appeared</source>
-        <translation type="unfinished">내보내는 도중 경고가 나타났습니다</translation>
+        <translation>내보내기 중 경고가 나타났습니다</translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished">IWB로 내보내기</translation>
+        <translation>IWB로 내보내기</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished">IWB 파일로 내보내기</translation>
+        <translation>IWB 파일로 내보내기</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">문서를 내보내는 중...</translation>
+        <translation>문서를 내보내는 중...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">내보내기 완료.</translation>
+        <translation>내보내기 완료.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished">내보내기 실패.</translation>
+        <translation>내보내기 실패.</translation>
     </message>
 </context>
 <context>
@@ -1334,6 +1574,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>내보내기 실패...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>UBX 파일로 내보내기</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>문서를 내보내는 중...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>내보내기 완료.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>내보내기 실패.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation> Sankore UBX형식으로 내보내기</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1406,134 +1673,162 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">페이지에 추가</translation>
+        <translation>페이지에 추가</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">배경으로 지정</translation>
+        <translation>배경으로 지정</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">라이브러리에 추가</translation>
+        <translation>라이브러리에 추가</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">객체 정보</translation>
+        <translation>객체 정보</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translation>추가</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">즐겨찾기에 추가</translation>
+        <translation>즐겨찾기에 추가</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">공유</translation>
+        <translation>공유</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished">검색</translation>
+        <translation>검색</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">삭제</translation>
+        <translation>삭제</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">폴더로 돌아가기</translation>
+        <translation>폴더로 돌아가기</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">즐겨찾기에서 제거</translation>
+        <translation>즐겨찾기에서 제거</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">새 폴더 만들기</translation>
+        <translation>새 폴더 만들기</translation>
     </message>
     <message>
         <source>Rescan file system</source>
-        <translation type="unfinished">파일 시스템 다시 스캔</translation>
+        <translation>파일 시스템 다시 스캔</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">가져온 이미지</translation>
+        <translation>가져온이미지</translation>
     </message>
     <message>
         <source>Audios</source>
-        <translation type="unfinished">오디오</translation>
+        <translation>오디오</translation>
     </message>
     <message>
         <source>Movies</source>
-        <translation type="unfinished">동영상</translation>
+        <translation>동영상</translation>
     </message>
     <message>
         <source>Pictures</source>
-        <translation type="unfinished">사진</translation>
+        <translation>사진</translation>
     </message>
     <message>
         <source>Animations</source>
-        <translation type="unfinished">애니메이션</translation>
+        <translation>애니메이션</translation>
     </message>
     <message>
         <source>Interactivities</source>
-        <translation type="unfinished">대화형 작업</translation>
+        <translation>대화형 작업</translation>
     </message>
     <message>
         <source>Applications</source>
-        <translation type="unfinished">응용 프로그램</translation>
+        <translation>응용 프로그램</translation>
     </message>
     <message>
         <source>Shapes</source>
-        <translation type="unfinished">도형</translation>
+        <translation>도형</translation>
     </message>
     <message>
         <source>Favorites</source>
-        <translation type="unfinished">즐겨찾기</translation>
+        <translation>즐겨찾기</translation>
     </message>
     <message>
         <source>Web search</source>
-        <translation type="unfinished">웹 검색</translation>
+        <translation>웹 검색</translation>
     </message>
     <message>
         <source>Trash</source>
-        <translation type="unfinished">휴지통</translation>
+        <translation>휴지통</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>북마크</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>웹</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
     <message>
         <source>Accept</source>
-        <translation type="unfinished">적용</translation>
+        <translation>허용</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">취소</translation>
+        <translation>취소</translation>
     </message>
     <message>
         <source>Enter a new folder name</source>
-        <translation type="unfinished">새 폴더 이름 입력</translation>
+        <translation>새 폴더 이름 입력</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesProgressInfo</name>
     <message>
         <source>Loading </source>
-        <translation type="unfinished">불러오는 중</translation>
+        <translation>불러오는 중</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">ìž ê¹€</translation>
+        <translation>ìž ê¹€</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">확장 화면에 보이기</translation>
+        <translation>확장 화면에 보이기</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>작업 추가</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>오디오에 링크 제거</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>페이지에 링크 제거</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>웹 url 링크 제거</translation>
     </message>
 </context>
 <context>
@@ -1550,6 +1845,22 @@
         <source>Go to Content Source</source>
         <translation>콘텐츠 소스로 이동</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>작업 추가</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>오디오에 링크 제거</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>페이지에 링크 제거</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>웹 url 링크 제거</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1566,21 +1877,14 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished">편집 가능</translation>
-    </message>
-</context>
-<context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation type="unfinished">웹</translation>
+        <translation>편집 가능</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
-        <translation type="unfinished">불러오는 중 ...</translation>
+        <translation>불러오는 중 ...</translation>
     </message>
 </context>
 <context>
@@ -1633,7 +1937,14 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished">Open-Sankore(*.ubz)</translation>
+        <translation>Open-Sankore(*.ubz)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (문서 세트) (*.ubx)</translation>
     </message>
 </context>
 <context>
@@ -1680,7 +1991,7 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished">ìž…ë ¥</translation>
+        <translation>ìž…ë ¥</translation>
     </message>
 </context>
 <context>
@@ -1702,7 +2013,7 @@
     <name>UBMessagesDialog</name>
     <message>
         <source>Close</source>
-        <translation type="unfinished">닫기</translation>
+        <translation>닫기</translation>
     </message>
 </context>
 <context>
@@ -1759,23 +2070,23 @@ Do you want to ignore these errors for this host?</source>
     <name>UBPlatformUtils</name>
     <message>
         <source>English</source>
-        <translation type="unfinished">영어</translation>
+        <translation>영어</translation>
     </message>
     <message>
         <source>Russian</source>
-        <translation type="unfinished">러시아어</translation>
+        <translation>러시아어</translation>
     </message>
     <message>
         <source>German</source>
-        <translation type="unfinished">독일어</translation>
+        <translation>독일어</translation>
     </message>
     <message>
         <source>French</source>
-        <translation type="unfinished">프랑스어</translation>
+        <translation>프랑스어</translation>
     </message>
     <message>
         <source>Swiss French</source>
-        <translation type="unfinished">스위스 프랑스어</translation>
+        <translation>스위스 프랑스어</translation>
     </message>
 </context>
 <context>
@@ -1794,7 +2105,7 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>on your desktop ...</source>
-        <translation type="unfinished">바탕 화면에 ...</translation>
+        <translation>바탕 화면에 ...</translation>
     </message>
     <message>
         <source>in folder %1</source>
@@ -1845,12 +2156,148 @@ Do you want to ignore these errors for this host?</source>
     <name>UBPreferencesController</name>
     <message>
         <source>version: </source>
-        <translation type="unfinished">버전: </translation>
+        <translation>버전: </translation>
     </message>
     <message>
         <source>Marker is pressure sensitive</source>
         <translation>마커는 압력 감지식입니다</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>기본</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>아랍어</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>불가리아어</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>카탈란어</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>체코어</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>덴마크어</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>독일어</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>그리스어</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>영어</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>영어 영국</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>스페인어</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>프랑스어</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>스위스 프랑스어</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>이탈리아어</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>히브루어</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>일본어</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>한국어</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>마다가스카르 어</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>노르웨이어</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>네덜란드어</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>폴란드어</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>로만 시어</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>루마니아어</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>러시아어</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>슬로바키아어</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>스웨덴어</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>터키어</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>중국어</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>중국어 간체</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>중국어 번체</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>코르시카어</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>힌디어</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1892,38 +2339,49 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation>내 동영상</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/웹</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>다음에 보이기</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished">교사</translation>
+        <translation>교사</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished">학생</translation>
+        <translation>학생</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished">여기에 작업 입력 ...</translation>
+        <translation>여기에 작업 입력 ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished">여기에 미디어 놓기 ...</translation>
+        <translation>여기에 미디어 놓기 ...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished">여기에 제목 입력...</translation>
+        <translation>여기에 제목 입력...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished">여기에 링크 제목 삽입...</translation>
+        <translation>여기에 링크 제목 삽입...</translation>
     </message>
 </context>
 <context>
@@ -1937,140 +2395,140 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished">여기에 제목 입력 ...</translation>
+        <translation>여기에 제목 입력 ...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished">여기에 주석 입력 ...</translation>
+        <translation>여기에 댓글 입력 ...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished">작업 추가</translation>
+        <translation>작업 추가</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished">미디어 추가</translation>
+        <translation>미디어 추가</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished">링크 추가</translation>
+        <translation>링크 추가</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished">페이지: %0</translation>
+        <translation>페이지: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished">여기에 세션 제목 입력 ...</translation>
+        <translation>여기에 세션 제목 입력 ...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished">저자</translation>
+        <translation>저자</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished">여기에 저자 입력 ...</translation>
+        <translation>여기에 저자 입력 ...</translation>
     </message>
     <message>
         <source>Objective(s)</source>
-        <translation type="unfinished">목표</translation>
+        <translation>목표</translation>
     </message>
     <message>
         <source>Type objectives here...</source>
-        <translation type="unfinished">여기에 목표 입력...</translation>
+        <translation>여기에 목표 입력...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished">리소스 인덱싱</translation>
+        <translation>리소스 인덱싱</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished">키워드:</translation>
+        <translation>키워드:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished">여기에 키워드 입력 ...</translation>
+        <translation>여기에 키워드 입력 ...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished">레벨:</translation>
+        <translation>레벨:</translation>
     </message>
     <message>
         <source>Subjects:</source>
-        <translation type="unfinished">주제:</translation>
+        <translation>주제:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished">유형:</translation>
+        <translation>유형:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished">라이선스</translation>
+        <translation>라이선스</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished">저작자 표시 CC BY</translation>
+        <translation>저작자 표시 CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished">저작자 표시-NoDerivs CC BY-ND</translation>
+        <translation>저작자 표시-NoDerivs CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished">저작자 표시-ShareAlike CC BY-SA</translation>
+        <translation>저작자 표시-ShareAlike CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished">저작자 표시-NonCommercial CC BY-NC</translation>
+        <translation>저작자 표시-NonCommercial CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished">저작자 표시-NonCommercial-NoDerivs CC BY-NC-ND</translation>
+        <translation>저작자 표시-NonCommercial-NoDerivs CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished">저작자 표시-NonCommercial-ShareAlike CC BY-NC-SA</translation>
+        <translation>저작자 표시-NonCommercial-ShareAlike CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished">공용 도메인</translation>
+        <translation>공용 도메인</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished">저작권</translation>
+        <translation>저작권</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished">만든 날짜:
+        <translation>만든 날짜:
 </translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished">업데이트한 날짜:
+        <translation>업데이트한 날짜:
 </translation>
     </message>
     <message>
         <source>Title page</source>
-        <translation type="unfinished">제목 페이지</translation>
+        <translation>제목 페이지</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished">페이지: %0</translation>
+        <translation>페이지: %0</translation>
     </message>
 </context>
 <context>
     <name>UBThumbnailAdaptor</name>
     <message>
         <source>Generating preview thumbnails ...</source>
-        <translation type="unfinished">미리보기 썸네일 생성 중 ...</translation>
+        <translation>미리보기 썸네일 생성 중 ...</translation>
     </message>
     <message>
         <source>%1 thumbnails generated ...</source>
@@ -2107,20 +2565,16 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>캐시</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation type="unfinished">Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>전체 페이지</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>웹</translation>
+        <source>Embed </source>
+        <translation>삽입</translation>
     </message>
 </context>
 <context>
@@ -2135,7 +2589,7 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>Backup path: </source>
-        <translation type="unfinished">백업 경로: </translation>
+        <translation>백업 경로: </translation>
     </message>
     <message>
         <source>Browse</source>
@@ -2173,7 +2627,7 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished">나중에 알림</translation>
+        <translation>나중에 알림</translation>
     </message>
 </context>
 <context>
@@ -2213,11 +2667,11 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Open-Sankore</source>
-        <translation type="unfinished">Open-Sankore</translation>
+        <translation>Open-Sankore</translation>
     </message>
     <message>
         <source>OpenSankore</source>
-        <translation type="unfinished">OpenSankore</translation>
+        <translation>OpenSankore</translation>
     </message>
 </context>
 <context>
@@ -2294,11 +2748,11 @@ Please reboot the application to access the updated documents.</source>
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished">기존 유니보드/Sankore 문서 가져오기</translation>
+        <translation>기존 유니보드/Sankore 문서 가져오기</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished">가져와야 할 문서가 없습니다.</translation>
+        <translation>가져와야 할 문서가 없습니다</translation>
     </message>
 </context>
 <context>
@@ -2467,6 +2921,53 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>컨텐츠를 트랩으로 선택:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>응용 프로그램 이름</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>제한 및 면책 조항.</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>이 기능은 가장 일반적인 웹 페이지에서 작동하도록 개발되었습니다.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>링크를 만들거나 웹에서 컨텐츠를 수집 시 저작권을 존중하시기 바랍니다.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>다운로드 위치:
+라이브러리</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>다운로드 위치
+현재 페이지</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>링크 추가 위치:
+라이브러리</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>링크 추가 위치
+현재 페이지</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2542,6 +3043,11 @@ p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">귀하는 'Upload'를 클릭함으로써 귀하가 해당 콘텐츠에 대한 모든 권한을 소유하거나 소유자로부터 해당 콘텐츠를 YouTube에 공개할 수 있도록 허락받았으며, 해당 콘텐츠가 YouTube 이용약관 (</span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a><span style=" font-family:'Lucida Grande'; font-size:10pt;">)을 준수함을 보증합니다.</span></p></body></html></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translatorcomment>재부팅 시 자격 증명 복원</translatorcomment>
+        <translation>Restore credentials on reboot</translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2738,608 +3244,126 @@ p, li { white-space: pre-wrap; }
         <translation>라이선스</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>네트워크</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished">Open-Sankoré</translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished">보조 화면 또는 프로젝터에 내부 웹 페이지 콘텐츠 표시</translation>
+        <translation>보조 화면 또는 프로젝터에 내부 웹 페이지 콘텐츠 표시</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished">다중 디스플레이</translation>
+        <translation>다중 디스플레이</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished">컨트롤 디스플레이 스왑 및 디스플레이 보기</translation>
+        <translation>컨트롤 디스플레이 스왑 및 디스플레이 보기</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished">모드</translation>
+        <translation>모드</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished">시작할 모드:</translation>
+        <translation>시작할 모드:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">보드</translation>
+        <translation>보드</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished">바탕 화면</translation>
+        <translation>바탕 화면</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished">프록시 사용자:</translation>
+        <translation>프록시 사용자:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished">패스:</translation>
-    </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="unfinished">Planète Sankoré ID</translation>
+        <translation>패스:</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished">사용자:</translation>
+        <translation>사용자:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished">패스:</translation>
+        <translation>패스:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translatorcomment>Translation needed</translatorcomment>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation>Credits</translation>
     </message>
     <message>
-        <source>Credits</source>
-        <translation type="unfinished">Credits</translation>
+        <source>Start up tips</source>
+        <translation>시작 조언</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Show start up tips</source>
+        <translation>시작 조언 표시</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>언어</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>언어 선택</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>재시작 시 새 언어가 로딩됩니다</translation>
+    </message>
+    <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Open-Sankoré 닫기</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Planète Sankoré ID for exporting file</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>재부팅 시 자격증명 복원</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>SSL열기</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">라이선스는 공식 및 법적 승인 번역에 영어로되어 있습니다.</span></p></td></tr></table></body></html></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_mg.ts b/Sankore-3.1/resources/i18n/sankore_mg.ts
index db9b8e0..20775de 100644
--- a/Sankore-3.1/resources/i18n/sankore_mg.ts
+++ b/Sankore-3.1/resources/i18n/sankore_mg.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="fr_CH">
+<TS version="2.0" language="fr_FR">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -392,14 +392,6 @@
         <translation>Maka ny fikandrana iray</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Mpiatin'ny tranon-kala natsofoka</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Fakana mpiatin'ny tranon-kala azo atsofoka</translation>
-    </message>
-    <message>
         <source>Show Main Screen on Display Screen</source>
         <translation>Aseho amin'ny efijery hita ny efijery ampiasana matetika</translation>
     </message>
@@ -481,6 +473,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Tobin-drohy</translation>
     </message>
     <message>
@@ -688,14 +681,6 @@
         <translation>Fanefena ny fandraiketana ny Podcast</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Alaina ny Flash</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Alaina ny mpiatiny Flash</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Alaina ny tranon-kala</translation>
     </message>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation>Atokony</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Alaina ho an'ny</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">tahirim-boky</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Alaina ho an'ny tahirim-boky</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Alaina ho an'io</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">pejy io</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Alaina ho an'io pejy io</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ampiana rohy</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ao anatin'ny tahirim-boky</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Ampiana rohy ao anatin'ny tahirim-boky</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ampiana rohy</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">eto amin'ity pejy ity</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Ampiana rohy eto amin'ity pejy ity</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Tobin-drohy</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -988,12 +1010,110 @@
         <translation>Bika:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Habe:</translation>
+        <source>Alpha:</source>
+        <translation>Alpha:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Hidio</translation>
+        <source>Geometry:</source>
+        <translation>Jeometria:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Saka:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Halavana:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Tehirizina nyfifandraisan'ny saka sy ny halavana</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Fiasany:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Fijerevana mialoha:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Hidina ny tahiry</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><fafana ny mpiatiny></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Tsy ekena ny sary</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Tsy afaka mampiseho ny data</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Ny rakitra nofafana dia tsy fantatra ho raki-peo</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Andefa raki-peo</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Ampiana rohy ny pejy</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Ampiana rohy ny pejin'ny tranon-kala</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Alaina avy ao anatin'ny tahirim-boky sy atao ao anatin'ity faritra ity ilay raki-peo </translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ekena</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Pejy ao aorina</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Pejy teo aloha</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Lohatenin'ilay pejy</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Pejy farany</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Laharan'ny pejy</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Ampidiro eto ny rohin'ny lahabolana</translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1178,6 @@
         <translation>Fafao ny pejy</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Fafao ny rakitra</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Tena te hamafa an'ilay rakitra '%1' ve ianao ?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Daba foana</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Tena te hanafoana an'ilay daba ve ianao ?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Manafoana daba</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Daba voafoana</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Mamafa fitoeran-drakitra</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Tena te hamafa an'ilay fitoeran-drakitra '%1' ve ianao sy ny mpiatiny rehetra ?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Tsisy fitoeran-drakitra voafidy!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Manokatra rakitra zaka</translation>
     </message>
@@ -1160,6 +1244,14 @@
         <source>Untitled Documents</source>
         <translation>Rakitra tsy misy lohateny</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1247,6 +1339,59 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Ekena</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Soloina</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Ajanony</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Ny anarana %1 dia efa nampiasana.
+Raha tazomina io anarana io dia voasolo ilay rakitra efa nisy.
+Raha omena anarana vaovao dia hisy rakitra iray vaovao.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Ny rakitrako</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Modely</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Daba</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Mandika pejy %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 pejy voadika</numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1265,6 +1410,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Fakana tsy nety.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>Ny mpizara alavitra dia tsy manaiky ny fifandraisana (ny mpizara dia tsy manaiky fangatahana)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>ny mpizara alavitra dia nanapaka ny fifandraisana alohan'ny nandraisana sy nikarakarana ny valiny feno</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>ny anaran'ilay mpizara alavitra dia tsy hita ( anarana tsy mety)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>Tapaka ny fifandraisana amin'ny mpizara alavitra fa ela loatra</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>Ny asa dia najanona tamin'ny didy abort() na close() nefa tsy vita akory.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>ny fifandraisana SSL/TLS dia tsy nety ary ny lalana voantoka dia tsy mety ampiasana. Nalefa ny kaika sslErrors().</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>Tapaka ny fifandraisana noho ny fanapahan'ny rezo, na izany aza dia nalefa amin'ny fidirana hafa ny rafitra. Ho averina alefa ny fangatahana ary ho valiana vao miverina ny fifandraisana.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>Ny fifandraisana amin'ny mpizara proxy dia tsy nekena ( tsy manaiky fangatahana ny mpizara proxy)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>ny mpizara proxy dia nanapaka ny fifandraisana alohan'ny nandraisana sy nikarakarana ny valiny feno</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>ny anaran'ilay mpizara proxy dia tsy hita ( anarana tsy mety)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>Ny fifandraisana amin'ny mpizara proxy dia ela loatra na tsy namaly ara-potoana an'ilay fangatahana nalefa ny proxy</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>Ny proxy dia mila famantarana mba hamalian'ny fangatahana, kanefa tsy manaiky ny anarana sy ny teni-miafina nampiaisana (raha toa ka nisy)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>Tsy nekena ny fidirana amin'ny mpiatiny alavitra ( ohatran'ny diso HTTP 401 )</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>Tsy azo ato izany amin'ny mpiatiny alavitra</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>Tsy hita amin'ny mpizara ny mpiatiny alavitra ( ohatran'ny diso HTTP 404 )</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>Ny mpizara alavitra dia mila famantarana mba hizarana ny mpiatiny, kanefa tsy manaiky ny anarana sy ny teni-miafina nampiaisana (raha toa ka nisy)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>Tokony nalefa indray mandeha ilay fangatahana, kanefa tsy nety satria tsy nety novakiana fanindroany ilay data nalefa ohatra .</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>Ny API fidirana amin'ny rezo dia tsy nety namaly ny fangatahana satria tsy fantatra ny fomba firesaka</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>Ny asa nangatahana dia tsy mety amin'ity fomba firesaka ity</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>Nisy tsy fetezana mifandray amin'ny rezo nitranga</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>Nisy tsy fetezana mifandray amin'ny proxy nitranga</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>Nisy tsy fetezana mifandray amin'ny mpiatiny alavitra nitranga</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>Nisy fahasimbana ao anatin'ny fomba firesaka nitranga (valiny tsy nety na tsy nampoizina ohatra, sns.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1333,6 +1577,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Fandefasana tsy nety...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Alefa ho rakitra UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Mandefa ny rakitra ...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Fandefasana nety.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Fandefasana tsy nety.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Alefa ho tahaka ny rakitra Sankore UBX</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1419,6 +1690,10 @@
         <source>Object informations</source>
         <translation>Mombamomban'ny zavatra</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">Ampiana</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1501,6 +1776,14 @@
         <source>Trash</source>
         <translation>Daba</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Tobin-drohy</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Tranon-kala</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1534,6 +1817,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Hita amin'ny efijery voavelatra</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Manampy fihetsika iray</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Esorina amin'ilay raki-peo ny rohy</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Esorina amin'ilay pejy ny rohy</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Esorina amin'ilay rohin'ny tranon-kala ny rohy</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1549,6 +1848,22 @@
         <source>Go to Content Source</source>
         <translation>Hande any amin'ny fototr'ilay mpiatiny</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Manampy fihetsika iray</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Esorina amin'ilay raki-peo ny rohy</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Esorina amin'ilay pejy ny rohy</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Esorina amin'ilay rohin'ny tranon-kala ny rohy</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1569,13 +1884,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Tranon-kala</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1636,6 +1944,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (valan-drakitra) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1850,6 +2165,142 @@ Tena tsy te hiraharaha an'ireo tsy mety ho an'ilay milina ve ianao?</t
         <source>Marker is pressure sensitive</source>
         <translation>Ny penina lehibe dia sarotiny amin'ny fitsindrina</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>Tsotra</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Arabic</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bulgarian</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Catalan</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Czech</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Danish</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Alemanina</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Greek</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Anglisy</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Anglisy UK</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Espaniola</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Frantsay</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Frantsay avy amin'ny Suisse</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Italianina</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Hebrio</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Japanese</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Koreanina</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Malagasy</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Norvejianina</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Dutch</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Polish</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Romansh</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Romanianina</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Rosiana</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Slovak</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Swedish</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Turkish</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Sinoa</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Sinoa tsotra</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Sinoa nentim-paharazana</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1891,6 +2342,17 @@ Tena tsy te hiraharaha an'ireo tsy mety ho an'ilay milina ve ianao?</t
         <source>My Movies</source>
         <translation>Ny sarimietsiko</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Tranon-kala</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Hita amin'ny manaraka</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2106,14 +2568,14 @@ Tena tsy te hiraharaha an'ireo tsy mety ho an'ilay milina ve ianao?</t
     </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Pejy iray manontolo</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Tranon-kala</translation>
+        <source>Embed </source>
+        <translation>Natao tao anatiny</translation>
     </message>
 </context>
 <context>
@@ -2460,6 +2922,49 @@ Avereno alefa ny rindr'asa ahafahana mampiasa ny rakitra novoazana azafady.
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Safidio ny mpiatiny ho alaina:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Anaran'ny rindran'asa</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Fifehezana sy dina.</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Ity fiasana ity dia namboarina ho andeha amin'ny akamaroan'ny pejin'ny tranon-kala.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Mba hajao azafady ny lalana amin'ny fanamboarana rohy sy fangalana mpiatiny amin'ny tranon-kala.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2537,7 +3042,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Restore credentials on reboot</source>
-        <translation type="unfinished"></translation>
+        <translation>Averina ampiaisana ny anarana sy ny teni-miafina nidirana rehefa averina alefa</translation>
     </message>
 </context>
 <context>
@@ -2735,22 +3240,10 @@ p, li { white-space: pre-wrap; }
         <translation>Licences</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Rezo</translation>
     </message>
@@ -2794,10 +3287,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Teny fanalahidy:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="obsolete">Planète Sankoré ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Mpampiasa:</translation>
@@ -2807,1134 +3296,62 @@ p, li { white-space: pre-wrap; }
         <translation>Teny fanalahidy:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS</translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Voaka</translation>
     </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Planète Sankoré ID ho fakana rakitra</translation>
+    </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Ny licence dia amin'ny tena anglisy mba hanajana ny famadihan-teny manaran-dalana sy ofisialy.</span></p></td></tr></table></body></html></translation>
+        <source>Restore credentials on reboot  </source>
+        <translation>Averina ampiaisana ny anarana sy ny teni-miafina nidirana rehefa averina alefa  </translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Ity kirakira ity dia nomena ohatr'izao, tsy misy fiantohana.Tsy misy zava-miseho afaka anomezana tsiny an'ny mpamorona raha misy zavatra tsy mety amin'ny fampiasana an'ity kirakira ity.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Ny alalana mampiasa azy dia nomena an'ny olon-drehetra ho an'izay tiany, na rindran'asa mampidi-bola aza, afaka ovainy sy zarainy, fa manaraka ny didy hoe:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. Ny fiavian'ny kirakira dia tsy azo lotoina anarana, tsy mahazo miteny fa ianao no namorona an'ilay kirakira. Raha mampiasa azy ianao dia tokony asiana teny fisaorana amin'ilay mombamomba ny fampiasanao azy, na dia tsy voatery ary.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Ny kirakira novaina dia tsy maintsy marihana fa novaina ary tsy azo lazaina fa ilay kirakira orijinaly.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. Ity fanamarihana ity dia tsy azo esorina na ovaina mihitsy.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+        <source>Start up tips</source>
+        <translation>Toro-hevitra amin'ny voalohany</translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    <message>
+        <source>Show start up tips</source>
+        <translation>Aseho ny toro-hevitra amin'ny voalohany</translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    <message>
+        <source>Language</source>
+        <translation>Teny</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Safidio ny teny</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Ny teny nosafidiny dia ho ampiasana rehefa averina alefa amin'ny manaraka</translation>
     </message>
     <message utf8="true">
-        <source>Planète Sankoré ID for exporting file</source>
-        <translation type="unfinished"></translation>
+        <source>Close Open-Sankoré</source>
+        <translation>Hidio Open-Sankoré</translation>
     </message>
     <message>
-        <source>Restore credentials on reboot  </source>
-        <translation type="unfinished"></translation>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_nb.ts b/Sankore-3.1/resources/i18n/sankore_nb.ts
index 63c10b7..67ad22c 100644
--- a/Sankore-3.1/resources/i18n/sankore_nb.ts
+++ b/Sankore-3.1/resources/i18n/sankore_nb.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Bokmerke</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>Konfigurer opptak for podcast</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Flash trap</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Trap flash-innhold</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Web trap</translation>
     </message>
@@ -728,14 +721,6 @@
         <translation>Ta bilde av et vindu</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Legg inn web-innhold</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Ta bilde av web-innhold som kan legges inn</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>Vis på display</translation>
     </message>
@@ -825,6 +810,43 @@
         <source>Group</source>
         <translation>Grupper</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Last ned til</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">bibliotek</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Last ned til bibliotek</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Last ned til</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">aktuell side</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Last ned til aktuell side</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Legg til lenke til</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">bibliotek</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Legg til lenke til bibliotek</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Legg til lenke til</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">aktuell side</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Legg til lenke til aktuell side</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Bokmerke</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -990,12 +1012,110 @@
         <translation>Form:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Størrelse:</translation>
+        <source>Alpha:</source>
+        <translation>Alfa:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Avslutt</translation>
+        <source>Geometry:</source>
+        <translation>Geometri:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Bredde: </translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Høyde:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Behold dimensjoner</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Modus:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Forhåndsvisning:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Lukk hurtigbuffer</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><slipp innhold></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Bilder er ikke godtatt</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Kan ikke vise data</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Sluppet fil er ikke gjenkjent som en lydfil</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Spill en lydfil</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Legg til lenke til side</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Legg til lenke til et nettsted</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Dra og slipp lydfilen fra biblioteket i denne boksen</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Neste side</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Forrige side</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Tittelside</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Siste side</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Sidenummer</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Sett inn url-tekst her</translation>
     </message>
 </context>
 <context>
@@ -1061,42 +1181,6 @@
         <translation>Fjern side</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Fjern dokument</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Er du sikker på at du vil fjerne dokumentet "%1"?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Tøm søppel</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Er du sikker på at du vil tømme søppelet?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Tømmer søppel</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Søppel tømt</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Fjern mappe</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Er du sikker på at du vil fjerne mappen "%1" med alt innhold?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Intet dokument valgt!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Åpne støttet fil</translation>
     </message>
@@ -1163,6 +1247,14 @@
         <source>Untitled Documents</source>
         <translation>Dokumenter uten tittel</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>Dette er en irreversibel handling!</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1250,6 +1342,59 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Godta</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Erstatt</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Navnet%1 er allerede i bruk.
+Om du beholder dette navnet vil du erstatte dokumentet.
+Om du gir et nytt navn vil du opprette et nytt dokument.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Mine dokumenter</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Modeller</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Søppel</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Dokumenter uten tittel</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Kopierer side %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 sider kopiert</numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1268,6 +1413,106 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Nedlasting mislyktes.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>
+Den eksterne serveren godtok ikke forbindelsen (serveren godtar ikke forespørsler)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>den eksteren serveren lukket forbindelsen for tidlig, før hele svaret ble mottatt og behandlet</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>Det eksterne vertsnavnet ble ikke funnet (ugyldig vertsnavn)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>forbindelsen til den eksterne serveren ble tidsutkoblet</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>operasjonen ble avbrutt via oppfordringer til å avbryte() eller lukke() før den var ferdig.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>SSL/TLS handshake mislyktes og den krypterte kanalen kunne ikke bli etablert. SSL-feil()-signalet burde vært sendt.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>Tilkoblingen ble brutt på grunn av frakobling fra nettverket. Systemet har imidlertid igangsatt roaming til et annet tilgangspunkt. Forespørselen bør sendes igjen og vil bli behandlet så snart som tilkoblingen er gjenopprettet.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>tilkoblingen til proxy-serveren ble nektet (proxy-serveren godtar ikke forespørsler)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>proxy-serveren lukket forbindelsen for tidlig, før hele svaret ble mottatt og behandlet</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>proxy vertsnavnet ble ikke funnet (ugyldig proxy-vertsnavn)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>tilkoblingen til proxy-serveren ble tidsutkoblet eller proxy-serveren svarte ikke på den sendte forespørselen i tide</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>proxy-serveren krever autentisering for å respektere forespørselen men godtok ikke berettigelsesbevisene som ble gitt (hvis noen)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>tilgangen til det eksterne innholdet ble nektet (ligner HTTP-feil 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>den forespurte operasjonen om det eksterne innholdet er ikke tillatt</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>det eksterne innholdet ble ikke funnet på serveren (ligner HTTP-feil 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>den eksterne serveren krever autentisering for å servere innholdet, men berettigelsesbevisene som ble gitt ble ikke godtatt (hvis noen)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>forespørselen må sendes igjen, men dette mislyktes, for eksempel fordi opplastingsdata ikke kunne leses en andre gang.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>Network Access API kan ikke respektere forespørselen fordi protokollen ikke er kjent</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>den forespurte operasjonen er ugyldig for denne protokollen</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>en ukjent nettverksrelatert feil ble oppdaget</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>en ukjent proxy-relatert feil ble oppdaget</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>en ukjent feil relatert til det eksterne innholdet ble oppdaget</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>et sammenbrudd i protokoll ble oppdaget (spaltingsfeil, ugyldige eller uventede svar, osv.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1336,6 +1581,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Kunne ikke eksportere ...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Eksporter som UBX-fil</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Eksporterer dokument ...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Eksport gjennomført.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Eksport mislyktes.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Eksporter til Sankore UBX-format</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1422,6 +1694,10 @@
         <source>Object informations</source>
         <translation>Objektopplysninger</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation>Legg til</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1504,6 +1780,14 @@
         <source>Trash</source>
         <translation>Søppel</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Bokmerker</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1537,6 +1821,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Synlig på utvidet skjerm</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Legg til en handling</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Fjern lenke til lyd</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Fjern lenke til side</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Fjern lenke til nettsted</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1552,6 +1852,22 @@
         <source>Go to Content Source</source>
         <translation>GÃ¥ til kildeinnhold</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Legg til en handling</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Fjern lenke til lyd</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Fjern lenke til side</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Fjern lenke til nettsted</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1572,13 +1888,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1639,6 +1948,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankoré (sett med dokumenter) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1848,6 +2164,142 @@ Do you want to ignore these errors for this host?</source>
         <source>Marker is pressure sensitive</source>
         <translation>Markøren er trykksensitiv</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>Standard</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Arabisk</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bulgarsk</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Katalansk</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Tsjekkisk</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Dansk</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Tysk</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Gresk</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Engelsk</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Britisk engelsk</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Spansk</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Fransk</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Sveitsisk-fransk</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Italiensk</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Hebraisk</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Japansk</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Koreansk</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Gassisk</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Norsk</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Nederlandsk</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Polsk</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Retoromansk</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Rumensk</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Russisk</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Slovakisk</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Svensk</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Tyrkisk</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Kinesisk</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Forenklet kinesisk</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Tradisjonell kinesisk</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>Korsikansk</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>Hindi</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1889,6 +2341,17 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation>Mine filmer</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Synlig neste gang</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2102,20 +2565,16 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>Skjul</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation>Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Hel side</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <source>Embed </source>
+        <translation>Legge inn </translation>
     </message>
 </context>
 <context>
@@ -2461,6 +2920,53 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Velg innhold som skal kopieres:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Applikasjonsnavn</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Begrensning og ansvarsfraskrivelse. </translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Denne funksjonen er utviklet til å fungere på de mest vanlige nettsider.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Vennligst respekter opphavsrett for oppretting av lenker eller kopi av innhold fra nettet.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>Last ned til
+bibliotek</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>Last ned til
+aktuell side</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>Legg til lenke til
+bibliotek</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>Legg til lenke til
+aktuell side</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2536,6 +3042,10 @@ p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>Gjenopprett berettigelsesbevis ved omstart</translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2732,22 +3242,10 @@ p, li { white-space: pre-wrap; }
         <translation>Lisenser</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>Ã…pne SSI</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Nettverk</translation>
     </message>
@@ -2792,10 +3290,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Pass:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation>Planet Sankoré-ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Bruker:</translation>
@@ -2805,553 +3299,71 @@ p, li { white-space: pre-wrap; }
         <translation>Pass:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translatorcomment>Translates as "thanks to"</translatorcomment>
         <translation>Takk til</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Start up tips</source>
+        <translation>Oppstartstips</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Denne programvaren leveres "som den er" uten noen form for garanti, verken uttrykkelig eller underforstått. Forfatterne av programvaren skal ikke under noen omstendighet holdes ansvarlige for bruk av denne programvaren.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Det gis tillatelse til hvem som helst å bruke programvaren til ethvert formål, inkludert kommersielle formål, og til å endre den og distribuere den fritt, med følgende begrensninger:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 1. Opprinnelsen til denne programvaren skal ikke være feilrepresentert, du kan ikke hevde at du har skrevet den opprinnelige programvaren. Hvis du bruker denne programvaren i et produkt, er det fint om du nevner at du har brukt den i dokumentasjonen, men dette er ikke påkrevd.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 2. Kildeversjoner som er endret skal merkes som endret, og skal ikke oppfattes som den opprinnelige programvaren.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 3. Denne merknaden skal ikke fjernes eller endres i noen kildedistribusjon.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html>
-</translation>
+        <source>Show start up tips</source>
+        <translation>Vis oppstartstips</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Språk</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Velg språk</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Det nye språket vil bli lastet ved neste omstart</translation>
     </message>
     <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Lukk Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Planète Sankoré ID for eksportering av fil</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>Gjenopprett berettigelsesbevis ved omstart  </translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré versjon 1.4 , Copyright (C) 2010-2012 Public Interest Grouping for Digital Education in Africa  (GIP ENA)<br /><br />Open-Sankoré er fri programvare; du kan redistribuere det og/eller endre det etter betingelsene gitt i Lesser GNU general Public Licence (GNU LGPL) som publisert av Free Software Foundation, enten versjon 2 av lisensen, eller en nyere versjon.<br />Du kan finne kildekoden til denne programvaren på </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré distribueres i håp om at det skal være nyttig, men UTEN NOEN SOM HELST GARANTI, selv uten underforstått garanti om SALGBARHET eller EGNETHET TIL ET BESTEMT FORMÅL..<br />Se lisensen Lesser GNU General Public Licence i lisensrubrikken eller på nettstedet </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Kontakt : <br />Public Interest Grouping for Digital Education in Africa (GIP ENA)<br />Delegate for Digital Education in Africa<br />20 Avenue Ségur, F-75007 Paris<br />Tlf.: +33 1 43 17 68 08<br />e-post: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html>
-</translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Lisensene er på engelsk for å respektere den offisielle og juridisk godkjente oversettelsen.</span></p></td></tr></table></body></html></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_nl.ts b/Sankore-3.1/resources/i18n/sankore_nl.ts
index f216de7..ddc9738 100644
--- a/Sankore-3.1/resources/i18n/sankore_nl.ts
+++ b/Sankore-3.1/resources/i18n/sankore_nl.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Favoriet</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>Podcast opname configureren</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Flash Trap</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Trap flash inhoud</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Internet bescherming</translation>
     </message>
@@ -728,14 +721,6 @@
         <translation>Venster opnemen</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Internetinhoud insluiten</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Opnemen insluitbare webinhoud</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>Op presentatiescherm weergeven</translation>
     </message>
@@ -821,14 +806,51 @@
     </message>
     <message>
         <source>Group</source>
-        <translation type="unfinished"></translation>
+        <translation>Groep</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">bibliotheek</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Downloaden naar bibliotheek</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Downloaden naar</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">huidige pagina</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Naar huidige pagina downloaden</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Link toevoegen naar</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">bibliotheek</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Link toevoegen naar bibliotheek</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Link toevoegen naar</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">huidige pagina</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Link toevoegen naar huidige pagina</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Favoriet</translation>
     </message>
 </context>
 <context>
     <name>PasswordDialog</name>
     <message>
         <source>Authentication Required</source>
-        <translation>Iinloggen verplicht</translation>
+        <translation>Inloggen verplicht</translation>
     </message>
     <message>
         <source>Username:</source>
@@ -843,7 +865,7 @@
     <name>ProxyDialog</name>
     <message>
         <source>Proxy Authentication</source>
-        <translation>Proxy identificatie</translation>
+        <translation>Proxy-identificatie</translation>
     </message>
     <message>
         <source>Connect to Proxy</source>
@@ -866,26 +888,26 @@
     <name>QObject</name>
     <message>
         <source>Element ID = </source>
-        <translation type="unfinished"></translation>
+        <translation>ID-element =</translation>
     </message>
     <message>
         <source>Content is not supported in destination format.</source>
-        <translation type="unfinished"></translation>
+        <translation>Inhoud wordt niet ondersteund in doelopmaak</translation>
     </message>
     <message>
         <source>Remove Page</source>
-        <translation type="unfinished">Pagina verwijderen</translation>
+        <translation>Pagina verwijderen</translation>
     </message>
     <message>
         <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
-        <translation type="unfinished"></translation>
+        <translation>Weet u zeker dat u 1 pagina van het geselecteerde document '%0' wilt verwijderen?</translation>
     </message>
 </context>
 <context>
     <name>UBApplication</name>
     <message>
         <source>Page Size</source>
-        <translation>Pagina Formaat</translation>
+        <translation>Pagina formaat</translation>
     </message>
     <message>
         <source>Podcast</source>
@@ -943,23 +965,23 @@
     </message>
     <message>
         <source>Delete page %1 from document</source>
-        <translation type="unfinished"></translation>
+        <translation>Pagina %1 uit document verwijderen</translation>
     </message>
     <message>
         <source>Page %1 deleted</source>
-        <translation type="unfinished"></translation>
+        <translation>Pagina %1 verwijderd</translation>
     </message>
     <message>
         <source>Add file operation failed: file copying error</source>
-        <translation type="unfinished"></translation>
+        <translation>Bestandsbewerking mislukt: fout bestand kopiëren</translation>
     </message>
     <message>
         <source>Group</source>
-        <translation type="unfinished"></translation>
+        <translation>Groep</translation>
     </message>
     <message>
         <source>Ungroup</source>
-        <translation type="unfinished"></translation>
+        <translation>Groep opheffen</translation>
     </message>
 </context>
 <context>
@@ -988,12 +1010,110 @@
         <translation>Vorm:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Formaat:</translation>
+        <source>Alpha:</source>
+        <translation>Alfa:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Sluiten</translation>
+        <source>Geometry:</source>
+        <translation>Geometrie</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Breedte:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Hoogte:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Verhoudingen aanhouden</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Modus:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Voorbeeld:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Cache sluiten</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><drop content></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Afbeeldingen worden niet geaccepteerd</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Kan gegevens niet weergeven</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Neergezette bestand wordt niet herkend als een audiobestand</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Een audiobestand afspelen</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Link naar pagina toevoegen</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Link naar een webpagina toevoegen</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Het audiobestand van de bibliotheek naar deze box slepen en laten vallen </translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Volgende pagina</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Vorige Pagina</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Titelpagina</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Laatste pagina</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Paginanummer</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>URL-tekst hier invoegen</translation>
     </message>
 </context>
 <context>
@@ -1020,7 +1140,7 @@
     </message>
     <message>
         <source>Show Open-Sankore</source>
-        <translation type="unfinished"></translation>
+        <translation>Open Sankore weergeven</translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1178,6 @@
         <translation>Pagina verwijderen</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Document verwijderen</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Weet u zeker dat u document "%1" wilt verwijderen?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Prullenbak legen</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Weet u zeker dat u de prullenbak wilt legen?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Prullenbak wordt geleegd</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Prullenbak is leeg</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Map verwijderen</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Weet u zeker dat u de map "%1" met inhoud wilt verwijderen?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Geen document geselecteerd!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Geopend ondersteund bestand</translation>
     </message>
@@ -1154,11 +1238,19 @@
     </message>
     <message>
         <source>Folder does not contain any image files</source>
-        <translation type="unfinished"></translation>
+        <translation>Map bevat geen beeldbestanden</translation>
     </message>
     <message>
         <source>Untitled Documents</source>
-        <translation type="unfinished">Onbenoemde Documenten</translation>
+        <translation>Onbenoemde Documenten</translation>
+    </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>Dit is een onomkeerbare handeling!</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1189,19 +1281,22 @@
     </message>
     <message>
         <source>Inserting page %1 of %2</source>
-        <translation type="unfinished"></translation>
+        <translation>Pagina %1 van %2 invoegen</translation>
     </message>
     <message>
         <source>Import successful.</source>
-        <translation type="unfinished">Import gelukt.</translation>
+        <translation>Import gelukt.</translation>
     </message>
     <message>
         <source>Import of file %1 successful.</source>
-        <translation type="unfinished"></translation>
+        <translation variants="yes">
+            <lengthvariant>Importeren van bestand %1 succesvol.</lengthvariant>
+            <lengthvariant></lengthvariant>
+        </translation>
     </message>
     <message>
         <source>Importing file %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Bestand %1 importeren</translation>
     </message>
 </context>
 <context>
@@ -1247,6 +1342,59 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Accepteren</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Vervangen</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annuleren</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>De naam %1 wordt al gebruikt.
+Als u deze naam aanhoudt, wordt het document vervangen.
+Als u een nieuwe naam geeft, wordt een nieuw document gemaakt.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Mijn documenten</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Modellen</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Prullenbak</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Naamloze documenten</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Kopie van pagina %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 pagina gekopieerd</numerusform>
+            <numerusform>%1 pagina's gekopieerd</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1265,6 +1413,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Downloaden mislukt</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>de externe server heeft de verbinding geweigerd (de server accepteert geen verzoeken)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>de externe server heeft de verbinding voortijdig gesloten, voordat het hele antwoord is ontvangen en verwerkt</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>de externe hostnaam is niet gevonden (ongeldige hostnaam)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>time out tijdens de verbinding met de externe server </translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>de bewerking is geannuleerd via oproepen afbreken() of sluiten() voordat deze was beëindigd</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>de SSL/TLS handdruk is mislukt en het versleutelde kanaal kon niet worden vastgesteld. Het sslErrors() signaal had moeten worden uitgezonden.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>de verbinding werd verbroken door een verbreking van het netwerk, maar het systeem heeft roaming in werking gezet naar een ander  toegangspunt. Het verzoek moet opnieuw worden verzonden en wordt verwerkt zodra de verbinding is hersteld.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>de verbinding met de proxy-server is geweiged (de proxy-server accepteert geen verzoeken)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>de proxy-server heeft de verbinding voortijdig gesloten, voordat het hele antwoord was ontvangen en verwerkt</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>de proxy-hostnaam is niet gevonden (ongeldige proxy-hostnaam)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>time out van de verbinding met de proxy of de proxy heeft niet tijdig op het verzonden verzoek geantwoord</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>de proxy vraagt om verificatie om het verzoek te honoreren maar heeft geen aangeboden credentials (als die er waren) geaccepteerd</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>de toegang tot de externe inhod werd genegeerd (zoals HTTP-fout 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>de verwerking verzocht op de externe inhoud is niet toegestaan</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>de externe inhoud is niet gevonden op de server (zoals HTTP-fout 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>de externe server vraagt om verificatie om de inhoud te dienen, maar de gegeven credentials werden niet geaccepteerd (als die er waren)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>het verzoek moest opnieuw worden verzonden, maar dit is mislukt bijvoorbeeld omdat de uploadgegevens de tweede keer niet konden worden gelezen.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>de Network Access API kan het verzoek niet honoreren omdat het protocol niet bekend is</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>de gevraagde bewerking is ongeldig voor dit protocol</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>een onbekend netwerk-gerelateerde fout werd gedetecteerd</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>een onbekende proxy-gerelateerde fout werd gedetecteerd</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>een onbekende fout gerelateerd tot de externe inhoud werd gedetecteerd</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>een defect in protocil werd gedetecteerd (parseringsfout, ongeldige of onverwachte responsen etc.)t </translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1279,7 +1526,7 @@
     <name>UBExportAdaptor</name>
     <message>
         <source>Warnings during export was appeared</source>
-        <translation type="unfinished"></translation>
+        <translation>Er verschenen waarschuwingen tijdens het exporteren </translation>
     </message>
 </context>
 <context>
@@ -1333,6 +1580,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Exporteren mislukt..</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Exporteren als UBX-bestand</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Document wordt geëxporteerd...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Export gelukt.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Exporteren mislukt</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Exporteren naar Sankore UBX-opmaak</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1419,6 +1693,10 @@
         <source>Object informations</source>
         <translation>Object informatie</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation>Toevoegen</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1463,91 +1741,131 @@
     </message>
     <message>
         <source>Audios</source>
-        <translation type="unfinished">Audio's</translation>
+        <translation>Audio's</translation>
     </message>
     <message>
         <source>Movies</source>
-        <translation type="unfinished">Films</translation>
+        <translation>Films</translation>
     </message>
     <message>
         <source>Pictures</source>
-        <translation type="unfinished">Foto's</translation>
+        <translation>Foto's</translation>
     </message>
     <message>
         <source>Animations</source>
-        <translation type="unfinished">Animaties</translation>
+        <translation>Animaties</translation>
     </message>
     <message>
         <source>Interactivities</source>
-        <translation type="unfinished">Interactiviteiten</translation>
+        <translation>Interactiviteiten</translation>
     </message>
     <message>
         <source>Applications</source>
-        <translation type="unfinished">Toepassingen</translation>
+        <translation>Toepassingen</translation>
     </message>
     <message>
         <source>Shapes</source>
-        <translation type="unfinished">Vormen</translation>
+        <translation>Vormen</translation>
     </message>
     <message>
         <source>Favorites</source>
-        <translation type="unfinished"></translation>
+        <translation>Favorieten</translation>
     </message>
     <message>
         <source>Web search</source>
-        <translation type="unfinished"></translation>
+        <translation>Zoeken op het web</translation>
     </message>
     <message>
         <source>Trash</source>
-        <translation type="unfinished">Prullenbak</translation>
+        <translation>Prullenbak</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Favorieten</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Internet</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
     <message>
         <source>Accept</source>
-        <translation type="unfinished"></translation>
+        <translation>Accepteren</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Annuleren</translation>
+        <translation>Annuleren</translation>
     </message>
     <message>
         <source>Enter a new folder name</source>
-        <translation type="unfinished"></translation>
+        <translation>Een nieuwe mapnaam invoeren</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesProgressInfo</name>
     <message>
         <source>Loading </source>
-        <translation type="unfinished"></translation>
+        <translation>Laden:</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">Vergrendeld</translation>
+        <translation>Vergrendeld</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">Weergeven op Verbreed scherm</translation>
+        <translation>Weergeven op Verbreed scherm</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Voeg de werkvorm toe</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Link naar audio verwijderen</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Link naar pagina verwijderen</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Link naar web-url verwijderen</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
     <message>
-        <source>Locked</source>
-        <translation>Vergrendeld</translation>
+        <source>Locked</source>
+        <translation>Vergrendeld</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Weergeven op Verbreed scherm</translation>
+    </message>
+    <message>
+        <source>Go to Content Source</source>
+        <translation>Naar inhoudsbron</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Voeg de werkvorm toe</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Link naar audio verwijderen</translation>
     </message>
     <message>
-        <source>Visible on Extended Screen</source>
-        <translation>Weergeven op Verbreed scherm</translation>
+        <source>Remove link to page</source>
+        <translation>Link naar pagina verwijderen</translation>
     </message>
     <message>
-        <source>Go to Content Source</source>
-        <translation>Naar inhoudsbron</translation>
+        <source>Remove link to web url</source>
+        <translation>Link naar web url verwijderen</translation>
     </message>
 </context>
 <context>
@@ -1569,17 +1887,10 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
-        <translation type="unfinished">Wordt geladen...</translation>
+        <translation>Wordt geladen...</translation>
     </message>
 </context>
 <context>
@@ -1636,6 +1947,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (documentenset) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1701,7 +2019,7 @@
     <name>UBMessagesDialog</name>
     <message>
         <source>Close</source>
-        <translation type="unfinished">Sluiten</translation>
+        <translation>Sluiten</translation>
     </message>
 </context>
 <context>
@@ -1844,6 +2162,142 @@ Do you want to ignore these errors for this host?</source>
         <source>Marker is pressure sensitive</source>
         <translation>Markeerstift is druk gevoelig</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>Standaard</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Arabisch</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bulgaars</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Catalaans</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Tsjechisch</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Deens</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Duits</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Grieks</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Engels</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Engels VK</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Spaans</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Frans</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Zwitsers Frans</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Italiaans</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Ivriet</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Japans</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Koreaans</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Malagasi</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Noors</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Nederlands</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Pools</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Reto-Romaans</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Roemeens</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Russisch</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Slowaaks</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Zweeds</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Turks</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Chinees</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Vereenvoudigd Chinees</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Traditioneel Chinees</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>Corsicaans</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>Hindi</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1885,6 +2339,17 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation>Mijn films</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Volgende keer zichtbaar</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2098,20 +2563,16 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>Cache</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Hele pagina</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <source>Embed </source>
+        <translation>Insluiten</translation>
     </message>
 </context>
 <context>
@@ -2203,11 +2664,11 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Open-Sankore</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore</translation>
     </message>
     <message>
         <source>OpenSankore</source>
-        <translation type="unfinished"></translation>
+        <translation>OpenSankore</translation>
     </message>
 </context>
 <context>
@@ -2457,6 +2918,53 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Selecteer inhoud om deze te onderscheppen:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Applicatie naam</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Beperking en disclaimer</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>De functie is ontwikkeld om te werken op de meest voorkomende webpagina's</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Houd u aan copyrights voor het aanmaken van links of inhoud onderscheppen van internet</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>Downloaden naar
+bibliotkeek</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>Downloaden naar
+huidige pagina</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>Link toevoegen naar
+bibliotheek</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>Link toevoegen naar
+huidige pagina</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2532,6 +3040,10 @@ p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Door op  'Upload,'te klikken bevestigt u dat u over alle inhoudsrechten beschikt of dat u de toelating hebt gekregen van de eigenaar om de inhoud publiek te maken op YouTube, en dat u anderzijds akkoord gaat met de YouTube Terms of Service zoals beschreven op </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>aanmeldgegevens herstellen of herstarten</translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2728,22 +3240,10 @@ p, li { white-space: pre-wrap; }
         <translation>Licenties</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSI</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Netwerk</translation>
     </message>
@@ -2787,10 +3287,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Wachtwoord:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation>Planète Sankoré ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Gebruiker:</translation>
@@ -2800,535 +3296,70 @@ p, li { white-space: pre-wrap; }
         <translation>Wachtwoord:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Credits</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Start up tips</source>
+        <translation>Start-tips</translation>
+    </message>
+    <message>
+        <source>Show start up tips</source>
+        <translation>Start-tips weergeven</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Taal</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Een taal selecteren</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>De nieuwe taal wordt geladen bij de volgende start</translation>
+    </message>
+    <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Open Sankoré sluiten</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Planète Sankoré ID om een bestand te exporteren</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>Credentials op reboot herstellen</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">De licenties zijn in het Engels vanwege de officiële en wettelijk goedgekeurde vertaling.</span></p></td></tr></table></body></html></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_pl.ts b/Sankore-3.1/resources/i18n/sankore_pl.ts
index 320de7c..a01c38c 100644
--- a/Sankore-3.1/resources/i18n/sankore_pl.ts
+++ b/Sankore-3.1/resources/i18n/sankore_pl.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Zakładka</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>Konfiguruj nagrywanie podkastu</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Pułapka Flash</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Złap zawartość Flash</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>
         </translation>
@@ -729,14 +722,6 @@
         <translation>Przechwyć okno</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Osadź zawartość sieci Web</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Przechwyć zawartość sieci Web nadającą się do osadzenia</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>Pokaż na wyświetlaczu</translation>
     </message>
@@ -827,6 +812,43 @@
         <source>Group</source>
         <translation>Grupuj</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Pobierz do</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">biblioteki</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Pobierz do biblioteki</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Pobierz do</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">bieżącej strony</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Pobierz do bieżącej strony</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Dodaj Å‚Ä…cze do</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">biblioteki</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Dodaj Å‚Ä…cze do biblioteki</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Dodaj łącze do</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">bieżącej strony</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Dodaj łącze do bieżącej strony</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Zakładka</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -992,12 +1014,110 @@
         <translation>Kształt:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Rozmiar:</translation>
+        <source>Alpha:</source>
+        <translation>Alfa:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Zamknij</translation>
+        <source>Geometry:</source>
+        <translation>Geometria:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Szerokość: </translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Wysokość:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Zachowaj proporcje</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Tryb:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>PodglÄ…d:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Zamknij pamięć podręczną</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><upuść zawartość></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Obrazy nie sÄ… akceptowane</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Nie można wyświetlić danych</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Upuszczony plik nie został rozpoznany jako plik audio</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Odtwórz plik audio</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Dodaj Å‚Ä…cze do strony</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Dodaj Å‚Ä…cze do strony www</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Przeciągnij i upuść plik audio z biblioteki do tego pola</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Następna strona</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Poprzednia strona</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Strona tytułowa</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Ostatnia strona</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Numer strony</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Wpisz tekst url tutaj</translation>
     </message>
 </context>
 <context>
@@ -1062,42 +1182,6 @@
         <translation>Usuń stronę</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Usuń dokument</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Czy na pewno chcesz usunąć dokument „%1”?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Opróżnij kosz</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Czy na pewno chcesz opróżnić kosz?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Opróżnianie kosza</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Opróżniono kosz</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Usuń folder</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Czy na pewno chcesz usunąć folder „%1” wraz z zawartością?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Nie wybrano żadnego dokumentu!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Otwórz obsługiwany plik</translation>
     </message>
@@ -1165,6 +1249,14 @@
         <source>Untitled Documents</source>
         <translation>Dokumenty niezatytułowane</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>To działanie jest nieodwracalne!</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1252,6 +1344,60 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Akceptuj</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>ZastÄ…p</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Anuluj</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Nazwa %1 jest już używana.
+Zachowanie tej nazwy spowoduje zastÄ…pienie dokumentu.
+Podanie nowej nazwy spowoduje utworzenie nowego dokumentu.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Moje dokumenty</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Modele</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Kosz</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Dokumenty niezatytułowane</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Kopiowanie strony %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>Skopiowano %1 stronÄ™</numerusform>
+            <numerusform>Skopiowano %1 strony</numerusform>
+            <numerusform>Skopiowano %1 stron</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1272,6 +1418,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Pobieranie nieudane.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>serwer zdalny odrzucił połączenie (serwer nie akceptuje żądań)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>serwer zdalny zakończył połączenie przedwcześnie, zanim odpowiedź została w całości odebrana i przetworzona</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>nie znaleziono nazwy hosta serwera zdalnego (nieprawidłowa nazwa hosta)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>limit czasu połączenia z serwerem zdalnym został przekroczony</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>operacja została anulowana na drodze żądania przerwania() lub zamknięcia(), zanim została ukończona.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>uzgadnianie SSL/TLS się nie powiodło i nie udało się ustanowić szyfrowanego kanału. Powinien zostać nadany sygnał sslErrors().</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>połączenie zostało przerwane na skutek odłączenia od sieci, ale system zainicjował mobilny dostęp do innego punktu dostępu. Należy ponownie wysłać żądanie, aby zostało niezwłocznie przetworzone z chwilą ponownego ustanowienia połączenia.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>połączenie z serwerem proxy zostało odrzucone (serwer proxy nie akceptuje żądań)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>serwer proxy zakończył połączenie przedwcześnie, zanim odpowiedź została w całości odebrana i przetworzona</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>nie znaleziono nazwy hosta serwera proxy (nieprawidłowa nazwa hosta)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>limit czasu połączenia z serwerem proxy został przekroczony lub serwer proxy nie odpowiedział na czas na wysłane żądanie</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>serwer proxy wymaga uwierzytelnienia, zanim wypełnieni żądanie, ale nie zaakceptował żadnych poświadczeń (jeśli były)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>odmowa dostępu do zawartości zdalnych (podobna do błędu HTTP 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>żądana operacja na zawartości zdalnej jest niedozwolona</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>nie znaleziono zawartości zdalnej na serwerze (błąd podobny do HTTP 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>serwer proxy wymaga uwierzytelnienia w celu obsłużenia zawartości, ale nie zaakceptował żadnych poświadczeń (jeśli były)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>żądanie musiało zostać wysłane ponownie, ale działanie to się nie powiodło, np. ponieważ nie udało się ponownie odczytać wysłanych danych.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>API dostępu do sieci nie może wypełnić żądania, ponieważ protokół nie jest znany</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>żądana operacja jest niewłaściwa dla tego protokołu</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>wykryto nieznany błąd związany z siecią</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>wykryto nieznany błąd związany z serwerem proxy</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>wykryto nieznany błąd związany z zawartością zdalną</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>wykryto podział protokołu (błąd analizy, nieprawidłowe lub nieoczekiwane reakcje itp.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1340,6 +1585,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Eksportowanie nieudane...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Eksportowanie jako plik UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Eksportowanie dokumentu...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Eksportowanie zakończone powodzeniem.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Eksportowanie zakończone niepowodzeniem.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Eksportowanie do formatu Sankore UBX</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1426,6 +1698,10 @@
         <source>Object informations</source>
         <translation>Informacje o obiekcie</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation>Dodaj</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1508,6 +1784,14 @@
         <source>Trash</source>
         <translation>Kosz</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Zakładki</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Sieć Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1541,6 +1825,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Widoczne na ekranie rozszerzonym</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Dodaj działanie</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Usuń łącze do dźwięku</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Usuń łącze do strony</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Usuń łącze do adresu url w sieci web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1556,6 +1856,22 @@
         <source>Go to Content Source</source>
         <translation>Przejdź do źródła zawartości</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Dodaj działanie</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Usuń łącze do dźwięku</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Usuń łącze do strony</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Usuń łącze do adresu url w sieci web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1576,13 +1892,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Sieć Web</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1643,6 +1952,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (zestaw dokumentów) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1857,6 +2173,142 @@ Czy chcesz ignorować te błędy dla tego hosta?</translation>
         <source>Marker is pressure sensitive</source>
         <translation>Marker jest czuły na nacisk</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>Domyślne</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Arabski</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bułgarski</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Kataloński</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Czeski</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Duński</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Niemiecki</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Grecki</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Angielski</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Angielski (odmiana brytyjska)</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Hiszpański</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francuski</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Francuski (odmiana szwajcarska)</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>WÅ‚oski</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Hebrajski</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Japoński</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Koreański</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Malgaski</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Norweski</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Holenderski</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Polski</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Romansz</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Rumuński</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Rosyjski</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>SÅ‚owacki</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Szwedzki</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Turecki</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Chiński</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Chiński uproszczony</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Chiński tradycyjny</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>Korsykański</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>Hinduski</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1898,6 +2350,17 @@ Czy chcesz ignorować te błędy dla tego hosta?</translation>
         <source>My Movies</source>
         <translation>Moje filmy</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Sieć Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Widoczne następnym razem</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2111,20 +2574,16 @@ Czy chcesz ignorować te błędy dla tego hosta?</translation>
         <source>Cache</source>
         <translation>Pamięć podręczna</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation>Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Cała strona</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Sieć Web</translation>
+        <source>Embed </source>
+        <translation>Osadź</translation>
     </message>
 </context>
 <context>
@@ -2471,6 +2930,52 @@ Aby uzyskać dostęp do zaktualizowanych dokumentów, należy ponownie uruchomi
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Wybierz zawartość do złapania</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Nazwa aplikacji</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Ograniczenie i wyłączenie odpowiedzialności</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Ta funkcja została opracowana pod kątem najpopularniejszych stron internetowych.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Prosimy przestrzegać praw autorskich przy tworzeniu łączy i łapaniu zawartości z sieci Web.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>Pobierz do
+biblioteki</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>Pobierz do
+bieżącej strony</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>Dodaj Å‚Ä…cze do biblioteki</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>Dodaj Å‚acze do
+bieżącej strony</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2547,6 +3052,10 @@ p, li { white-space: pre-wrap; }
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Klikając „Wyślij”, poświadczasz, że posiadasz wszelkie prawa do zawartości lub masz zezwolenie właściciela zawartości na jej publiczne udostępnianie w serwisie YouTube, a także, że zawartość jest zgodna z Warunkami korzystania z serwisu YouTube dostępnymi pod adresem </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html>
 </translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>Przywróć poświadczenia przy ponownym rozruchu</translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2743,22 +3252,10 @@ p, li { white-space: pre-wrap; }
         <translation>Licencje</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Sieć</translation>
     </message>
@@ -2802,10 +3299,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Hasło:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation>Identyfikator Planète Sankoré</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Użytkownik:</translation>
@@ -2815,550 +3308,70 @@ p, li { white-space: pre-wrap; }
         <translation>Hasło:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Podziękowania</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Start up tips</source>
+        <translation>Wskazówki przy uruchomieniu</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly i Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Oprogramowanie jest dostarczane na zasadzie „takie, jakie jest”, bez żadnych wyraźnych ani dorozumianych gwarancji. Autorzy w żadnym wypadku nie ponoszą odpowiedzialności za jakiekolwiek szkody wynikające z użytkowania oprogramowania.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Oprogramowanie może być wykorzystywane przez każdego i w dowolnym celu – również komercyjnie – a także dowolnie modyfikowane i udostępniane, przy czym warunkiem jest zastosowanie się do następujących ograniczeń:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 1. Zabrania się rozpowszechniania nieprawdziwych informacji na temat źródła oprogramowania; nie wolno przywłaszczać sobie autorstwa oryginalnego programu. Jeśli wykorzystujesz oprogramowanie w produkcie, notka o autorach w dokumentacji produktu byłaby mile widziana, niemniej nie jest wymagana.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 2. Zmodyfikowane wersje źródłowe muszą być wyraźnie oznaczone i nie mogą być przedstawiane jako oryginalne oprogramowanie.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 3. Zabrania się usuwania tych informacji prawnych z jakichkolwiek dystrybucji źródłowych oraz ich modyfikowania.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+        <source>Show start up tips</source>
+        <translation>Pokazuj wskazówki przy uruchomieniu</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Język</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Wybierz język</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Nowy język zostanie wczytany przy ponownym uruchomieniu</translation>
     </message>
     <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Zamknij Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Identyfikator Planète Sankoré na potrzeby eksportowania pliku</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>Przywróć poświadczenia przy ponownym rozruchu</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré jest oprogramowaniem bezpłatnym: możesz je udostępniać i modyfikować na warunkach mniejszej ogólnej powszechnej licencji GNU wydanej przez Free Software Foundation, przy czym wersją obowiązującą licencji jest wersja 2 lub nowsza. Kod źródłowy oprogramowania znajdziesz pod adresem </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Oprogramowanie Open-Sankoré jest udostępniane z nadzieją, że okaże się przydatne, ale NIE JEST OBJĘTE ŻADNĄ GWARANCJĄ; nie ma zastosowania nawet dorozumiana gwarancja WARTOŚCI HANDLOWEJ lub PRZYDATNOŚCI DO OKREŚLONEGO CELU. Więcej informacji znajdziesz w mniejszej ogólnej powszechnej licencji GNU poniżej.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Licencje zostały sporządzone w języku angielskim, będącym językiem oficjalnego, uwierzytelnionego tłumaczenia.</span></p></td></tr></table></body></html></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_pt.ts b/Sankore-3.1/resources/i18n/sankore_pt.ts
index 9373d73..891f612 100644
--- a/Sankore-3.1/resources/i18n/sankore_pt.ts
+++ b/Sankore-3.1/resources/i18n/sankore_pt.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Favorito</translation>
     </message>
     <message>
@@ -701,14 +702,6 @@
         <translation>Configuração da Gravação de Podcast</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Captura de Flash</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Captura de Conteúdo Flash</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Captura de Web</translation>
     </message>
@@ -729,14 +722,6 @@
         <translation>Capturar uma Janela</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Conteúdo Web Embutido</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Capturar Conteúdo Web Embutido</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>Mostrar no Ecrã</translation>
     </message>
@@ -825,6 +810,43 @@
         <source>Group</source>
         <translation>Grupo</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Descarregar para</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">biblioteca</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Descarregar para a Biblioteca</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Descarregar para</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">página corrente</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Descarregar para a página corrente</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Adicionar link à</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">biblioteca</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Adicionar link à biblioteca</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Adicionar link à</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">página corrente</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Adicionar link à página corrente</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Favorito</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -990,12 +1012,110 @@
         <translation>Forma:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Tamanho:</translation>
+        <source>Alpha:</source>
+        <translation>Alfa:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Fechar</translation>
+        <source>Geometry:</source>
+        <translation>Geometria:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Largura:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Altura:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Manter as proporções</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Modo:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Pré-visualizar:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Fechar cache:</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><largar conteúdo></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>As imagens não são aceites</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Não pode mostrar a informação</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>O ficheiro largado não é reconhecido como audio</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Iniciar ficheiro audio</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Adicionar link à página</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Adicionar link a uma página Web</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Arrastar o ficheiro audio da biblioteca para esta caixa</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Próxima Página</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Página anterior</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Página Principal</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Última Página</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Página Número</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Inserir o texto url aqui</translation>
     </message>
 </context>
 <context>
@@ -1060,42 +1180,6 @@
         <translation>Remover Página</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Remover Documento</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Tem a certeza que quer remover o documento '%1'?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Vazar Lixo</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Tem a certeza que quer vazar a pasta Lixo? </translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>A vazar Lixo</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Pasta Lixo limpa</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Apagar Pasta</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Tem a certeza que quer apagar a pasta '%1' e todo o seu conteúdo?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Não há documentos selecionados!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Abrir Ficheiro Suportado</translation>
     </message>
@@ -1162,6 +1246,14 @@
         <source>Untitled Documents</source>
         <translation>Documentos sem nome</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1249,6 +1341,59 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Aceitar</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Substituir</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>O nome %1 jáa existe.
+Manter este nomevai substituir o documento.
+Um novo nome vai criar um novo documento.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Os meus documentos</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Modelos</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Lixo</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Documentos sem nome</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">A copiar página %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 de páginas copiadas</numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1267,6 +1412,106 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Download falhado.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>o servidor remoto recusou a conexão (o servidor não está a aceitar pedidos)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>o servidor remoto fechou a conexão prematuramente, antes da resposta ser completamente recebida e processada</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translatorcomment>anfitrião</translatorcomment>
+        <translation>o servidor anfitrião com esse nome não foi encontrado (nome de servidor inválido)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>a conexão com o servidor remoto expirou</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>a operação foi cancelada por pedido para abortar() ou fechada() antes de ter terminado.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>A negociação SSL/TLS falhou e a ligação encriptada não foi estabelecida. O sinal de sslErrors() deverá ter sido emitido.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>a conexão foi quebrada por desconexão da rede, no entanto o sistema iniciou a ligação para outro ponto de acesso. O pedido deve ser novamente submetido e será processado logo que a ligação seja restabelecida.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>A ligação ao servidor proxy foi recusada (o servidor proxy não está a aceitar pedidos)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>o servidor de proxy fechou a conexão prematuramente, antes da resposta ser completamente recebida e processada</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>o proxy anfitrião com esse nome não foi encontrado (nome de servidor inválido)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>a conexão com o proxy expirou ou o proxy não respondeu a tempo ao pedido enviado</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>o proxy requer autenticação para cumprir o pedido mas não aceitou nenhuma credencial fornecida (se houve alguma)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>o acesso ao conteúdo remoto foi negado (semelhante ao erro HTTP 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>a operação pedida ao conteúdo remoto não é permitida</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>o conteúdo remoto não foi encontrado no servidor (semelhante ao erro HTTP 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>o servidor remoto requer autenticação para mostrar o conteúdo mas não aceitou nenhuma credencial fornecida (se houve alguma)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>o pedido precisa de ser novamente enviado. O erro poderá ter acontecido pelos dados não poderem ser lidos uma segunda vez.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>o Acesso à Rede API não cumpriu o pedido porque o protocolo não é conhecido</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>a operação pedida é inválida para este protocolo</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>um erro desconhecido relacionado com a rede foi detetado</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>um erro desconhecido relacionado com o proxy foi detetado</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>um erro desconhecido relacionado com o conteúdo remoto foi detetado</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>uma quebra no protocolo foi detetada (erro de análise, resposta inválida ou inesperada, etc.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1335,6 +1580,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Falha ao exportar...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Exportar como ficheiro UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>A exportar documento...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Exportação bem sucedida.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Falha na Exportação</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Exportar para o Formato Sankore UBX</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1421,6 +1693,10 @@
         <source>Object informations</source>
         <translation>Informações do Objecto</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">Adicionar</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1504,6 +1780,14 @@
         <source>Trash</source>
         <translation>Lixo</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Favoritos</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1537,6 +1821,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Visível em Ecrã Expandido</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Adicionar uma ação</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Remover link para audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Remover link para página</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Remover link para endereço web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1552,6 +1852,22 @@
         <source>Go to Content Source</source>
         <translation>Ir para a Fonte do Conteúdo</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Adicionar uma ação</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Remover link para audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Remover link para página</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Remover link para endereço web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1572,13 +1888,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1639,6 +1948,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation type="unfinished">Open-Sankoré (conjunto de documentos) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1764,12 +2080,138 @@ Quer ignorar estes erros, deste servidor?</translation>
         <translation>Inglês</translation>
     </message>
     <message>
-        <source>Russian</source>
-        <translation>Russo</translation>
+        <source>Russian</source>
+        <translation>Russo</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Alemão</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francês</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Francês (Suiço)</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Sankore Cast</source>
+        <translation>Sankore Cast</translation>
+    </message>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation>Falha ao iniciar o codificador ...</translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation>Nenhum codificador de Podcast disponível ...</translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation>Parte %1</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation>no seu ambiente de trabalho ...</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation>na pasta %1</translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation>Podcast criado %1</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation>Erro de gravação do Podcast (%1)</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation>Entrada de áudio padrão</translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation>Sem gravação de áudio</translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translation>Pequeno</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Médio</translation>
+    </message>
+    <message>
+        <source>Full</source>
+        <translation>Completo</translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translation>Publicar na Intranet</translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translation>Publicar no Youtube</translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>version: </source>
+        <translation>versão: </translation>
+    </message>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translation>O marcador é sensível à pressão</translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation>Omissão</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Árabe</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Búlgaro</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Catalão</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Checo</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Dinamarquês</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Alemão</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Grego</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Inglês</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Inglês UK</translation>
     </message>
     <message>
-        <source>German</source>
-        <translation>Alemão</translation>
+        <source>Spanish</source>
+        <translation>Castelhano</translation>
     </message>
     <message>
         <source>French</source>
@@ -1779,79 +2221,89 @@ Quer ignorar estes erros, deste servidor?</translation>
         <source>Swiss French</source>
         <translation>Francês (Suiço)</translation>
     </message>
-</context>
-<context>
-    <name>UBPodcastController</name>
     <message>
-        <source>Sankore Cast</source>
-        <translation>Sankore Cast</translation>
+        <source>Italian</source>
+        <translation>Italiano</translation>
     </message>
     <message>
-        <source>Failed to start encoder ...</source>
-        <translation>Falha ao iniciar o codificador ...</translation>
+        <source>Hebrew</source>
+        <translation>Hebraico</translation>
     </message>
     <message>
-        <source>No Podcast encoder available ...</source>
-        <translation>Nenhum codificador de Podcast disponível ...</translation>
+        <source>Japanese</source>
+        <translation>Japonês</translation>
     </message>
     <message>
-        <source>Part %1</source>
-        <translation>Parte %1</translation>
+        <source>Korean</source>
+        <translation>Coreano</translation>
     </message>
     <message>
-        <source>on your desktop ...</source>
-        <translation>no seu ambiente de trabalho ...</translation>
+        <source>Malagasy</source>
+        <translation>Malgaxe</translation>
     </message>
     <message>
-        <source>in folder %1</source>
-        <translation>na pasta %1</translation>
+        <source>Norwegian</source>
+        <translation>Norueguês</translation>
     </message>
     <message>
-        <source>Podcast created %1</source>
-        <translation>Podcast criado %1</translation>
+        <source>Dutch</source>
+        <translation>Holandês</translation>
     </message>
     <message>
-        <source>Podcast recording error (%1)</source>
-        <translation>Erro de gravação do Podcast (%1)</translation>
+        <source>Polish</source>
+        <translation>Polaco</translation>
     </message>
     <message>
-        <source>Default Audio Input</source>
-        <translation>Entrada de áudio padrão</translation>
+        <source>Romansh</source>
+        <translation>Romanche</translation>
     </message>
     <message>
-        <source>No Audio Recording</source>
-        <translation>Sem gravação de áudio</translation>
+        <source>Romanian</source>
+        <translation>Romeno</translation>
     </message>
     <message>
-        <source>Small</source>
-        <translation>Pequeno</translation>
+        <source>Russian</source>
+        <translation>Russo</translation>
     </message>
     <message>
-        <source>Medium</source>
-        <translation>Médio</translation>
+        <source>Slovak</source>
+        <translation>Eslovaco</translation>
     </message>
     <message>
-        <source>Full</source>
-        <translation>Completo</translation>
+        <source>Swedish</source>
+        <translation>Sueco</translation>
     </message>
     <message>
-        <source>Publish to Intranet</source>
-        <translation>Publicar na Intranet</translation>
+        <source>Turkish</source>
+        <translation>Turco</translation>
     </message>
     <message>
-        <source>Publish to Youtube</source>
-        <translation>Publicar no Youtube</translation>
+        <source>Chinese</source>
+        <translation>Chinês</translation>
     </message>
-</context>
-<context>
-    <name>UBPreferencesController</name>
     <message>
-        <source>version: </source>
-        <translation>versão: </translation>
+        <source>Chinese Simplified</source>
+        <translation>Chinês Simplificado</translation>
     </message>
     <message>
-        <source>Marker is pressure sensitive</source>
-        <translation>O marcador é sensível à pressão</translation>
+        <source>Chinese Traditional</source>
+        <translation>Chinês Tradicional</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1894,6 +2346,17 @@ Quer ignorar estes erros, deste servidor?</translation>
         <source>My Movies</source>
         <translation>Os meus filmes</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Visivel na próxima vez</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2103,20 +2566,16 @@ Quer ignorar estes erros, deste servidor?</translation>
         <source>Cache</source>
         <translation>Cache</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation type="obsolete">Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Página completa</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <source>Embed </source>
+        <translation>Embutido </translation>
     </message>
 </context>
 <context>
@@ -2466,6 +2925,49 @@ Por favor, reinicie o aplicativo para aceder aos documentos atualizados.</transl
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Selecionar o conteúdo a capturar:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Nome da Aplicação</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Restrição e aviso. </translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Esta função foi desenvolvida para funcionar nas páginas web mais comuns.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Por favor respeite os direitos de autor para a criação de links ou a captura de conteúdos da web.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
@@ -2543,7 +3045,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Restore credentials on reboot</source>
-        <translation type="unfinished"></translation>
+        <translation>Restaurar as credenciais ao reiniciar</translation>
     </message>
 </context>
 <context>
@@ -2729,22 +3231,10 @@ p, li { white-space: pre-wrap; }
         <translation>Licenças</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>About</source>
         <translation>Sobre</translation>
     </message>
@@ -2798,11 +3288,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Senha:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translatorcomment>"Planète Sankoré ID"</translatorcomment>
-        <translation type="obsolete">Planète Sankoré ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Utilizador:</translation>
@@ -2816,698 +3301,62 @@ p, li { white-space: pre-wrap; }
         <translation>Open-Sankoré</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Créditos</translation>
     </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Planète Sankoré ID para exportar ficheiro</translation>
+    </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">As licenças estão em Inglês para respeitar a tradução oficial e legalmente aprovada.</span></p></td></tr></table></body></html></translation>
+        <source>Restore credentials on reboot  </source>
+        <translation>Restaurar credenciais ao reiniciar  </translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+        <source>Start up tips</source>
+        <translation>Dicas</translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    <message>
+        <source>Show start up tips</source>
+        <translation>Mostrar dicas ao iniciar</translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    <message>
+        <source>Language</source>
+        <translation>Língua</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Selecione a Língua</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>A nova Líingua irá ser carregada ao reiniciar</translation>
     </message>
     <message utf8="true">
-        <source>Planète Sankoré ID for exporting file</source>
-        <translation type="unfinished"></translation>
+        <source>Close Open-Sankoré</source>
+        <translation>Fechar Open-Sankoré</translation>
     </message>
     <message>
-        <source>Restore credentials on reboot  </source>
-        <translation type="unfinished"></translation>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Xpdf</source>
+        <translation>xpdf</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>QuaZIP</source>
+        <translation>Quazip</translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_ro.ts b/Sankore-3.1/resources/i18n/sankore_ro.ts
index 47e9ea0..dc1895a 100644
--- a/Sankore-3.1/resources/i18n/sankore_ro.ts
+++ b/Sankore-3.1/resources/i18n/sankore_ro.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Semn de carte</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>Configurare înregistrare podcast</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Blocare  flash</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Blocare conţinut flash</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Blocare web</translation>
     </message>
@@ -728,14 +721,6 @@
         <translation>Capturare fereastră</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Incorporare conţinut web</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Capturare conţinut web incorporabil</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>AfiÅŸare pe ecran</translation>
     </message>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation>Grupare</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Descărcare în</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">bibliotecă</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Descărcare în bibliotecă</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Descărcare în</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">pagina curentă</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Descărcare în pagina curentă</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Adăugare link către</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">bibliotecă</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Adăugare link către bibliotecă</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Adăugare link către</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">pagina curentă</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Adăugare link către pagina curentă</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Semn de carte</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -988,12 +1010,110 @@
         <translation>Formă:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Dimensiune:</translation>
+        <source>Alpha:</source>
+        <translation>Alfa:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>ÃŽnchidere</translation>
+        <source>Geometry:</source>
+        <translation>Geometrie:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Lățime:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Înălțime:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Menținere proporții</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Mod:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Previzualizare:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>ÃŽnchidere cache</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><plasare conținut></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Imaginile nu se acceptă</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Datele nu pot fi afișate</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Fișierul plasat nu este recunoscut ca fișier audio</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Redare fișier audio</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Adăugare link către pagină</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Adăugare link către o pagină Web</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Trageți și plasați fișierul audio din bibliotecă în această casetă</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Pagina următoare</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Pagina precedentă</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Titlu pagină</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Ultima pagină</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Număr pagină</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Inserați textul url aici</translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1178,6 @@
         <translation>Eliminare pagină</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Eliminare document</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Sunteţi siguri că doriţi să eliminaţi documentul %1?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Golire coÅŸ de gunoi</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Sunteţi siguri că doriţi să goliţi coşul de gunoi?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Golire coÅŸ de gunoi</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>CoÅŸ de gunoi golit</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Eliminare folder</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Sunteţi siguri că doriţi să eliminaţi folderul '%1' şi toate conţinuturile sale?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Nu s-a selectat niciun document!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Deschidere fiÅŸier suportat</translation>
     </message>
@@ -1160,6 +1244,14 @@
         <source>Untitled Documents</source>
         <translation>Documente fără titlu</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>Aceasta este o acțiune ireversibilă!</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1247,6 +1339,59 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Acceptare</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>ÃŽnlocuire</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Anulare</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Numele %1 este deja utilizat.
+Păstrând acest nume se va înlocui documentul.
+Dând un nou nume se va creea un nou document.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Documentele mele</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Modele</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>CoÅŸ de gunoi</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Documente fără titlu</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Copiere pagina %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 pagini copiate</numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1265,6 +1410,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Descărcare nereușită.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>serverul de la distanță a refuzat conexiunea (serverul nu acceptă cereri)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>serverul de la distanță a închis conexiunea prea devreme, înainte ca întreg răspunsul să fi fost primit și procesat</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>numele calculatorului gazdă de la distanță nu s-a găsit (nume de gazdă nevalid)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>conexiunea la serverul de la distanță a expirat</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>operațiunea a fost anulată prin cereri de anulare() sau de închidere() înainte de a fi terminată.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>legătura SSL/TSL nu a reușit și canalul codificat nu a putut fi stabilit. Semnalul sslErrors() ar fi trebuit să fi fie emis.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>conexiunea a fost întreruptă datorită întreruperii rețelei, totuși, sistemul a inițiat roaming-ul spre alt punct de acces. Cererea trebuie retrimisă și va fi procesată de îndată ce conexiunea se restabilește.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>conexiunea la serverul proxy a fost refuzată (serverul proxy nu acceptă cereri)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>serverul proxy a închis conexiunea prea devreme, înainte ca întreg răspunsul să fi fost primit și procesat</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>numele calculatorului gazdă proxy nu s-a găsit (nume de gazdă proxy nevalid)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>conexiunea la proxy a expirat sau proxy nu a răspuns la timp la cererea trimisă</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>proxy cere autentificarea pentru a onora cererea, dar nu acceptă orice credențiale oferite (dacă există)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>accesul la conținutul de la distanță a fost refuzat (similar cu eroarea HTTP 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>operațiunea solicitată pe conținutul de la distanță nu este permisă</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>conținutul de la distanță nu s-a găsit pe server (similar cu eroarea HTTP 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>serverul de la distanță cere autentificarea pentru a furniza conținutul, dar credențialele furnizate nu au fost acceptate (dacă există)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>cererea a trebuit să fie trimisă din nou, dar nu a reușit, de exemplu, din cauză că datele încărcate nu au putut fi citite a doua oară.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>API pentru acces la rețea nu poate onora cererea, deoarece protocolul nu este cunoscut</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>operațiunea solicitată este nevalidă pentru acest protocol</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>s-a detectat o eroare necunoscută legată de rețea</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>s-a detectat o eroare necunoscută legată de proxy</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>s-a detectat o eroare necunoscută legată de conținutul de la distanță</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>s-a detectat o întrerupere în protocol (eroare de analiză de sintaxă, răspunsuri nevalide sau neașteptate, etc.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1333,6 +1577,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Nu s-a reușit exportarea...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Exportare ca fiÅŸier UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Exportare document...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Exportare reuşită.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Exportare nereuşită.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Exportare în format UBX Sankore</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1419,6 +1690,10 @@
         <source>Object informations</source>
         <translation>Informaţii despre obiect</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation>Adăugare</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1501,6 +1776,14 @@
         <source>Trash</source>
         <translation>CoÅŸ de gunoi</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Semne de carte</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1534,6 +1817,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Vizibil pe ecran extins</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Adăugați o acțiune</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Eliminare link către audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Eliminare link către pagină</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Eliminare link către url web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1549,6 +1848,22 @@
         <source>Go to Content Source</source>
         <translation>Accesare sursă conţinut</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Adăugați o acțiune</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Eliminare link către audio</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Eliminare link către pagină</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Eliminare link către url web</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1569,13 +1884,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1636,6 +1944,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (set de documente) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1850,6 +2165,142 @@ Doriţi să ignoraţi aceste erori pentru acest host?</translation>
         <source>Marker is pressure sensitive</source>
         <translation>Markerul este sensibil la apăsare</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>Implicită</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Arabă</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bulgară</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Catalană</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Cehă</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Daneză</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Germană</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Greacă</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Engleză</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Engleză UK</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Spaniolă</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Franceză</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Franceză elvețiană</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Italiană</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Ebraică</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Japoneză</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Coreeană</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Malgașă</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Norvegiană</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Olandeză</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Poloneză</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Retoromană</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Română</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Rusă</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Slovacă</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Suedeză</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Turcă</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Chineză</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Chineză simplificată</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Chineză tradițională</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>Corsicană</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>Hindi</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1891,6 +2342,17 @@ Doriţi să ignoraţi aceste erori pentru acest host?</translation>
         <source>My Movies</source>
         <translation>Filmele mele</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Vizibil data viitoare</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2104,20 +2566,16 @@ Doriţi să ignoraţi aceste erori pentru acest host?</translation>
         <source>Cache</source>
         <translation>Cache</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation>Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Toată pagina</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <source>Embed </source>
+        <translation>Inserare</translation>
     </message>
 </context>
 <context>
@@ -2464,6 +2922,53 @@ Vă rugăm să reporniţi aplicaţia pentru a accesa documentele actualizate.</t
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Selectare conținut de captat:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Nume aplicaţie</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Restricții și clauză de declinare a răspunderii.</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Această funcție este proiectată pentru a funcționa cu majoritatea paginilor web comune.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Vă rugăm să respectați drepturile de autor pentru crearea linkurilor sau captarea de conținut de pe web.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>Descărcare în
+bibliotecă</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>Descărcare în
+pagina curentă</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>Adăugare link către
+bibliotecă</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>Adăugare link către
+pagina curentă</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2539,6 +3044,10 @@ p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Făcând clic pe'Încărcare,' certificaţi faptul că deţineţi toate drepturile asupra conţinutului sau că sunteţi autorizat de titular să faceţi public conţinutul pe YouTube şi că este conform în celelalte privinţe cu Termenii de utilizare pentru YouTube de pe</span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>Restabilire credențiale la reinițializare</translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2735,22 +3244,10 @@ p, li { white-space: pre-wrap; }
         <translation>Licenţe</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Reţea</translation>
     </message>
@@ -2794,10 +3291,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Parolă:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation>ID Planète Sankoré</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Utilizator:</translation>
@@ -2807,550 +3300,70 @@ p, li { white-space: pre-wrap; }
         <translation>Parolă:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Credite</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation></translation>
+        <source>Start up tips</source>
+        <translation>Recomandări pentru pornire</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Drept de autor (C) 1995-1998 Jean-loup Gailly și Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Acest software este furnizat 'ca atare', fără nicio garanție expresă sau implicită. Autorii nu vor fi ținuți responsabili, în niciun caz, pentru daunele rezultate din utilizarea acestui software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Este permis oricui să utilizeze acest, în orice scopuri, inclusiv aplicații comerciale și să îl modifice și redistribuie gratuit, sub rezerva următoarelor restricții:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. Originea acestui software nu trebuie denaturată; nu aveți voie să pretindeți că dumneavoastră ați scris software-ul original. Dacă folosiți acest software într-un produs, o declarație în documentația produsului ar fi apreciată, dar nu este obligatorie.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Versiunile modificate ale sursei trebuie precizate ca atare în mod clar și nu trebuie prezentate denaturat ca fiind software-ul original.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. Această înștiințare nu trebuie eliminată sau modificată din nicio distribuire a sursei.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+        <source>Show start up tips</source>
+        <translation>Afișare recomandări pentru pornire</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Limbă</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Selectați o limbă</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Noua limbă va fi încărcată la următoarea repornire</translation>
     </message>
     <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Închidere Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>ID Planète Sankoré pentru exportare fișier</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>Restabilire credențiale la reinițializare  </translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré este un software gratuit: puteți să-l redistribuiți și/sau să-l modificați, respectând termenii Licenței Publice Generale Lesser GNU așa cum a fost publicată de Free Software Foundation, în versiunea 2 sau în orice versiune mai recentă. Puteți găsi codul sursă al acestui software pe </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré se distribuie în speranța că va fi util, dar FĂRĂ NICIO GARANȚIE; chiar și fără garanția implicită de COMERCIALIZARE sau de ADAPTARE PENTRU UN SCOP PARTICULAR. A se vedea Licența Publică Generală GNU de mai jos, pentru mai multe detalii.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact: <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Licențele sunt în engleză, pentru a respecta traducerea aprobată oficială și legală.</span></p></td></tr></table></body></html></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_ru.ts b/Sankore-3.1/resources/i18n/sankore_ru.ts
index b3ac888..29ee5a9 100644
--- a/Sankore-3.1/resources/i18n/sankore_ru.ts
+++ b/Sankore-3.1/resources/i18n/sankore_ru.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Закладка</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>Конфигурировать запись подкаста</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Захват флэш</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Захват флэш-содержимого</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Захват веб</translation>
     </message>
@@ -728,14 +721,6 @@
         <translation>Сделать снимок окна</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Вставить веб-содержимое</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Захватить веб-содержимого с возможностью вставки</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>Показать на мониторе</translation>
     </message>
@@ -823,6 +808,44 @@
         <source>Group</source>
         <translation>Сгруппировать</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Загрузить в библиотеку</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Загрузить на текущую страницу</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Добавить ссылку в библиотеку</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Добавить ссылку на текущую страницу</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translatorcomment>Подсказка</translatorcomment>
+        <translation>Закладка</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -988,12 +1011,110 @@
         <translation>Форма:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Размеры:</translation>
+        <source>Alpha:</source>
+        <translation>Альфа:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Закрыть</translation>
+        <source>Geometry:</source>
+        <translation>Геометрия:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Ширина:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Высота:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Сохранить пропрорции</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Режим:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Предпросмотр:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Закрыть cache</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation>По клику</translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation>Постоянный</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><бросить содержимое></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Недопустимый формат картинок</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Невозможно отобразить данные</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Файл не распознан как аудио файл</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Проиграть аудио файл</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Добавить ссылку на страницу</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Добавить ссылку на веб страницу</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Переместите аудио файл из библиотеки в окно</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ок</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Следующая страница</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Предыдущая страница</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Титульная страница</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Последняя страница</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Номер страницы</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Вставьте текст ссылки сюда</translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1179,6 @@
         <translation>Удалить страницу</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Удалить документ</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Вы уверены, что хотите удалить документ '%1'?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Очистить корзину</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Вы уверены, что хотите очистить корзину?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Очистка корзины</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Корзина пуста</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Удалить папку</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Вы уверены, что хотите удалить папку '%1 и все ее содержимое?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Ничего не выбрано!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Открыть файл поддерживаемого формата</translation>
     </message>
@@ -1160,6 +1245,14 @@
         <source>Untitled Documents</source>
         <translation>Документы без Названия</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>Действие необратимо!</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation>Документы "модели" не редактируются. Скопируйте документ в "Мои документы" для того чтобы можно было с ними работать</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1247,6 +1340,59 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Принять</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Заменить</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Отмена</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Имя файла %1 уже используется.
+Сохранение этого имени заменит существующий документ.
+Создание нового имени создаст новый документ.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Мои документы</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Модели</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Корзина</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Документы без группы</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation>Копирование страницы %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation>
+            <numerusform>%1 страницы скопировано</numerusform>
+            <numerusform>%1 страниц скопировано</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1265,6 +1411,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Загрузка не завершена.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>Удаленный сервер сбросил соединение (сервер не принимает запросы)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>Удаленный сервер преждевременно закрыл соединение, до того как ответ сервера был получен полностью</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>Удаленное имя хоста не найдено (invalid hostname)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>Время соединения с удаленным сервером истекло</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>Операция была отменена вызовами abort() или close() до завершения.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>SSL/TSL соединение не установлено и шифрованный канал не может быть установлен. Сигнал sslErrors() должен быть сгенерирован.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>Соединение разорвано по причине недоступности сети, однако система проинициализировала связь с точкой доступа. Запрос должен быть передан снова и будет обработан когда сеть восстановится.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>Соединение с прокси сервером было сброшено (прокси сервер не принимает запросы)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>Возможно прокси сервер преждевременно закрыл соединение, до того как ответ был получен и обработан полностью</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>Имя хоста прокси не найдено (invalid proxy hostname)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>Таймаут соединения с прокси или прокси не отвечает вовремя на запросы</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>Прокси требует аутентификации для обработки запроса, но не принимает предложенные пакеты (если имеются)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>Доступ к удаленному содержимому запрещен (аналогично HTTP error 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>Запрошенная операция с удаленным содержимым не разрешена</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>Удаленное содержимое не найдено на сервере (аналогично HTTP error 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>Удаленный сервер требует аутентификации для обработки содержимого, но предоставленные данные не были приняты (если имелись)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>Запрос должен быть отправлен, но попытка провалилась, например по причине того, что данные не могут быть прочитаны дважды.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>Network Access API не принимает запрос: неизвестный протокол</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>Запрошенная операция недопустима для протокола</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>Обнаружена неизвестная ошибка сети</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>Обнаружена неизвестная ошибка прокси</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>Обнаружена неизвестная ошибка удаленных данных</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>Обнаружена поломка в протоколе (передача ошибки, недопустимые или неожидаемые ответы и т.д.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1333,6 +1578,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Ошибка экспорта...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Экспорт в UBX файл</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Экспорт документа...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Экспорт успешно завершен.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Ошибка экспорта.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Экспорт в Sankore UBX формат</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1419,6 +1691,10 @@
         <source>Object informations</source>
         <translation>Информация об объекте</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation>Добавить</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1501,6 +1777,14 @@
         <source>Trash</source>
         <translation>Корзина</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Закладки</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Интернет</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1534,6 +1818,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Видимый на втором экране</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Добавить действие</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Удаленная ссылка на страницу</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Удаленная ссылка на страницу</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Удаленная ссылка на веб ссылку</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1549,6 +1849,22 @@
         <source>Go to Content Source</source>
         <translation>Перейти к источнику содержимого</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Добавить действие</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Удаленная ссылка на аудио</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Удаленная ссылка на страницу</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Удаленная ссылка на веб страницу</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1569,13 +1885,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Веб</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1636,6 +1945,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (блок документов) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1850,6 +2166,142 @@ Do you want to ignore these errors for this host?</source>
         <source>Marker is pressure sensitive</source>
         <translation>Маркер чувствителен к нажиму</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>По умолчанию</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Arabic</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bulgarian</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Catalan</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Czech</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Danish</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>German</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Greek</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>English</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>English UK</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Spanish</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>French</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Swiss French</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Italian</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Hebrew</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Japanese</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Korean</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Malagasy</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Norwegian</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Dutch</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Polish</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Romansh</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Romanian</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Русский</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Slovak</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Swedish</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Turkish</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Chinese</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Chinese Simplified</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Chinese Traditional</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>Corsican</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>Hindi</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation>Portuguese</translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1891,6 +2343,17 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation>Мои видеофайлы</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Веб</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Видимый при следущей загрузке</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2104,20 +2567,16 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>Кэш</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation type="obsolete">Аристо</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Вся страница</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Веб</translation>
+        <source>Embed </source>
+        <translation>Встроенный</translation>
     </message>
 </context>
 <context>
@@ -2464,6 +2923,49 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Выберите содержимое для захвата:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Название приложения</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Ограничения и дисклеймер.</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Эта возможность реализована для работы с большинством веб страниц.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Соблюдайте авторские права при создании ссылок, коприованием содержимого из интернета.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>Загрузить в библиотеку</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>Загрузить на текущую страницу</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>Добавить ссылку в библиотеку</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>Добавить ссылку на текущую страницу</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2541,7 +3043,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Restore credentials on reboot</source>
-        <translation type="unfinished"></translation>
+        <translation>Восстановить привелегии после перезагрузки</translation>
     </message>
 </context>
 <context>
@@ -2739,22 +3241,10 @@ p, li { white-space: pre-wrap; }
         <translation>Лицензии</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Сеть</translation>
     </message>
@@ -2798,10 +3288,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Пароль:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="obsolete">Планета Sankoré ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Пользователь:</translation>
@@ -2811,543 +3297,63 @@ p, li { white-space: pre-wrap; }
         <translation>Пароль:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Содержание</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID for exporting file</source>
-        <translation type="unfinished"></translation>
+        <translation>Planète Sankoré ID для экспорта файла</translation>
     </message>
     <message>
         <source>Restore credentials on reboot  </source>
-        <translation type="unfinished"></translation>
+        <translation>Восстановить привелегии после перезагрузки</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Start up tips</source>
+        <translation>Загружать подстказки при старте</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Show start up tips</source>
+        <translation>Показать подсказки</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Язык</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Выберите язык</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Новый язык будет загружен после перезагрузки</translation>
     </message>
     <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Закрыть Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
-        <translation type="unfinished"></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_sk.ts b/Sankore-3.1/resources/i18n/sankore_sk.ts
index f7225e1..0e11bd5 100644
--- a/Sankore-3.1/resources/i18n/sankore_sk.ts
+++ b/Sankore-3.1/resources/i18n/sankore_sk.ts
@@ -106,7 +106,7 @@
     </message>
     <message>
         <source>Home</source>
-        <translation>Úvodná stránka</translation>
+        <translation>Domov</translation>
     </message>
     <message>
         <source>Left</source>
@@ -166,10 +166,6 @@
         <translation>Svetlá</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Vložiť obsah z internetu</translation>
-    </message>
-    <message>
         <source>Pages</source>
         <translation>Stránky</translation>
     </message>
@@ -378,10 +374,6 @@
         <translation>Nový priečinok</translation>
     </message>
     <message>
-        <source>Trap Flash Content</source>
-        <translation>Označiť obsah vo Flashi</translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation>Nahrať</translation>
     </message>
@@ -467,6 +459,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Záložka</translation>
     </message>
     <message>
@@ -574,10 +567,6 @@
         <translation>V zobrazenej časti obrazovky zobraziť hlavnú obrazovku</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Označiť Flash</translation>
-    </message>
-    <message>
         <source>Window Capture</source>
         <translation>Označiť okno</translation>
     </message>
@@ -602,10 +591,6 @@
         <translation>Zobraziť editor widgetov Open-Sankoré</translation>
     </message>
     <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Označiť obsah z internetu, ktorý sa dá vložiť</translation>
-    </message>
-    <message>
         <source>Write Text</source>
         <translation>Napísať text</translation>
     </message>
@@ -825,6 +810,43 @@
         <source>Group</source>
         <translation>Zoskupiť</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Stiahnúť do</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">knižnice</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Stiahnúť do knižnice</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Stiahnúť na</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">aktuálnu stránku</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Stiahnúť na aktuálnu stránku</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Pridať odkaz do</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">knižnice</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Pridať odkaz do knižnice</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Pridať odkaz na</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">aktuálnu stránku</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Pridať odkaz na aktuálnu stránku</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Záložka</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -978,14 +1000,6 @@
 <context>
     <name>UBCachePropertiesWidget</name>
     <message>
-        <source>Close</source>
-        <translation>Zatvoriť</translation>
-    </message>
-    <message>
-        <source>Size:</source>
-        <translation>Veľkosť:</translation>
-    </message>
-    <message>
         <source>Color:</source>
         <translation>Farba:</translation>
     </message>
@@ -997,6 +1011,112 @@
         <source>Cache Properties</source>
         <translation>Vlastnosti baterky</translation>
     </message>
+    <message>
+        <source>Alpha:</source>
+        <translation>Alfa:</translation>
+    </message>
+    <message>
+        <source>Geometry:</source>
+        <translation>Geometria:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Šírka:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Výška:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Zachovať pomer strán</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Režim:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Ukážka:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Zatvoriť cache</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><pustite obsah></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Obrázky nie sú akceptované</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Dáta sa nedajú zobraziť</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Skopírovaný súbor nebol rozoznaný ako zvukový súbor</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Prehrať zvukový súbor</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Pridať odkaz na stránku</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Pridať odkaz na webovú stránku</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Kliknite na zvukový súbor a preneste ho z knižnice do tohto poľa</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Ďalšia stránka</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Predchádzajúca stránka</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Titulná stránka</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Posledná stránka</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Číslo stránky</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Sem vložte text pre www adresu</translation>
+    </message>
 </context>
 <context>
     <name>UBDesktopPalette</name>
@@ -1029,29 +1149,17 @@
     <name>UBDocumentController</name>
     <message>
         <source>Empty</source>
-        <translation>Vyprázdniť</translation>
+        <translation>Prázdny</translation>
     </message>
     <message>
         <source>Trash</source>
         <translation>Kôš</translation>
     </message>
     <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Určite chcete vyprázdniť kôš?</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Určite chcete odstrániť priečinok "%1" a celý jeho obsah?</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Otvoriť podporovaný súbor</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Odstrániť dokument</translation>
-    </message>
-    <message>
         <source>All Images (%1)</source>
         <translation>Všetky obrázky (%1)</translation>
     </message>
@@ -1104,37 +1212,13 @@
         <translation>Súbor sa nepodarilo nahrať...</translation>
     </message>
     <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Určite chcete odstrániť dokument "%1"?</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Kôš bol vyprázdnený</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Vyprázdniť kôš</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Odstrániť priečinok</translation>
-    </message>
-    <message>
         <source>Remove Page</source>
         <translation>Odstrániť stránku</translation>
     </message>
     <message>
-        <source>No document selected!</source>
-        <translation>Nevybrali ste žiaden dokument!</translation>
-    </message>
-    <message>
         <source>Import all Images from Folder</source>
         <translation>Nahrať všetky obrázky z priečinka</translation>
     </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Vyprázdňuje sa kôš</translation>
-    </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
         <translation>
@@ -1163,6 +1247,14 @@
         <source>Untitled Documents</source>
         <translation>Dokumenty bez názvu</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1250,6 +1342,60 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Prijať</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Nahradiť</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Zrušiť</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Názov %1 sa už používa.
+Ak tento názov necháte, starý dokument bude nahradený.
+Ak zadaáte nový názov, vytvorí sa nový dokument.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Moje dokumenty</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Šablóny</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Kôš</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Dokumenty bez názvu</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Kopíruje sa stránka %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 skopírovaná stránka</numerusform>
+            <numerusform>%1 skopírované stránky</numerusform>
+            <numerusform>%1 skopírovaných stránok</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message numerus="yes">
         <source>%1 pages copied</source>
@@ -1269,6 +1415,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>SÅ¥ahovanie zlyhalo.</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>vzdialený server odmietol spojenie (server neprijíma žiadosti)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>vzdialený server ukončil spojenie predčasne, pred prijatím a spracovaním celej odpovede</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>vzdialený server sa nenašiel (neplatný názov servera)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>pripojenie k vzdialenému serveru vypršalo</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>Operácia bola zrušený vyvolaním funkcie abort() alebo close() pred jej ukončením.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>SSL/TLS handshake zlyhal a zaheslovaný kanál sa nepodarilo vytvoriť. Mal by vyslaný signál sslErrors().</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>pripojenie bolo prerušené kvôli odpojeniu zo siete, systém sa však začal pripájať na iný prístupový bod. Požiadavku treba znova odoslať a bude spracovaná, len čo sa spojenie znova obnoví.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>pripojenie k proxy serveru bolo zamietnuté (proxy server neprijíma žiadosti)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>proxy server ukončil spojenie predčasne, pred prijatím a spracovaním celej odpovede</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>proxy server sa nenašiel (neplatný názov proxy servera)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>pripojenie k proxy serveru vypršalo alebo proxy server nezareagoval včas na odoslanú požiadavku</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>proxy server vyžaduje overenie totožnosti na vybavenie požiadavky, ale neprijal žiadne odoslané údaje (ak ste nejaké poslali)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>prístup k vzdialenému obsahu bol zamietnutý (podobné ako chyba 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>operácia, ktorú chcete vykonať so vzdialeným obsahom, nie je povolená</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>vzdialený obsah sa nenašiel na serveri (podobné ako chyby 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>vzdialený server vyžaduje overenie totožnosti na poskytnutie obsahu, ale poskytnuté údaje (ak ste nejaké zadali) neprijal</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>požiadavku bolo treba poslať znova, ale to sa nepodarilo napríklad preto, lebo nahrávané údaje sa nedali druhýkrát prečítať.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>Aplikácia na prístup k sieti nemôže vybaviť požiadavku, lebo nepozná zadaný protokol</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>zadaná operácia je pre tento protokol neplatná</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>Bola zistená neznáma chyba súvisiaca so sieťou</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>Bola zistená neznáma chyba súvisiaca s proxy</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>Bola zistená neznáma chyba súvisiaca so vzdialeným obsahom</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>bola zistená porucha protokolu (analytická chyba, neznáme alebo nečakané odpovede a pod.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1337,6 +1582,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Export sa nepodaril...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Exportovať ako súbor UBX</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Exportuje sa dokument...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Export bol úspešný.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Export sa nepodaril.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Exportovať do formátu Sankore UBX</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1423,6 +1695,10 @@
         <source>Object informations</source>
         <translation>Informácie o objekte</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">Pridať</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1505,6 +1781,14 @@
         <source>Trash</source>
         <translation>Kôš</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Záložky</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1538,6 +1822,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Vidieť to na rozšírenej obrazovke</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Pridať akciu</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Odstrániť odkaz na zvuk</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Odstrániť odkaz na stránku</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Odstrániť odkaz na www adresu</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1553,15 +1853,31 @@
         <source>Visible on Extended Screen</source>
         <translation>Vidieť to na rozšírenej obrazovke</translation>
     </message>
-</context>
-<context>
-    <name>UBGraphicsTextItem</name>
     <message>
-        <source><Type Text Here></source>
-        <translation><Sem napíšte text></translation>
+        <source>Add an action</source>
+        <translation>Pridať akciu</translation>
     </message>
-</context>
-<context>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Odstrániť odkaz na zvuk</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Odstrániť odkaz na stránku</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Odstrániť odkaz na www stránku</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
+    <message>
+        <source><Type Text Here></source>
+        <translation><Sem napíšte text></translation>
+    </message>
+</context>
+<context>
     <name>UBGraphicsTextItemDelegate</name>
     <message>
         <source>Text Color</source>
@@ -1573,13 +1889,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1640,6 +1949,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (sada dokumentov) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1854,6 +2170,142 @@ Chcete ignorovať tieto chyby na tomto serveri?</translation>
         <source>Marker is pressure sensitive</source>
         <translation>Zvýrazňovač je citlivý na tlak</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>predvolený</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>arabčina</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>bulharčina</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>katalánčina</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>čeština</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>dánčina</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>nemčina</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>gréčtina</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>angličtina</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>angličtina - Spoj. kráľovstvo</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>španielčina</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>francúzština</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>švajčiarska francúzština</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>taliančina</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>hebrejčina</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>japončina</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>kórejčina</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>malgaština</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>nórčina</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>holandčina</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>poľština</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>retorománčina</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>rumunčina</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>ruština</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>slovenčina</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>švédčina</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>turečtina</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>čínština</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>zjednodušená čínština</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>tradičná čínština</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1895,6 +2347,17 @@ Chcete ignorovať tieto chyby na tomto serveri?</translation>
         <source>My Movies</source>
         <translation>Moje filmy</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Zobraziť aj nabudúce</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -1987,7 +2450,7 @@ Chcete ignorovať tieto chyby na tomto serveri?</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation>Indexovanie zdrojov</translation>
+        <translation>Popis zdroja</translation>
     </message>
     <message>
         <source>Keywords:</source>
@@ -2057,7 +2520,7 @@ Chcete ignorovať tieto chyby na tomto serveri?</translation>
     </message>
     <message>
         <source>Title page</source>
-        <translation>Titulné stránka</translation>
+        <translation>Titulná stránka</translation>
     </message>
 </context>
 <context>
@@ -2108,21 +2571,17 @@ Chcete ignorovať tieto chyby na tomto serveri?</translation>
         <source>Magnifier</source>
         <translation>Lupa</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation>Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Celá stránka</translation>
     </message>
+    <message>
+        <source>Embed </source>
+        <translation>Rám </translation>
+    </message>
 </context>
 <context>
     <name>UBUpdateDlg</name>
@@ -2218,7 +2677,7 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>OpenSankore</source>
-        <translation type="unfinished">OpenSankore</translation>
+        <translation>OpenSankore</translation>
     </message>
 </context>
 <context>
@@ -2229,11 +2688,11 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>People & Blogs</source>
-        <translation>Ľudia a blogy</translation>
+        <translation>Ľudia & blogy</translation>
     </message>
     <message>
         <source>Nonprofits & Activism</source>
-        <translation>Neziskovky a aktivisti</translation>
+        <translation>Neziskovky & aktivisti</translation>
     </message>
     <message>
         <source>Comedy</source>
@@ -2253,11 +2712,11 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>Science & Technology</source>
-        <translation>Veda a technika</translation>
+        <translation>Veda & technika</translation>
     </message>
     <message>
         <source>Howto & Style</source>
-        <translation>Návody a štýl</translation>
+        <translation>Návody & štýl</translation>
     </message>
     <message>
         <source>Education</source>
@@ -2269,19 +2728,19 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>Travel & Events</source>
-        <translation>Cestovanie a udalosti</translation>
+        <translation>Cestovanie & udalosti</translation>
     </message>
     <message>
         <source>News & Politics</source>
-        <translation>Správy a politika</translation>
+        <translation>Správy & politika</translation>
     </message>
     <message>
         <source>Pets & Animals</source>
-        <translation>Domáce a iné zvieratá</translation>
+        <translation>Domáce & divoké zvieratá</translation>
     </message>
     <message>
         <source>Autos & Vehicles</source>
-        <translation>Nákladné a osobné autá</translation>
+        <translation>Autá & nákladiaky</translation>
     </message>
 </context>
 <context>
@@ -2468,6 +2927,49 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Vyberte obsah, ktorý sa má skopírovať:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Názov aplikácie</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Obmedzenia.</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Táto funkcia je navrhnutá tak, aby fungovala na najbežnejších webových stránkach.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Prosím, rešpektujte autorské práva pre vyváranie odkazov a kopírovanie obsahu z internetu.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>PDF</source>
@@ -2543,6 +3045,10 @@ p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Kliknutím na "Upload" (Nahrať) potvrdzujete, že máte všetky práva k materiálu alebo že máte písomný súhlas vlastníka týchto práv na zverejnenie materiálu na sieti YouTube a že materiál je v súlade s podmienkami využívania služieb siete YouTube, ktorých aktuálne znenie sa nachádza na adrese  </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>Pri reštarte obnoviť údaje</translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2651,10 +3157,6 @@ p, li { white-space: pre-wrap; }
         <translation>Pero</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
@@ -2699,10 +3201,6 @@ p, li { white-space: pre-wrap; }
         <translation>Zvýrazňovač</translation>
     </message>
     <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Internet</source>
         <translation>Internet</translation>
     </message>
@@ -2711,10 +3209,6 @@ p, li { white-space: pre-wrap; }
         <translation>Je umiestnený na vrchu (odporúča sa pre tablety)</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>Virtual Keyboard</source>
         <translation>Virtuálna klávesnica</translation>
     </message>
@@ -2798,10 +3292,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Heslo:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation>ID na Planétu Sankoré</translation>
-    </message>
     <message>
         <source>User:</source>
         <translatorcomment>Použ. m.:</translatorcomment>
@@ -2812,985 +3302,62 @@ p, li { white-space: pre-wrap; }
         <translation>Heslo:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     KONIEC PODMIENOK</translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Poďakovanie</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Start up tips</source>
+        <translation>Tipy pri Å¡tarte</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly a Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Tento softvér je poskytovaný „tak, ako je“, teda bez akejkoľvek výslovnej alebo predpokladanej záruky. V žiadnom prípade jeho autori nenesú zodpovednosť za akékoľvek škody vyplývajúce z používania tohto softvéru.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Povolenie používať tento softvér sa udeľuje komukoľvek a na akýkoľvek účel, vrátane komerčných aplikácií, rovnako ako aj meniť ho a ďalej slobodne šíriť, okrem nasledujúcich obmedzení:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 1. Pôvod tohto softvéru nesmie byť skreslený; nesmiete tvrdiť, že ste naprogramovali originálny softvér. Ak tento softvér použijete v nejakom produkte, uznanie softvérui v dokumentácii k produktu by bolo vítané, avšak nie je nutné.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 2. Pozmenené zdrojové verzie sa musia jasne označiť ako pozmenené a nesmú sa vydávať za originálny softvér.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 3. Toto upozornenie sa nesmie odstrániť ani pozmeniť v žiadnej distribúcii zdroja.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+        <source>Show start up tips</source>
+        <translation>Zobraziť tipy pri štarte</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Jazyk</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Vyberte si jazyk</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Nový jazyk sa nahrá pri opätovnom spustení programu</translation>
+    </message>
+    <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Zatvoriť Open-Sankoré</translation>
     </message>
     <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>ID na Planète Sankoré na export súborov</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>Pri reštarte obnoviť údaje  </translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré verzia 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankore je voľne šírený softvér: môžete ho šíriť a/alebo modifikovať podľa podmienok spoločnosti Lesser GNU General Public License, vydávaných nadáciou Free Software Foundation, a to buď verziu 2 tejto licencie, alebo ktorúkoľvek vyššiu verziu. Na tejto stránke môžete nájsť zdrojový kód tohto softvéru</span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré sa rozširuje v nádeji, že bude užitočný, ale BEZ AKEJKOĽVEK ZÁRUKY; dokonca aj bez predpokladanej záruky PREDAJNOSTI alebo VHODNOSTI PRE URČITÝ ÚČEL. Viac podrobností nájdete v podmienkach spoločnosti Lesser GNU General Public License nižšie.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_sv.ts b/Sankore-3.1/resources/i18n/sankore_sv.ts
index c776481..d012557 100644
--- a/Sankore-3.1/resources/i18n/sankore_sv.ts
+++ b/Sankore-3.1/resources/i18n/sankore_sv.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Lägg till bokmärke</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>Anpassa inspelning av Podcast</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Lagra flash</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Lagra flash innehål</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Lagra web</translation>
     </message>
@@ -728,14 +721,6 @@
         <translation>Fånga ett fönster</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Inbäddat webinnehåll</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Fånga inbäddat webinnehåll</translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>Visa på skärm</translation>
     </message>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation>Grupp</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hämta till</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">bibliotek</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>Hämta till bibliotek</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hämta till</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">aktuell sida</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>Hämta till aktuell sida</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Lägg länk till</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">bibliotek</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>Lägg länk till bibliotek</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Lägg länk till</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">aktuell sida</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>Lägg länk till aktuell sida</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Lägg till bokmärke</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -989,12 +1011,110 @@
         <translation>Form:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Storlek:</translation>
+        <source>Alpha:</source>
+        <translation>Alfa:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Stäng</translation>
+        <source>Geometry:</source>
+        <translation>Geometri:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>Bredd:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Höjd:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>Behåll proportionerna</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Läge:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>Förhandsvisning:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>Stäng cache</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><släpp innehåll></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>Bilder accepteras inte</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>Kan inte visa data</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>Den släppta filen känns inte igen som en ljudfil</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>Spela en ljudfil</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>Lägg länk till sida</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>Lägg länk till websida</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>Dra och släpp ljudfilen från biblioteket i denna låda</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Nästa sida</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Föregående sida</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>Titelsida</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>Sista sidan</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>Sidnummer</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>Infoga url text här</translation>
     </message>
 </context>
 <context>
@@ -1059,42 +1179,6 @@
         <translation>Ta bort sida</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Ta bort dokument</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Är du säker på att du vill ta bort dokument '%1'?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Töm papperskorgen</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Är du säker på att du vill tömma papperskorgen?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Tömmer papperskorgen</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Papperskorgen tömd</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Tabort mapp</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Är du säker på att du vill ta bort mapp '%1' och all dess innehåll?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Inget dokument markerat!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Öppna filer som stödjes</translation>
     </message>
@@ -1145,8 +1229,8 @@
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
         <translation>
-            <numerusform>Är du säker på att du vill ta bort mapp %n sida/sidor från det makrerade dokumentet '%1'?</numerusform>
-            <numerusform></numerusform>
+            <numerusform>Är du säker på att du vill ta bort %n sida från det makrerade dokumentet '%1'?</numerusform>
+            <numerusform>Är du säker på att du vill ta bort %n sidor från det makrerade dokumentet '%1'?</numerusform>
         </translation>
     </message>
     <message>
@@ -1161,6 +1245,14 @@
         <source>Untitled Documents</source>
         <translation>Namnlösa dokument</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>Denna åtgärd är oåterkallelig!</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1248,6 +1340,59 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Acceptera</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Ersätt</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>Namnet %1 används redan.
+Om detta namn behålls kommer dokumentet att ersättas.
+Om ett nytt namn ges kommer ett nytt dokument att skapas.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>Mina dokument</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Modeller</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Papperskorg</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>Namnlösa dokument</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Kopierar sida %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 sida kopierad</numerusform>
+            <numerusform>%1 sidor kopierade</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1260,12 +1405,111 @@
     <message numerus="yes">
         <source>%1 pages copied</source>
         <translation>
+            <numerusform>%1 sida kopierad</numerusform>
             <numerusform>%1 sidor kopierade</numerusform>
-            <numerusform></numerusform>
         </translation>
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>Hämtning misslyckades</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>fjärrservern vägrade anslutningen (servern accepterar inte begäran)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>fjärrservern stängde anslutningen för tidigt, innan hela svaret tagits emot och behandlats</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>remote hostname hittades inte (ogiltigt hostname)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>anslutningen till fjärrservern avbröts</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>operationen avbröts på grund av uppmaningar att avbryta() eller stänga() innan det var klart.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>SSL / TLS handslaget misslyckades och den krypterade kanalen kunde inte fastställas. Signalen sslErrors() borde ha sänts.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>anslutningen bröts på grund av avstängning från nätverket, men systemet har initierat roaming till en annan åtkomstpunkt. Begäran ska omprövas och kommer att behandlas så snart anslutningen har återupprättats.</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>proxyservern vägrade anslutningen (proxyservern accepterar inte begäran)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>proxyservern stängde anslutningen för tidigt, innan hela svaret tagits emot och behandlats</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>proxy hostname hittades inte (ogiltigt proxy hostname)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>anslutningen till proxyservern avbröts eller proxyservern svarade inte tillräckligt snabbt på sänd begäran</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>proxyservern kräver autentisering för att hedra begäran men accepterade inte de referenser som erbjöds (om någon)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>åtkomst till remote innehållet nekades (liknar HTTP-fel 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>operationen som begärs på remote innehållet tillåts inte</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>remote innehållet hittades inte på servern (liknar HTTP-fel 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>fjärrservern kräver autentisering för att tilldela innehållet men accepterade inte de referenser som erbjöds (om någon)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>begäran behövde skickas igen, men detta misslyckades till exempel eftersom hämtad data inte kunde läsas en andra gång.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>Network Access API kan inte hedra begäran eftersom protokollet inte är känt</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>operationen som begärs tillåts inte för detta protokoll</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>ett okänt nätverksrelaterat fel har upptäckts</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>ett okänt proxyrelaterat fel har upptäckts</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>ett okänt fel relaterat till remote innehållet har upptäckts</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>ett protokollhaveri har upptäckts (tolkningsfel, ogiltiga eller oväntade svar, etc.)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1334,6 +1578,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>Export misslyckades...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>Exportera som UBX fil</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Exporterar dokument...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Export lyckades.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Export misslyckades.</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>Exportera till Sankore UBX Format</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1420,6 +1691,10 @@
         <source>Object informations</source>
         <translation>Objektinformation</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation>Lägg till</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1502,6 +1777,14 @@
         <source>Trash</source>
         <translation>Papperskorg</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Bokmärken</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Webb</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1535,6 +1818,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Synlig på utvidgad skärm</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Lägg till en åtgärd</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Ta bort länk till ljudfil</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Ta bort länk till sida</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Ta bort länk till webb url</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1550,6 +1849,22 @@
         <source>Go to Content Source</source>
         <translation>Gå till innehållskällan</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Lägg till en åtgärd</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>Ta bort länk till ljudfil</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>Ta bort länk till sida</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>Ta bort länk till webb url</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1570,13 +1885,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Nät</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1637,6 +1945,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (uppsättning dokument) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1851,6 +2166,142 @@ Vill du ignorera felen för den här värden?</translation>
         <source>Marker is pressure sensitive</source>
         <translation>Markören är tryckkänslig</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>Standardinställning</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>Arabiska</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bulgariska</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Katalanska</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Tjeckiska</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Danska</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Tyska</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>Grekiska</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>Engelska</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>Brittisk engelska</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>Spanska</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Franska</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Schweizisk franska</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>Italienska</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>Hebreiska</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>Japanska</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>Koreanska</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Madagaskiska</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>Norska</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Nederländska</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>Polska</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Rätoromanska</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Rumänska</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Ryska</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Slovakiska</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>Svenska</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>Turkiska</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>Kinesiska</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>Förenklad kinesiska</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>Traditionell kinesiska</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>Korsikanska</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>Hindi</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1892,6 +2343,17 @@ Vill du ignorera felen för den här värden?</translation>
         <source>My Movies</source>
         <translation>Mina filmer</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Webb</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>Synlig nästa gång</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2105,20 +2567,16 @@ Vill du ignorera felen för den här värden?</translation>
         <source>Cache</source>
         <translation>Cache</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation>Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>Hela sidan</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Nät</translation>
+        <source>Embed </source>
+        <translation>Inbädda</translation>
     </message>
 </context>
 <context>
@@ -2465,6 +2923,49 @@ Vänligen starta om programmet för att komma åt uppdaterade dokument.</transla
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>Välj innehåll att lagra</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Applikationens namn</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>Begränsning och ansvarsfriskrivning. </translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>Denna funktion är utvecklad för att fungera på de vanligaste webbsidor.</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>Vänligen respektera upphovsrätten vid skapande av länkar eller lagring av innehåll från webben.</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>Hämta till bibliotek</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>Hämta till aktuell sida</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>Lägg länk till bibliotek</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>Lägg länk till aktuell sida</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2540,6 +3041,10 @@ p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>Återställ referenser vid omstart</translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2736,22 +3241,10 @@ p, li { white-space: pre-wrap; }
         <translation>Licenser</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>ÖppnaSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Nätverk</translation>
     </message>
@@ -2795,10 +3288,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Lösenord:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation>Planet Sankoré ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Användare:</translation>
@@ -2808,535 +3297,70 @@ p, li { white-space: pre-wrap; }
         <translation>Lösenord:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Poäng</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Start up tips</source>
+        <translation>Starttips</translation>
+    </message>
+    <message>
+        <source>Show start up tips</source>
+        <translation>Visa starttips</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Språk</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>Välj språk</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>Det nya språket kommer att laddas vid nästa omstart</translation>
+    </message>
+    <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>Stäng Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Planète Sankoré ID för fil export</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>Återställ referenser vid omstart  </translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">Licenserna är på engelska för att respektera den officiella och juridiskt godkända översättningen.</span></p></td></tr></table></body></html></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_tr.ts b/Sankore-3.1/resources/i18n/sankore_tr.ts
index 13c8d1b..cea26d1 100644
--- a/Sankore-3.1/resources/i18n/sankore_tr.ts
+++ b/Sankore-3.1/resources/i18n/sankore_tr.ts
@@ -189,6 +189,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>Sık Kullanılan</translation>
     </message>
     <message>
@@ -708,14 +709,6 @@
         <translation>Ekran Kaydını Ayarla</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Flash Tuzağı</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>Flash İçeriğini Yakala</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>Webi Tuzağı</translation>
     </message>
@@ -736,14 +729,6 @@
         <translation>Bir Pencereyi Yakala</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>Web İçeriğini Göm</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>Gömülü Web İçeriğini Yakala</translation>
-    </message>
-    <message>
         <source>Show Main Screen on Display Screen</source>
         <translation>Görüntü Ekranında Ana Ekranı Göster</translation>
     </message>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation>Grup</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">Sık Kullanılan</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -988,12 +1010,110 @@
         <translation>Åžekil:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>Boyut:</translation>
+        <source>Alpha:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>Kapat</translation>
+        <source>Geometry:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation type="unfinished">Tamam</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation type="unfinished">Sonraki Sayfa</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation type="unfinished">Önceki Sayfa</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1178,6 @@
         <translation>Sayfayı Kaldır</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>Dökümanı Kaldır</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>%1 adlı dökümanı kaldırmak istediğinizden eminmisiniz?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>Çöpü Boşalt</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>Çöp kutusunu boşaltmak istediğinizden eminmisiniz?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>Çöp Kutusu boşaltılıyor</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>Çöp kutusu boşaltıldı</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>Klasörü Kaldır</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>'%1' adlı klasörü ve içindeki tüm dosyaları kaldırmak istediğinizden eminmisiniz?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>Seçili döküman yok!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>Desteklenen Dosyayı Aç</translation>
     </message>
@@ -1159,6 +1243,14 @@
         <source>Untitled Documents</source>
         <translation>Başlıksız Döküman</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1246,6 +1338,56 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation type="unfinished">Kabul Et</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Ä°ptal</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation type="unfinished">Çöp</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">Kopyalanan sayfa %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>%1 sayfa kopyalandı</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1264,6 +1406,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1332,18 +1573,45 @@
     </message>
 </context>
 <context>
-    <name>UBExportFullPDF</name>
+    <name>UBExportDocumentSetAdaptor</name>
     <message>
-        <source>Export as PDF File</source>
-        <translation>PDF Dosyası Olarak Dışa Aktar</translation>
+        <source>Failed to export...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation>Döküman dışa aktarılıyor...</translation>
+        <translation type="unfinished">Döküman dışa aktarılıyor...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Dışa aktarım tamamlandı.</translation>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBExportFullPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>PDF Dosyası Olarak Dışa Aktar</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Döküman dışa aktarılıyor...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Dışa aktarım tamamlandı.</translation>
     </message>
     <message>
         <source>Export to PDF</source>
@@ -1418,6 +1686,10 @@
         <source>Object informations</source>
         <translation>Nesne bilgisi</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">Ekle</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1500,6 +1772,14 @@
         <source>Trash</source>
         <translation>Çöp</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation type="unfinished">Sık Kullanılanlar</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation type="unfinished">Web</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1533,6 +1813,22 @@
         <source>Visible on Extended Screen</source>
         <translation>Uzatılmış Ekranda Görünsün</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation type="unfinished">Bir eylem ekle</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1548,6 +1844,22 @@
         <source>Go to Content Source</source>
         <translation>İçerik Kaynağına Git</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation type="unfinished">Bir eylem ekle</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1568,13 +1880,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1635,6 +1940,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1848,6 +2160,142 @@ Bu host için yukarıdaki hatalar yok sayılsın mı?</translation>
         <source>Marker is pressure sensitive</source>
         <translation>İşaretçi basınca duyarlıdır</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation type="unfinished">Almanca</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation type="unfinished">Ä°ngilizce</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation type="unfinished">Fıransızca</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation type="unfinished">İsveç Fıransızcası</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation type="unfinished">Rusça</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1889,6 +2337,17 @@ Bu host için yukarıdaki hatalar yok sayılsın mı?</translation>
         <source>My Movies</source>
         <translation>Filimlerim</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2102,20 +2561,16 @@ Bu host için yukarıdaki hatalar yok sayılsın mı?</translation>
         <source>Cache</source>
         <translation>Gizli Yer</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation type="obsolete">Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
-        <translation>Tüm sayfa</translation>
+        <translation type="unfinished">Tüm sayfa</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <source>Embed </source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -2462,6 +2917,49 @@ Güncellenen dökümanlara erişmek için uygulamayı yeniden başlatın.</trans
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation type="unfinished">Uygulama adı</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2737,22 +3235,10 @@ p, li { white-space: pre-wrap; }
         <translation>Lisanslar</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSI</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>Network</translation>
     </message>
@@ -2796,10 +3282,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>Åžifre:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="obsolete">Sankoré Gezegeni ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>Kullanıcı Adı:</translation>
@@ -2809,1134 +3291,62 @@ p, li { white-space: pre-wrap; }
         <translation>Åžifre:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS</translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>Künye</translation>
     </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></translation>
+        <source>Restore credentials on reboot  </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+        <source>Start up tips</source>
+        <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    <message>
+        <source>Show start up tips</source>
+        <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    <message>
+        <source>Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
-        <source>Planète Sankoré ID for exporting file</source>
+        <source>Close Open-Sankoré</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Restore credentials on reboot  </source>
+        <source>OpenSSL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <source>Xpdf</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <source>QuaZIP</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_zh.ts b/Sankore-3.1/resources/i18n/sankore_zh.ts
index 3159e1a..d451d40 100644
--- a/Sankore-3.1/resources/i18n/sankore_zh.ts
+++ b/Sankore-3.1/resources/i18n/sankore_zh.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>书签</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>播客录制设置</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>截取动画</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>截取动画内容</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>截取网页</translation>
     </message>
@@ -728,14 +721,6 @@
         <translation>窗口截图</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>嵌入网页内容 </translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>截取可嵌入的网页内容 </translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>在屏幕上显示</translation>
     </message>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation>组合</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">书签</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -988,12 +1010,110 @@
         <translation>形状:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>大小:</translation>
+        <source>Alpha:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>关闭</translation>
+        <source>Geometry:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation type="unfinished">确定</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation type="unfinished">下一页</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation type="unfinished">上一页</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1178,6 @@
         <translation>删除页面</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>删除文档</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>确定要删除文档“%1”?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>清空回收站</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>确定要清空回收站?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>正在清空回收站</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>已清空回收站</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>删除文件夹</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>确定要删除文件夹“%1”及其所有内容?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>未选中任何文档!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>打开支持的文件</translation>
     </message>
@@ -1159,6 +1243,14 @@
         <source>Untitled Documents</source>
         <translation>未命名文档</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1246,6 +1338,56 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation type="unfinished">接受</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">取消</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation type="unfinished">回收站</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">正在复制页面 %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>已复制页面%1</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1263,6 +1405,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1331,6 +1572,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation type="unfinished">文档导出中……</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1417,6 +1685,10 @@
         <source>Object informations</source>
         <translation>素材信息</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">添加</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1499,6 +1771,14 @@
         <source>Trash</source>
         <translation>回收站</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation type="unfinished">书签</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation type="unfinished">网页</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1532,6 +1812,22 @@
         <source>Visible on Extended Screen</source>
         <translation>宽屏上可见</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation type="unfinished">添加指令</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1547,6 +1843,22 @@
         <source>Go to Content Source</source>
         <translation>访问内容来源</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation type="unfinished">添加指令</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1567,13 +1879,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>网页</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1634,6 +1939,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1751,102 +2063,238 @@ Do you want to ignore these errors for this host?</source>
         <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
         <translation>Sankore无法进入文档库“%1”。为避免数据出错,应用程序须立即关闭,最近所做的修改也可能丢失。</translation>
     </message>
-</context>
-<context>
-    <name>UBPlatformUtils</name>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation>英语</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>俄语</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>德语</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>法语</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>瑞士法语</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation>编码器启动失败……</translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation>没有可用的播客编码器……</translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation>部分%1</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation>在桌面上……</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation>在文件夹%1中</translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation>已创建播客%1</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation>播客录制错误(%1)</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation>默认音频输入</translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation>无音频录制</translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translation>小</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>中</translation>
+    </message>
+    <message>
+        <source>Full</source>
+        <translation>大</translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translation>发布到内部网</translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translation>发布到Youtube</translation>
+    </message>
+    <message>
+        <source>Sankore Cast</source>
+        <translation>Sankore视听文件</translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>version: </source>
+        <translation>版本:</translation>
+    </message>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translation>使用压感记号笔</translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation type="unfinished">德语</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation type="unfinished">英语</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation type="unfinished">法语</translation>
+    </message>
     <message>
-        <source>English</source>
-        <translation>英语</translation>
+        <source>Swiss French</source>
+        <translation type="unfinished">瑞士法语</translation>
     </message>
     <message>
-        <source>Russian</source>
-        <translation>俄语</translation>
+        <source>Italian</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>German</source>
-        <translation>德语</translation>
+        <source>Hebrew</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>French</source>
-        <translation>法语</translation>
+        <source>Japanese</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Swiss French</source>
-        <translation>瑞士法语</translation>
+        <source>Korean</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBPodcastController</name>
     <message>
-        <source>Failed to start encoder ...</source>
-        <translation>编码器启动失败……</translation>
+        <source>Malagasy</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No Podcast encoder available ...</source>
-        <translation>没有可用的播客编码器……</translation>
+        <source>Norwegian</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Part %1</source>
-        <translation>部分%1</translation>
+        <source>Dutch</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>on your desktop ...</source>
-        <translation>在桌面上……</translation>
+        <source>Polish</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>in folder %1</source>
-        <translation>在文件夹%1中</translation>
+        <source>Romansh</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Podcast created %1</source>
-        <translation>已创建播客%1</translation>
+        <source>Romanian</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Podcast recording error (%1)</source>
-        <translation>播客录制错误(%1)</translation>
+        <source>Russian</source>
+        <translation type="unfinished">俄语</translation>
     </message>
     <message>
-        <source>Default Audio Input</source>
-        <translation>默认音频输入</translation>
+        <source>Slovak</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>No Audio Recording</source>
-        <translation>无音频录制</translation>
+        <source>Swedish</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Small</source>
-        <translation>小</translation>
+        <source>Turkish</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Medium</source>
-        <translation>中</translation>
+        <source>Chinese</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Full</source>
-        <translation>大</translation>
+        <source>Chinese Simplified</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Publish to Intranet</source>
-        <translation>发布到内部网</translation>
+        <source>Chinese Traditional</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Publish to Youtube</source>
-        <translation>发布到Youtube</translation>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Sankore Cast</source>
-        <translation>Sankore视听文件</translation>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBPreferencesController</name>
     <message>
-        <source>version: </source>
-        <translation>版本:</translation>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Marker is pressure sensitive</source>
-        <translation>使用压感记号笔</translation>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1889,6 +2337,17 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation>我的视频</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2102,20 +2561,16 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>高级缓存</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation>Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
-        <translation>整个页面</translation>
+        <translation type="unfinished">整个页面</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>网页</translation>
+        <source>Embed </source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -2462,6 +2917,49 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation type="unfinished">应用程序名</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2537,6 +3035,10 @@ p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">点击“上传”表示您对上传内容拥有全部版权或得到版权所有人将上传内容公开发表在YouTube上的授权,否则此举违反YouTube服务条款 </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2733,22 +3235,10 @@ p, li { white-space: pre-wrap; }
         <translation>证书</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSL</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>网络连接</translation>
     </message>
@@ -2792,10 +3282,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>密码:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation>Planète Sankoré ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>用户:</translation>
@@ -2805,550 +3291,62 @@ p, li { white-space: pre-wrap; }
         <translation>密码:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
+        <source>Credits</source>
+        <translation>版权</translation>
+    </message>
+    <message>
+        <source>Start up tips</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Credits</source>
-        <translation>版权</translation>
+        <source>Show start up tips</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <source>Language</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly及 Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 本软件“按原样”提供,不附带任何明示的或暗含的担保。无论在何种情况下,软件作者对于由于使用本软件所带来的任何损失概不负责。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  任何人都可将本软件用于任何目的(包括商业应用),并随意对软件进行更改或重新   发布,但是受以下条件的限制:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. 不得歪曲本软件的出处;您不得声称原始软件是自己编写的。如果您在某产品中使用了本软件,希望您可以在产品文档中提及,但并非必须。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. 同样,必须标明经过更改的源代码的版本,不得声称其为原创软件。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. 不得从任何源代码发布中将此说明去除或进行修改。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+        <source>Select a language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré 1.4版,Copyright (C) 2010-2012促进非洲数码教育公共利益共同体(Groupement d'Intérêt Public pour l'Education Numérique en Afrique,简称GIP ENA)<br /><br />Open-Sankoré为自由软件,您可根据自由软件基金会(Free Software Foundation)发表的第二版或最新版《GNU 通用公共授权》(Lesser GNU general Public Licence,简称GNU LGPL)条款规定,自由传播及/或修改本软件。<br />您可在该网站查询源代码或将源代码上载到该网站:</span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré的发行宗旨在于希望该软件能发挥功能,但完全无法(明确或间接)保证其可用于商业用途或满足特殊需求。<br />请查询使用许可页面中的《GNU 通用公共授权》或查询网站 </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">。<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">联系方式 : <br />促进非洲数码教育公共利益共同体<br />非洲数码教育部位综合代表团<br />地址:20 Avenue Ségur Paris 75007<br />电话 : 01 43 17 68 08<br />电邮: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html>
-</translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_zh_CN.ts b/Sankore-3.1/resources/i18n/sankore_zh_CN.ts
index 3159e1a..5619587 100644
--- a/Sankore-3.1/resources/i18n/sankore_zh_CN.ts
+++ b/Sankore-3.1/resources/i18n/sankore_zh_CN.ts
@@ -237,6 +237,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>书签</translation>
     </message>
     <message>
@@ -700,14 +701,6 @@
         <translation>播客录制设置</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>截取动画</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>截取动画内容</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>截取网页</translation>
     </message>
@@ -728,14 +721,6 @@
         <translation>窗口截图</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>嵌入网页内容 </translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>截取可嵌入的网页内容 </translation>
-    </message>
-    <message>
         <source>Show on Display</source>
         <translation>在屏幕上显示</translation>
     </message>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation>组合</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">下载到</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">图书馆</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>下载至图书馆</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">下载至</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">最近打开页面</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>下载至最近打开页面</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">将链接添加至</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">图书馆</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>将链接添加至图书馆</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">将链接添加至</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">最近打开页面</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>将链接添加至最近打开页面</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">书签</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -988,12 +1010,110 @@
         <translation>形状:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>大小:</translation>
+        <source>Alpha:</source>
+        <translation>Alpha:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>关闭</translation>
+        <source>Geometry:</source>
+        <translation>几何:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>宽:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>高:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>保持该比例</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>模式:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>预览:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>关闭高级缓存</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><drop content></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>图片无法接受</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>无法显示数据</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>添加文件无法辨识为音频文件</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>播放音频文件</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>将链接添加至页面</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>将链接添加至网页</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>将这份音频文件从图书馆拖入盒中</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>确定</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>下一页</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>上一页</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>标题页面</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>最后一页</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>页码</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>在此插入url文本......</translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1178,6 @@
         <translation>删除页面</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>删除文档</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>确定要删除文档“%1”?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>清空回收站</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>确定要清空回收站?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>正在清空回收站</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>已清空回收站</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>删除文件夹</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>确定要删除文件夹“%1”及其所有内容?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>未选中任何文档!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>打开支持的文件</translation>
     </message>
@@ -1159,6 +1243,14 @@
         <source>Untitled Documents</source>
         <translation>未命名文档</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation>此举将无法复原!</translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1246,6 +1338,58 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>接受</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>替换</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation>文件名 %1 已被使用。
+使用该名称会替换文档。
+使用新名称可创建新文档。</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>我的文档</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>模板</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>回收站</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>未命名文档</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">正在复制页面 %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>已复制页面%1</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1263,6 +1407,105 @@
     </message>
 </context>
 <context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>下载失败。</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>连接到远程服务器失败(服务器不接受请求)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>远程服务器在接受完整回复并执行回复前提早断开连接</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>远程服务器名称未找到(服务器名称无效)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>远程服务器连接超时</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>在通过呼叫进行退出() 或关闭()前,该操作已取消。</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>SSL/TLS握手协议失败,无法建立加密频道。sslErrors()信号应已发出。</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>连接因网络断开而中断,但系统已漫游至另一个接入点。须重新提交请求,网络连接恢复后,将尽快处理。</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>连接到代理服务器失败(代理服务器不接受请求)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>代理服务器在接受完整回复并执行回复前提早断开连接</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>代理服务器名称未找到(服务器名称无效)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>连接到代理服务器超时或发送请求时代理服务器不响应</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>代理服务器要求验证以通过请求,但不接受任何证书(如果有的话)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>访问远程服务器被拒绝(类似HTTP错误401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>无权对远程内容进行该项操作</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>服务器上未找到远程内容(类似HTTP错误401)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>远程服务器要求验证以证实请求,但不接受任何证书(如果有的话)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>须再次发送请求,但失败,因上传数据无法被再次读取。</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>因为未知协议,网络访问API无法通过请求</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>操作请求对此项协议无效</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>发现与网络相关的未知错误</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>发现与代理服务器相关的未知错误</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>发现与远程内容相关的未知错误</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>发现协议故障(解析错误、无效或未知反应等等)</translation>
+    </message>
+</context>
+<context>
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
@@ -1331,6 +1574,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>导出失败......</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>以UBX文件格式导出</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>文档导出中……</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>导出成功。</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>导出失败。</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>以Sankore UBX文件格式导出</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1417,6 +1687,10 @@
         <source>Object informations</source>
         <translation>素材信息</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation>添加</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1499,6 +1773,14 @@
         <source>Trash</source>
         <translation>回收站</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>书签</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>网页</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1532,6 +1814,22 @@
         <source>Visible on Extended Screen</source>
         <translation>宽屏上可见</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>添加指令</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>删除音频链接</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>删除页面链接</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>删除网站 url链接</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1547,6 +1845,22 @@
         <source>Go to Content Source</source>
         <translation>访问内容来源</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>添加指令</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>删除音频链接</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>删除页面链接</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>删除网站 url链接</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1567,13 +1881,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>网页</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1634,6 +1941,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (设置文件) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1848,6 +2162,142 @@ Do you want to ignore these errors for this host?</source>
         <source>Marker is pressure sensitive</source>
         <translation>使用压感记号笔</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>默认</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>阿拉伯语</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>保加利亚语</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>加泰罗尼亚语</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>捷克语</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>丹麦语</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>德语</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>希腊语</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>英语</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>英国英语</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>西班牙语</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>法语</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>瑞士法语</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>意大利语</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>希伯来语</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>日语</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>韩语</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>马达加斯加语</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>挪威语</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>荷兰语</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>波兰语</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>罗曼什语</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>罗马尼亚语</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>俄语</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>斯洛伐克语</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>瑞典语</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>土耳其语</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>汉语</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>简体中文</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>繁体中文</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation>科西嘉语</translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation>印度语</translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1889,6 +2339,17 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation>我的视频</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/网站</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>下一次可见</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2102,20 +2563,16 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>高级缓存</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation>Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>整个页面</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>网页</translation>
+        <source>Embed </source>
+        <translation>嵌入</translation>
     </message>
 </context>
 <context>
@@ -2462,6 +2919,53 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>选择抓取内容:</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>应用程序名</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>使用限制与免责声明。</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>这项特性可适用最常见网页。</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>创建链接或从网站抓取内容时请遵守版权。</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation>下载至
+图书馆</translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation>下载至
+最近打开页面</translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation>将链接添加至
+图书馆</translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation>将链接添加至
+最近打开页面</translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2537,6 +3041,10 @@ p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">点击“上传”表示您对上传内容拥有全部版权或得到版权所有人将上传内容公开发表在YouTube上的授权,否则此举违反YouTube服务条款 </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>重启后恢复证书</translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2733,22 +3241,10 @@ p, li { white-space: pre-wrap; }
         <translation>证书</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSL</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>网络连接</translation>
     </message>
@@ -2792,10 +3288,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation>密码:</translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation>Planète Sankoré ID</translation>
-    </message>
     <message>
         <source>User:</source>
         <translation>用户:</translation>
@@ -2805,551 +3297,70 @@ p, li { white-space: pre-wrap; }
         <translation>密码:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>版权</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Start up tips</source>
+        <translation>使用指南</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly及 Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 本软件“按原样”提供,不附带任何明示的或暗含的担保。无论在何种情况下,软件作者对于由于使用本软件所带来的任何损失概不负责。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  任何人都可将本软件用于任何目的(包括商业应用),并随意对软件进行更改或重新   发布,但是受以下条件的限制:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. 不得歪曲本软件的出处;您不得声称原始软件是自己编写的。如果您在某产品中使用了本软件,希望您可以在产品文档中提及,但并非必须。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. 同样,必须标明经过更改的源代码的版本,不得声称其为原创软件。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. 不得从任何源代码发布中将此说明去除或进行修改。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+        <source>Show start up tips</source>
+        <translation>显示使用指南</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>语言</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>选择一种语言</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>重新启动后导入新语言生效</translation>
+    </message>
+    <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>关闭Open-Sankoré</translation>
     </message>
     <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>输入Planète Sankoré ID导出文件</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>重启后恢复证书......</translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation></translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré 1.4版,Copyright (C) 2010-2012促进非洲数码教育公共利益共同体(Groupement d'Intérêt Public pour l'Education Numérique en Afrique,简称GIP ENA)<br /><br />Open-Sankoré为自由软件,您可根据自由软件基金会(Free Software Foundation)发表的第二版或最新版《GNU 通用公共授权》(Lesser GNU general Public Licence,简称GNU LGPL)条款规定,自由传播及/或修改本软件。<br />您可在该网站查询源代码或将源代码上载到该网站:</span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré的发行宗旨在于希望该软件能发挥功能,但完全无法(明确或间接)保证其可用于商业用途或满足特殊需求。<br />请查询使用许可页面中的《GNU 通用公共授权》或查询网站 </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">。<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">联系方式 : <br />促进非洲数码教育公共利益共同体<br />非洲数码教育部位综合代表团<br />地址:20 Avenue Ségur Paris 75007<br />电话 : 01 43 17 68 08<br />电邮: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html>
-</translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">考虑到正式法定版翻译,许可证用英语撰写。</span></p></td></tr></table></body></html></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_zh_TW.ts b/Sankore-3.1/resources/i18n/sankore_zh_TW.ts
index 069e799..77578c3 100644
--- a/Sankore-3.1/resources/i18n/sankore_zh_TW.ts
+++ b/Sankore-3.1/resources/i18n/sankore_zh_TW.ts
@@ -39,7 +39,7 @@
     </message>
     <message>
         <source>Stop</source>
-        <translation>停止</translation>
+        <translation>結束</translation>
     </message>
     <message>
         <source>Open</source>
@@ -392,14 +392,6 @@
         <translation>擷取視窗</translation>
     </message>
     <message>
-        <source>Embed Web Content</source>
-        <translation>嵌入網頁內容</translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation>擷取可嵌入的網頁內容</translation>
-    </message>
-    <message>
         <source>Show Main Screen on Display Screen</source>
         <translation>在顯示器上顯示主螢幕</translation>
     </message>
@@ -441,7 +433,7 @@
     </message>
     <message>
         <source>Quit</source>
-        <translation>停止</translation>
+        <translation>結束</translation>
     </message>
     <message>
         <source>Eraser</source>
@@ -481,6 +473,7 @@
     </message>
     <message>
         <source>Bookmark</source>
+        <extracomment>tooltip</extracomment>
         <translation>書籤</translation>
     </message>
     <message>
@@ -688,14 +681,6 @@
         <translation>Podcast錄製設定</translation>
     </message>
     <message>
-        <source>Flash Trap</source>
-        <translation>Flash動畫擷取</translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation>擷取Flash動畫內容</translation>
-    </message>
-    <message>
         <source>Web Trap</source>
         <translation>網頁擷取</translation>
     </message>
@@ -767,27 +752,27 @@
         <source>Stop Loading</source>
         <translation>停止載入</translation>
     </message>
-    <message>
+    <message utf8="true">
         <source>Open-Sankoré</source>
         <translation>Open-Sankoré</translation>
     </message>
-    <message>
+    <message utf8="true">
         <source>Quit Open-Sankoré</source>
         <translation>退出Open-Sankoré</translation>
     </message>
-    <message>
+    <message utf8="true">
         <source>Open-Sankoré Editor</source>
         <translation>Open-Sankoré編輯器</translation>
     </message>
-    <message>
+    <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
         <translation>顯示Open-Sankoré小工具編輯器</translation>
     </message>
-    <message>
+    <message utf8="true">
         <source>Hide Open-Sankoré</source>
         <translation>隱藏Open-Sankoré</translation>
     </message>
-    <message>
+    <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
         <translation>隱藏Open-Sankoré應用程式</translation>
     </message>
@@ -823,6 +808,43 @@
         <source>Group</source>
         <translation>群組</translation>
     </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to library</source>
+        <translation>下載至圖書館</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Download to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></translation>
+    </message>
+    <message>
+        <source>Download to current page</source>
+        <translation>下載至目前頁面</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to library</source>
+        <translation>新增連結至圖書館</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"><p align="center" style=" margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Add link to</p><p align="center" style=" margin-top:2px; margin-bottom12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">current page</p></body></html></translation>
+    </message>
+    <message>
+        <source>Add link to current page</source>
+        <translation>新增連結至目前頁面</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <comment>tooltip</comment>
+        <translation type="unfinished">書籤</translation>
+    </message>
 </context>
 <context>
     <name>PasswordDialog</name>
@@ -988,12 +1010,110 @@
         <translation>形狀:</translation>
     </message>
     <message>
-        <source>Size:</source>
-        <translation>大小:</translation>
+        <source>Alpha:</source>
+        <translation>Alpha:</translation>
     </message>
     <message>
-        <source>Close</source>
-        <translation>關閉</translation>
+        <source>Geometry:</source>
+        <translation>形狀:</translation>
+    </message>
+    <message>
+        <source>Width: </source>
+        <translation>寬:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>高:</translation>
+    </message>
+    <message>
+        <source>Keep proportions</source>
+        <translation>保持等比例</translation>
+    </message>
+    <message>
+        <source>Mode:</source>
+        <translation>Mode:</translation>
+    </message>
+    <message>
+        <source>Preview:</source>
+        <translation>預覽:</translation>
+    </message>
+    <message>
+        <source>Close cache</source>
+        <translation>關閉 cache</translation>
+    </message>
+    <message>
+        <source>On Click</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkLabel</name>
+    <message>
+        <source><drop content></source>
+        <translation><drop content></translation>
+    </message>
+    <message>
+        <source>Images are not accepted</source>
+        <translation>圖像不被辨識接受</translation>
+    </message>
+    <message>
+        <source>Cannot display data</source>
+        <translation>資料無法顯示</translation>
+    </message>
+    <message>
+        <source>Dropped file isn't reconized to be an audio file</source>
+        <translation>檔案不被辨識為音訊檔</translation>
+    </message>
+</context>
+<context>
+    <name>UBCreateLinkPalette</name>
+    <message>
+        <source>Play an audio file</source>
+        <translation>播放音訊檔</translation>
+    </message>
+    <message>
+        <source>Add Link to Page</source>
+        <translation>新增頁面連結</translation>
+    </message>
+    <message>
+        <source>Add Link to a Web page</source>
+        <translation>新增網頁連結</translation>
+    </message>
+    <message>
+        <source>Drag and drop the audio file from the library in this box</source>
+        <translation>從圖書館拖曳音訊檔</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>下一頁</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>上一頁</translation>
+    </message>
+    <message>
+        <source>Title Page</source>
+        <translation>標題頁</translation>
+    </message>
+    <message>
+        <source>Last Page</source>
+        <translation>前一頁</translation>
+    </message>
+    <message>
+        <source>Page Number</source>
+        <translation>頁面編號</translation>
+    </message>
+    <message>
+        <source>Insert url text here</source>
+        <translation>此處插入url</translation>
     </message>
 </context>
 <context>
@@ -1058,42 +1178,6 @@
         <translation>移除頁面</translation>
     </message>
     <message>
-        <source>Remove Document</source>
-        <translation>移除文件</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>確定要移除文件 '%1'?</translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation>清空回收桶</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation>確定要清空回收桶?</translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation>回收桶清空中</translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation>回收桶已清空</translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation>移除檔案夾</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>確定要移除檔案夾 '%1' 及其所有內容?</translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation>未選擇任何文件!</translation>
-    </message>
-    <message>
         <source>Open Supported File</source>
         <translation>開啟支援的檔案</translation>
     </message>
@@ -1141,9 +1225,11 @@
         <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
         <translation>文件 '%1' 係由新版的Sankore (%2)所製作。若仍要開啟,可能會損失部份內容。確定要進行嗎?</translation>
     </message>
-    <message>
+    <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation>確定要從所選文件 '%1' 移除 %n 個頁面?</translation>
+        <translation>
+            <numerusform>確定要從所選文件 '%1' 移除 %n 頁?</numerusform>
+        </translation>
     </message>
     <message>
         <source>Title page</source>
@@ -1157,6 +1243,14 @@
         <source>Untitled Documents</source>
         <translation>未命名文件</translation>
     </message>
+    <message>
+        <source>This is an irreversible action!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The model documents are not editable. Copy it to "My documents" to be able to work with</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1244,6 +1338,58 @@
     </message>
 </context>
 <context>
+    <name>UBDocumentReplaceDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>接受</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>置換</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <source>The name %1 is allready used.
+Keeping this name will replace the document.
+Providing a new name will create a new document.</source>
+        <translation> %1 名稱已被使用。
+使用本名稱,文件會被置換。
+使用新名稱,則會產生新文件。</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeModel</name>
+    <message>
+        <source>My documents</source>
+        <translation>我的文件</translation>
+    </message>
+    <message>
+        <source>Models</source>
+        <translation>Models</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>回收桶</translation>
+    </message>
+    <message>
+        <source>Untitled documents</source>
+        <translation>尙未標題文件</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation type="unfinished">頁面 %1/%2 複製中</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation type="unfinished">
+            <numerusform>已複製 %1 頁</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
@@ -1253,9 +1399,110 @@
         <source>Copying page %1/%2</source>
         <translation>頁面 %1/%2 複製中</translation>
     </message>
-    <message>
+    <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation>已複製 %1 個頁面</translation>
+        <translation>
+            <numerusform>已複製 %1 頁</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadManager</name>
+    <message>
+        <source>Download failed.</source>
+        <translation>下載失敗</translation>
+    </message>
+    <message>
+        <source>the remote server refused the connection (the server is not accepting requests)</source>
+        <translation>外部remote server 拒絕連線 (the server is not accepting requests)</translation>
+    </message>
+    <message>
+        <source>the remote server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>早在reply被接收且處理之前,外部remote server 就關閉連線。</translation>
+    </message>
+    <message>
+        <source>the remote host name was not found (invalid hostname)</source>
+        <translation>the remote host name was not found (invalid hostname)</translation>
+    </message>
+    <message>
+        <source>the connection to the remote server timed out</source>
+        <translation>外部伺服器remote server timed out</translation>
+    </message>
+    <message>
+        <source>the operation was canceled via calls to abort() or close() before it was finished.</source>
+        <translation>the operation was canceled via calls to abort() or close() before it was finished.</translation>
+    </message>
+    <message>
+        <source>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</source>
+        <translation>the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted.</translation>
+    </message>
+    <message>
+        <source>the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established.</source>
+        <translation>網路連線失效。系統已啟動它點roaming。需重新提交request,待連線回復方能處理。</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy server was refused (the proxy server is not accepting requests)</source>
+        <translation>proxy伺服器連結被拒 (the proxy server is not accepting requests)</translation>
+    </message>
+    <message>
+        <source>the proxy server closed the connection prematurely, before the entire reply was received and processed</source>
+        <translation>早在reply被接收且處理之前,proxy server 就關閉連線。</translation>
+    </message>
+    <message>
+        <source>the proxy host name was not found (invalid proxy hostname)</source>
+        <translation>the proxy host name was not found (invalid proxy hostname)</translation>
+    </message>
+    <message>
+        <source>the connection to the proxy timed out or the proxy did not reply in time to the request sent</source>
+        <translation>proxy timed out 或 the proxy 沒有回應</translation>
+    </message>
+    <message>
+        <source>the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)</source>
+        <translation>proxy 需要認証才能處理要求,但並未通過任何提供的資料(如果有的話)</translation>
+    </message>
+    <message>
+        <source>the access to the remote content was denied (similar to HTTP error 401)</source>
+        <translation>外部內容存取被拒 (similar to HTTP error 401)</translation>
+    </message>
+    <message>
+        <source>the operation requested on the remote content is not permitted</source>
+        <translation>外部的request不被允許</translation>
+    </message>
+    <message>
+        <source>the remote content was not found at the server (similar to HTTP error 404)</source>
+        <translation>the remote content was not found at the server (similar to HTTP error 404)</translation>
+    </message>
+    <message>
+        <source>the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)</source>
+        <translation>外部remote server 需要認証才能處理,但並未通過任何提供的資料(如果有的話)</translation>
+    </message>
+    <message>
+        <source>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</source>
+        <translation>the request needed to be sent again, but this failed for example because the upload data could not be read a second time.</translation>
+    </message>
+    <message>
+        <source>the Network Access API cannot honor the request because the protocol is not known</source>
+        <translation>因為protocol 未知,Network Access API的request不被處理。</translation>
+    </message>
+    <message>
+        <source>the requested operation is invalid for this protocol</source>
+        <translation>the requested operation is invalid for this protocol</translation>
+    </message>
+    <message>
+        <source>an unknown network-related error was detected</source>
+        <translation>偵測到網路有錯誤</translation>
+    </message>
+    <message>
+        <source>an unknown proxy-related error was detected</source>
+        <translation>偵測到proxy相關的錯誤</translation>
+    </message>
+    <message>
+        <source>an unknown error related to the remote content was detected</source>
+        <translation>偵測到外部內容有錯誤</translation>
+    </message>
+    <message>
+        <source>a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)</source>
+        <translation>偵測到protocol錯誤 (parsing error, invalid or unexpected responses, etc.)</translation>
     </message>
 </context>
 <context>
@@ -1327,6 +1574,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportDocumentSetAdaptor</name>
+    <message>
+        <source>Failed to export...</source>
+        <translation>匯出失敗...</translation>
+    </message>
+    <message>
+        <source>Export as UBX File</source>
+        <translation>以UBZ格式匯出</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>文件匯出中...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>匯出成功。</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>匯出失敗。</translation>
+    </message>
+    <message>
+        <source>Export to Sankore UBX Format</source>
+        <translation>匯出成Sankore UBX格式</translation>
+    </message>
+</context>
+<context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
@@ -1413,6 +1687,10 @@
         <source>Object informations</source>
         <translation>物件資訊</translation>
     </message>
+    <message>
+        <source>Add</source>
+        <translation type="unfinished">新增</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
@@ -1495,6 +1773,14 @@
         <source>Trash</source>
         <translation>回收桶</translation>
     </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>書籤</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>網路</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesNewFolderDialog</name>
@@ -1528,6 +1814,22 @@
         <source>Visible on Extended Screen</source>
         <translation>於延伸螢幕可見</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>新增動作</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>移除音訊檔連結</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>移除頁面連結</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>移除網路url連結</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
@@ -1543,6 +1845,22 @@
         <source>Go to Content Source</source>
         <translation>至內容來源</translation>
     </message>
+    <message>
+        <source>Add an action</source>
+        <translation>新增動作</translation>
+    </message>
+    <message>
+        <source>Remove link to audio</source>
+        <translation>移除音訊檔連結</translation>
+    </message>
+    <message>
+        <source>Remove link to page</source>
+        <translation>移除頁面連結</translation>
+    </message>
+    <message>
+        <source>Remove link to web url</source>
+        <translation>移除網路url連結</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
@@ -1563,13 +1881,6 @@
     </message>
 </context>
 <context>
-    <name>UBGraphicsW3CWidgetItem</name>
-    <message>
-        <source>Web</source>
-        <translation>網路</translation>
-    </message>
-</context>
-<context>
     <name>UBGraphicsWidgetItem</name>
     <message>
         <source>Loading ...</source>
@@ -1630,6 +1941,13 @@
     </message>
 </context>
 <context>
+    <name>UBImportDocumentSetAdaptor</name>
+    <message>
+        <source>Open-Sankore (set of documents) (*.ubx)</source>
+        <translation>Open-Sankore (set of documents) (*.ubx)</translation>
+    </message>
+</context>
+<context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
@@ -1709,22 +2027,28 @@
         <translation>登入Proxy失敗</translation>
     </message>
     <message>
+        <source>Yes</source>
+        <translation>是</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>否</translation>
+    </message>
+    <message>
         <source>SSL Errors:
+
 %1
+
 %2
+
 Do you want to ignore these errors for this host?</source>
         <translation>SSL Errors:
+
 %1
+
 %2
- 要忽略這些訊息嗎?</translation>
-    </message>
-    <message>
-        <source>Yes</source>
-        <translation>是</translation>
-    </message>
-    <message>
-        <source>No</source>
-        <translation>否</translation>
+
+是否要忽略這些錯誤?</translation>
     </message>
 </context>
 <context>
@@ -1838,6 +2162,142 @@ Do you want to ignore these errors for this host?</source>
         <source>Marker is pressure sensitive</source>
         <translation>感壓型提示筆</translation>
     </message>
+    <message>
+        <source>Default</source>
+        <translation>預設</translation>
+    </message>
+    <message>
+        <source>Arabic</source>
+        <translation>阿拉伯文</translation>
+    </message>
+    <message>
+        <source>Bulgarian</source>
+        <translation>Bulgarian</translation>
+    </message>
+    <message>
+        <source>Catalan</source>
+        <translation>Catalan</translation>
+    </message>
+    <message>
+        <source>Czech</source>
+        <translation>Czech</translation>
+    </message>
+    <message>
+        <source>Danish</source>
+        <translation>Danish</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>å¾·æ–‡</translation>
+    </message>
+    <message>
+        <source>Greek</source>
+        <translation>希臘文</translation>
+    </message>
+    <message>
+        <source>English</source>
+        <translation>英文</translation>
+    </message>
+    <message>
+        <source>English UK</source>
+        <translation>英文-UK</translation>
+    </message>
+    <message>
+        <source>Spanish</source>
+        <translation>西班牙文</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>法文</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>法文(瑞士)</translation>
+    </message>
+    <message>
+        <source>Italian</source>
+        <translation>義大利文</translation>
+    </message>
+    <message>
+        <source>Hebrew</source>
+        <translation>希伯來文</translation>
+    </message>
+    <message>
+        <source>Japanese</source>
+        <translation>日文</translation>
+    </message>
+    <message>
+        <source>Korean</source>
+        <translation>韓文</translation>
+    </message>
+    <message>
+        <source>Malagasy</source>
+        <translation>Malagasy</translation>
+    </message>
+    <message>
+        <source>Norwegian</source>
+        <translation>挪威文</translation>
+    </message>
+    <message>
+        <source>Dutch</source>
+        <translation>Dutch</translation>
+    </message>
+    <message>
+        <source>Polish</source>
+        <translation>波蘭文</translation>
+    </message>
+    <message>
+        <source>Romansh</source>
+        <translation>Romansh</translation>
+    </message>
+    <message>
+        <source>Romanian</source>
+        <translation>Romanian</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>ä¿„æ–‡</translation>
+    </message>
+    <message>
+        <source>Slovak</source>
+        <translation>Slovak</translation>
+    </message>
+    <message>
+        <source>Swedish</source>
+        <translation>瑞典文</translation>
+    </message>
+    <message>
+        <source>Turkish</source>
+        <translation>土耳其文</translation>
+    </message>
+    <message>
+        <source>Chinese</source>
+        <translation>中文</translation>
+    </message>
+    <message>
+        <source>Chinese Simplified</source>
+        <translation>簡體中文</translation>
+    </message>
+    <message>
+        <source>Chinese Traditional</source>
+        <translation>正體中文</translation>
+    </message>
+    <message>
+        <source>Corsican</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hindi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portuguese</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Basque</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
@@ -1879,6 +2339,17 @@ Do you want to ignore these errors for this host?</source>
         <source>My Movies</source>
         <translation>我的影片</translation>
     </message>
+    <message>
+        <source>/Web</source>
+        <translation>/Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBStartupHintsPalette</name>
+    <message>
+        <source>Visible next time</source>
+        <translation>下次顯現</translation>
+    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
@@ -2087,20 +2558,16 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>Cache</translation>
     </message>
-    <message>
-        <source>Aristo</source>
-        <translation>Aristo</translation>
-    </message>
 </context>
 <context>
-    <name>UBTrapFlashController</name>
+    <name>UBTrapWebPageContentController</name>
     <message>
         <source>Whole page</source>
         <translation>整頁</translation>
     </message>
     <message>
-        <source>Web</source>
-        <translation>網路</translation>
+        <source>Embed </source>
+        <translation>Embed </translation>
     </message>
 </context>
 <context>
@@ -2327,10 +2794,6 @@ Please reboot the application to access the updated documents.</source>
         <translation>%2 的 %1 (%3/秒) %4</translation>
     </message>
     <message>
-        <source>?</source>
-        <translation>?</translation>
-    </message>
-    <message>
         <source>%1 of %2 - Stopped</source>
         <translation>%2 的 %1 - 已停止</translation>
     </message>
@@ -2346,17 +2809,25 @@ Please reboot the application to access the updated documents.</source>
         <source>MB</source>
         <translation>MB</translation>
     </message>
+    <message>
+        <source>?</source>
+        <comment>unknown file size</comment>
+        <translatorcomment>檔案大小未知</translatorcomment>
+        <translation>?</translation>
+    </message>
 </context>
 <context>
     <name>WBDownloadManager</name>
     <message>
-        <source>%1 Downloads</source>
-        <translation>%1 個下載</translation>
-    </message>
-    <message>
         <source>1 Download</source>
         <translation>1 個下載</translation>
     </message>
+    <message>
+        <source>%1 Downloads</source>
+        <comment>always >= 2</comment>
+        <translatorcomment>永遠 >= 2</translatorcomment>
+        <translation>%1 個下載</translation>
+    </message>
 </context>
 <context>
     <name>WBHistoryModel</name>
@@ -2445,6 +2916,49 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
+    <name>WBTrapWebPageContentWindow</name>
+    <message>
+        <source>Select content to trap:</source>
+        <translation>選擇要截取的內容</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>應用程式名稱</translation>
+    </message>
+    <message>
+        <source>Restriction and disclaimer. </source>
+        <translation>限制與免責聲明</translation>
+    </message>
+    <message>
+        <source>This feature is developed to work on the most common web pages.</source>
+        <translation>本特色係應一般最常見網頁所開發</translation>
+    </message>
+    <message>
+        <source>Please respect copyrights for creating links or trapping content from the web.</source>
+        <translation>對於任何網路連結或內容截取,請尊重智慧財產權</translation>
+    </message>
+    <message>
+        <source>Download to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Download to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add link to
+current page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>WBWebPage</name>
     <message>
         <source>Download</source>
@@ -2520,6 +3034,10 @@ p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>Restore credentials on reboot</translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2707,7 +3225,7 @@ p, li { white-space: pre-wrap; }
         <source>Marker</source>
         <translation>提示筆</translation>
     </message>
-    <message>
+    <message utf8="true">
         <source>version : …</source>
         <translation>版本: …</translation>
     </message>
@@ -2716,26 +3234,14 @@ p, li { white-space: pre-wrap; }
         <translation>授權條款</translation>
     </message>
     <message>
-        <source>OpenSSl</source>
-        <translation>OpenSSl</translation>
-    </message>
-    <message>
         <source>zlib</source>
         <translation>zlib</translation>
     </message>
     <message>
-        <source>xpdf</source>
-        <translation>xpdf</translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation>Quazip</translation>
-    </message>
-    <message>
         <source>Network</source>
         <translation>網路</translation>
     </message>
-    <message>
+    <message utf8="true">
         <source>Open-Sankoré</source>
         <translation>Open-Sankoré</translation>
     </message>
@@ -2776,10 +3282,6 @@ p, li { white-space: pre-wrap; }
         <translation>密碼:</translation>
     </message>
     <message>
-        <source>Planète Sankoré ID</source>
-        <translation>Planète Sankoré ID</translation>
-    </message>
-    <message>
         <source>User:</source>
         <translation>使用者帳號:</translation>
     </message>
@@ -2788,902 +3290,63 @@ p, li { white-space: pre-wrap; }
         <translation>密碼:</translation>
     </message>
     <message>
-        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-                            Preamble
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-    a) The modified work must itself be a software library.
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-                            NO WARRANTY
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-                     END OF TERMS AND CONDITIONS
-</source>
-        <translation>                  GNU LIBRARY GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-                            Preamble
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-                  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-    a) The modified work must itself be a software library.
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-                            NO WARRANTY
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-                     END OF TERMS AND CONDITIONS
-</translation>
-    </message>
-    <message>
         <source>Credits</source>
         <translation>貢獻</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></translation>
+        <source>Start up tips</source>
+        <translation>啟動提示</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+        <source>Show start up tips</source>
+        <translation>顯示啟動提示</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>語言</translation>
+    </message>
+    <message>
+        <source>Select a language</source>
+        <translation>選擇語言</translation>
+    </message>
+    <message>
+        <source>The new language will be loaded on next restart</source>
+        <translation>下次啟動時,新選語言將會載入</translation>
+    </message>
+    <message utf8="true">
+        <source>Close Open-Sankoré</source>
+        <translation>關閉Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Planète Sankoré ID for exporting file</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>Restore credentials on reboot  </translation>
+    </message>
+    <message>
+        <source>OpenSSL</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>Xpdf</source>
+        <translation>Xpdf</translation>
+    </message>
+    <message>
+        <source>QuaZIP</source>
+        <translation>QuaZIP</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+</style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;">
 <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
 <tr>
 <td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
-    </message>
-    <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
-        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu';">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/images/circle.svg b/Sankore-3.1/resources/images/circle.svg
new file mode 100644
index 0000000..33346f1
--- /dev/null
+++ b/Sankore-3.1/resources/images/circle.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="26px" height="26px" viewBox="0 0 26 26" style="enable-background:new 0 0 26 26;" xml:space="preserve">
+
+<circle style="fill:#CCCCCC;" cx="13" cy="13" r="13"/>
+<circle style="fill:#999999;" cx="13" cy="13" r="11"/>
+<circle style="fill:#FFFFFF;" cx="13" cy="13" r="7"/>
+
+</svg>
diff --git a/Sankore-3.1/resources/images/createLinkPalette/LinkPage.svg b/Sankore-3.1/resources/images/createLinkPalette/LinkPage.svg
new file mode 100644
index 0000000..39fc9a3
--- /dev/null
+++ b/Sankore-3.1/resources/images/createLinkPalette/LinkPage.svg
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="96px" height="96px" viewBox="-15.421 -0.528 96 96" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<g>
+		<path fill="#FFFFFF" d="M58.264,41.693c0,1.951-1.596,3.548-3.547,3.548H4.257c-1.951,0-3.547-1.597-3.547-3.548V4.257
+			c0-1.951,1.596-3.547,3.547-3.547h50.46c1.951,0,3.547,1.596,3.547,3.547V41.693z"/>
+		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="29.4873" y1="2.936" x2="29.4873" y2="43.0151">
+			<stop  offset="0" style="stop-color:#F0F1F2"/>
+			<stop  offset="1" style="stop-color:#FAFDFD"/>
+		</linearGradient>
+		<path fill="url(#SVGID_1_)" d="M56.25,39.822c0,1.755-1.485,3.193-3.3,3.193H6.023c-1.814,0-3.299-1.438-3.299-3.193V6.128
+			c0-1.756,1.485-3.192,3.299-3.192H52.95c1.814,0,3.3,1.437,3.3,3.192V39.822z"/>
+	</g>
+	<g>
+		<path fill="none" stroke="#A2A9AD" stroke-width="1.419" stroke-miterlimit="10" d="M58.264,41.693
+			c0,1.951-1.596,3.548-3.547,3.548H4.257c-1.951,0-3.547-1.597-3.547-3.548V4.257c0-1.951,1.596-3.547,3.547-3.547h50.46
+			c1.951,0,3.547,1.596,3.547,3.547V41.693z"/>
+	</g>
+</g>
+<path fill="#676767" d="M32.789,26.523h-2.882V15.662c-1.053,0.985-2.294,1.713-3.723,2.185v-2.615
+	c0.752-0.246,1.569-0.713,2.451-1.4s1.487-1.489,1.815-2.405h2.338V26.523z"/>
+<g>
+	<g>
+		<path fill="#FFFFFF" d="M68.184,58.218c0,1.951-1.596,3.548-3.547,3.548h-50.46c-1.951,0-3.548-1.597-3.548-3.548V20.781
+			c0-1.951,1.597-3.547,3.548-3.547h50.46c1.951,0,3.547,1.596,3.547,3.547V58.218z"/>
+		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="39.4072" y1="19.4604" x2="39.4072" y2="59.5396">
+			<stop  offset="0" style="stop-color:#F0F1F2"/>
+			<stop  offset="1" style="stop-color:#FAFDFD"/>
+		</linearGradient>
+		<path fill="url(#SVGID_2_)" d="M66.17,56.346c0,1.756-1.485,3.193-3.3,3.193H15.943c-1.815,0-3.3-1.438-3.3-3.193V22.653
+			c0-1.756,1.484-3.192,3.3-3.192H62.87c1.814,0,3.3,1.437,3.3,3.192V56.346z"/>
+	</g>
+	<g>
+		<path fill="none" stroke="#A2A9AD" stroke-width="1.419" stroke-miterlimit="10" d="M68.184,58.218
+			c0,1.951-1.596,3.548-3.547,3.548h-50.46c-1.951,0-3.548-1.597-3.548-3.548V20.781c0-1.951,1.597-3.547,3.548-3.547h50.46
+			c1.951,0,3.547,1.596,3.547,3.547V58.218z"/>
+	</g>
+</g>
+<path fill="#676767" d="M44.458,40.757v2.677H34.355c0.109-1.012,0.438-1.971,0.984-2.877c0.547-0.906,1.627-2.107,3.241-3.605
+	c1.299-1.21,2.096-2.031,2.39-2.461c0.396-0.595,0.595-1.183,0.595-1.764c0-0.643-0.173-1.137-0.518-1.482
+	c-0.346-0.345-0.822-0.518-1.432-0.518c-0.602,0-1.08,0.181-1.436,0.543c-0.355,0.362-0.561,0.964-0.615,1.805l-2.872-0.288
+	c0.171-1.586,0.708-2.725,1.61-3.415c0.902-0.691,2.031-1.036,3.385-1.036c1.483,0,2.649,0.399,3.497,1.2
+	c0.848,0.8,1.272,1.795,1.272,2.984c0,0.677-0.122,1.321-0.364,1.933c-0.243,0.612-0.628,1.253-1.154,1.923
+	c-0.349,0.444-0.978,1.083-1.887,1.918c-0.909,0.834-1.485,1.388-1.729,1.661c-0.242,0.274-0.439,0.541-0.59,0.8H44.458z"/>
+<path fill="none" stroke="#FBCB45" stroke-width="3" stroke-miterlimit="10" d="M78.58,77.427c0,2.09-1.661,3.797-3.691,3.797
+	H22.382c-2.03,0-3.69-1.707-3.69-3.797V37.354c0-2.088,1.66-3.796,3.69-3.796h52.507c2.03,0,3.691,1.708,3.691,3.796V77.427z"/>
+<g id="XMLID_1_">
+	<g>
+		<path fill="#FFFFFF" d="M77.475,76.258c0,1.951-1.596,3.548-3.547,3.548h-50.46c-1.951,0-3.548-1.597-3.548-3.548V38.822
+			c0-1.951,1.597-3.547,3.548-3.547h50.46c1.951,0,3.547,1.596,3.547,3.547V76.258z"/>
+		<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="48.6982" y1="37.501" x2="48.6982" y2="77.5796">
+			<stop  offset="0" style="stop-color:#F0F1F2"/>
+			<stop  offset="1" style="stop-color:#FAFDFD"/>
+		</linearGradient>
+		<path fill="url(#SVGID_3_)" d="M75.461,74.387c0,1.756-1.485,3.192-3.3,3.192H25.234c-1.815,0-3.3-1.437-3.3-3.192V40.693
+			c0-1.756,1.484-3.192,3.3-3.192h46.927c1.814,0,3.3,1.437,3.3,3.192V74.387z"/>
+	</g>
+	<g>
+		<path fill="none" stroke="#A2A9AD" stroke-width="1.419" stroke-miterlimit="10" d="M77.475,76.258
+			c0,1.951-1.596,3.548-3.547,3.548h-50.46c-1.951,0-3.548-1.597-3.548-3.548V38.822c0-1.951,1.597-3.547,3.548-3.547h50.46
+			c1.951,0,3.547,1.596,3.547,3.547V76.258z"/>
+	</g>
+</g>
+<path fill="#676767" d="M43.703,59.895l2.79-0.339c0.088,0.711,0.328,1.256,0.718,1.631c0.39,0.377,0.861,0.564,1.415,0.564
+	c0.595,0,1.096-0.226,1.502-0.677c0.407-0.452,0.61-1.06,0.61-1.825c0-0.725-0.194-1.3-0.584-1.724s-0.865-0.636-1.426-0.636
+	c-0.369,0-0.811,0.072-1.323,0.215l0.318-2.348c0.779,0.02,1.374-0.148,1.784-0.508s0.615-0.836,0.615-1.432
+	c0-0.506-0.15-0.908-0.451-1.209s-0.7-0.451-1.2-0.451c-0.492,0-0.912,0.17-1.261,0.512s-0.562,0.842-0.636,1.498l-2.657-0.451
+	c0.185-0.91,0.464-1.637,0.836-2.18c0.373-0.543,0.893-0.971,1.56-1.282c0.666-0.312,1.413-0.466,2.24-0.466
+	c1.416,0,2.551,0.451,3.405,1.354c0.704,0.738,1.057,1.572,1.057,2.502c0,1.32-0.722,2.373-2.164,3.158
+	c0.861,0.186,1.55,0.6,2.066,1.242s0.774,1.418,0.774,2.328c0,1.318-0.482,2.443-1.446,3.373c-0.964,0.931-2.164,1.396-3.6,1.396
+	c-1.36,0-2.489-0.392-3.385-1.175S43.847,61.159,43.703,59.895z"/>
+<g>
+	<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="22.5479" y1="55.0215" x2="14.5479" y2="82.5214">
+		<stop  offset="0" style="stop-color:#F6B93C"/>
+		<stop  offset="0.0341" style="stop-color:#F6B53A"/>
+		<stop  offset="0.2023" style="stop-color:#F3A633"/>
+		<stop  offset="0.393" style="stop-color:#F29C2E"/>
+		<stop  offset="0.6231" style="stop-color:#F1962B"/>
+		<stop  offset="1" style="stop-color:#F0942A"/>
+	</linearGradient>
+	<path fill="url(#SVGID_4_)" d="M24.448,65.637l8.522,8.555V48.929L8.203,49.331l7.428,7.456
+		c-4.562,5.018-20.488,25.244,6.841,37.215C22.472,94.002,7.121,79.278,24.448,65.637z"/>
+	<g>
+		<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="24.2822" y1="55.1094" x2="-1.3598" y2="105.5664">
+			<stop  offset="0" style="stop-color:#F9DB47"/>
+			<stop  offset="0.0261" style="stop-color:#F8D244"/>
+			<stop  offset="0.083" style="stop-color:#F6C33E"/>
+			<stop  offset="0.1499" style="stop-color:#F5B63A"/>
+			<stop  offset="0.2322" style="stop-color:#F3AE37"/>
+			<stop  offset="0.3465" style="stop-color:#F3A936"/>
+			<stop  offset="0.6503" style="stop-color:#F3A735"/>
+			<stop  offset="1" style="stop-color:#F0942A"/>
+		</linearGradient>
+		<path fill="url(#SVGID_5_)" d="M23.063,94.925l-3.636-2.05c-6.476-3.653-11.159-9.02-12.222-14.005
+			c-1.997-9.371,5.227-18.565,8.425-22.083l-7.427-7.456l24.767-0.025V74.19l-8.522-8.554c-5.218,4.107-7.987,8.725-8.231,13.722
+			c-0.24,4.913,3.354,10.315,4.535,12.092L23.063,94.925z M12.942,51.255l4.104,4.121c0.754,0.754,0.782,1.966,0.064,2.756
+			c-2.991,3.29-9.754,11.856-7.949,20.321c0.744,3.49,3.565,7.238,7.646,10.323c-1.384-2.638-2.755-6.122-2.59-9.516
+			c0.273-5.602,3.299-10.713,8.993-15.195c0.767-0.607,1.962-0.536,2.655,0.162l5.104,5.122V51.258L12.942,51.255z"/>
+	</g>
+	<path fill="#7B5020" d="M24.777,81.949"/>
+	<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
+		M24.448,65.637l8.522,8.555V49.306L8.203,49.331l7.428,7.456c-4.562,5.018-20.488,25.244,6.841,37.215
+		C22.472,94.002,7.121,79.278,24.448,65.637z"/>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/createLinkPalette/LinkWeb.svg b/Sankore-3.1/resources/images/createLinkPalette/LinkWeb.svg
new file mode 100644
index 0000000..5262e44
--- /dev/null
+++ b/Sankore-3.1/resources/images/createLinkPalette/LinkWeb.svg
@@ -0,0 +1,395 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="96px" height="96px" viewBox="-13.297 -1.989 96 96" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<path fill="none" stroke="#FBCB45" stroke-width="3" stroke-miterlimit="10" d="M45.92,1.5c-3.361,0-42.052,0-42.052,0v81.461
+	h61.869c0,0,0-59.171,0-62.127c0-0.788-0.075-3.659-1.049-4.852c-1.63-1.997-12.126-11.074-14.008-12.801
+	C49.455,2.056,46.855,1.5,45.92,1.5z"/>
+<g id="XMLID_2_">
+	<g>
+		<path fill="#FFFFFF" d="M44.298,2.604c-3.26,0-39.495,0-39.495,0v79h60c0,0,0-57.821,0-60.688c0-1.682-0.81-3.904-1.754-5.062
+			c-1.58-1.936-10.316-9.098-12.142-10.773C49.719,3.992,45.205,2.604,44.298,2.604z"/>
+		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="34.8027" y1="6.5547" x2="34.8027" y2="77.6548">
+			<stop  offset="0" style="stop-color:#F0F1F2"/>
+			<stop  offset="1" style="stop-color:#FAFDFD"/>
+		</linearGradient>
+		<path fill="url(#SVGID_1_)" d="M43.349,6.555c-2.935,0-35.546,0-35.546,0v71.1h54c0,0,0-52.039,0-54.619
+			c0-1.514-0.729-3.514-1.578-4.555c-1.423-1.743-9.285-8.188-10.928-9.696C48.228,7.803,44.165,6.555,43.349,6.555z"/>
+	</g>
+	<radialGradient id="SVGID_2_" cx="53.4854" cy="12.1338" r="16.1284" gradientUnits="userSpaceOnUse">
+		<stop  offset="0" style="stop-color:#D3D3D3"/>
+		<stop  offset="1" style="stop-color:#FAFDFD;stop-opacity:0"/>
+	</radialGradient>
+	<path fill="url(#SVGID_2_)" d="M39.228,6.482c0,0-9.017,6.213-2.155,14.081c6.862,7.869,11.963,10.418,17.65,9.242
+		c5.687-1.177,5.529-1.826,6.314-3.395s0.932-5.307,0.353-8.13c-0.533-2.598-7.11-7.148-10.026-9.238
+		C47.063,5.96,44.738,6.417,39.228,6.482z"/>
+	<path fill="#FFFFFF" d="M47.718,18.25c1.835,0,10.509-0.217,12.083,0.438c1.573,0.655,3.984,4.525,3.984,6.492v-8.531L43.983,3.141
+		c0,0,2.41,2.174,3.067,4.797C47.706,10.56,47.718,18.25,47.718,18.25z"/>
+	<path fill="none" stroke="#A1A9AD" stroke-width="1.5" stroke-linejoin="round" stroke-miterlimit="10" d="M45.584,2.604
+		c-3.26,0-40.781,0-40.781,0v79h60c0,0,0-57.383,0-60.25c0-0.764-0.073-3.548-1.018-4.706c-1.58-1.936-11.759-10.74-13.584-12.415
+		C49.013,3.144,46.491,2.604,45.584,2.604z"/>
+</g>
+<g>
+	
+		<image width="158" height="158" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKMAAACjCAYAAADmbK6AAAAACXBIWXMAAC4jAAAuIwF4pT92AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAM0hJREFUeNrsfU2vLMlxXUb2G268
+FwTDGy+80sKgRNOQIYnyP/FqvsgZ2HuDpgUZggB/zXBhcf6LTZG0QMPW1mtvbMDwX5jpDHdVxseJ
+yKzqvvd234/3umf63Xu7q7urq06dEyciMrOU++1+u9/ut/vtfrvfXumN7ofAb7//l7/98fKznY5K
+PR0brv3wfCTPV/j5Ha1/0aFwabJd5cuO7G//xQ9/fj/adzCut+//xd98zlRWOLXTv9WPxgJGYqL1
+wAjGToDrB2p5fPm1v65v0x/vx5ESaOORJoKDPoDxv/7zf/T1HYwfyO0fngBYBTinn58vYFrZbzkE
+8j+CkAR0AsIpAAfwCeDI/nzAiaDycyTW33z54YHzvQXj7/2b33xeT6g6oW3FyOmLfl6WHwKoIr9s
+gbAAC+rzWwCkOfAoP0ZnDjjLXW4Gxl9/IMB8r8D4e3/+m89O8R4dOgo+q8JohVBaBWXUGW8LhMVZ
+UNEbAFhpYDZCwImkn5DOAbTnbuvW3F+k71GZVzAe33Ng0vsCwn7yyufLKe/gciAa+hIbHiAmzCDU
+120xIIKvAPBItmNkUAqM5+gOIOR4Uk5/NvibO0b5tN8rGH/1xQ++voPxFYJwYcFVQiUOlJ9FZVlj
+w8SGaEwcsAmERJHSiEC6BXwFgMerE6dwfGdyPWVE/JvjU+30gwCgi4yfPp+Ppzd/X4D5JsH4D/78
+1599r+/6ZwVAdxAgKthMlnfYsELMqHKeQahP10iSGXzmXrYOar3geLcRlyDf9iQncK7A/C9vXMLf
+FBj//p/9+tN3dQESfXrQfQdGrMJs1eItcCsi3wcBDa+oBQYVcM1ASMCCAwAn4Fv2pSU6pJzyoTkt
+tglLnmLGAaTs7InAfNOgpLcCwtLZ7rOPhAG3gIjx4UyWkQ2DJIMpOQPCAYAIPn2/RiDTeKD3bIyi
+KwKSK0eQZnAqME+gZOqPfs1vEJT0ukH4q09lFz9dwURLNYR2gbg8iPFhETY8GLq22ZCARRGEFlFS
+SGwbAA8AvjoBHKNMn8ntKMhoAtQG4DxOgIlsKYb86//8xQ++uoPxCbe/97O//vSjlaZIGXEF4gEd
+8gYQNWhbgHiQvw4gyxTTOIENMSZEEFa6HIAs+1uSEy5lozIzxozD69bHeSXmi4HZHJQrO74FUNJr
+BOLpxyfvanV5BSCuFZQLgXjwpDVlpwxsaLRXDViSGkognAGQJ4yH4KQSS4WX3Nh/cgJfYFDaAGYG
+JS8b8etnSXo9IPzVJ3L8Pl3B1gE1AJHQNZ8BYnDLc1ke3DPGhBmE1aPSwICYLKcyoi9WXoh480Qw
+T2JGQyVbStLBiYzJArsMSpXvU0D51fLAawUlvR4glgWMpEBcduyj7pydeURWayH3ypC+yUAkx+lU
+lpENEdyKTjctDkICDqz6GXAkrQKjIQU+xxewIkV6bOvLewTIIzi5YUKSA5OypX6YMaZcpfs1AvLF
+wfh3T0CsAsSDIETl+XtEKIG01prlJK9l5+Sa94CYTUqNbIgs1/OTul0CYfU/LAVUEXzkoJMSJHHf
+r4vBeJRtT8zGDUHKDs4GBpwTWyooBagrFJN0L7b769fGki8Gxt/9V3/9iTDLJyJRlOPEwTlTNDCP
+AKKx1YE0GQ515uV9uiRbTJhBqBeHQhQBuPx+PO3ku5CXocG8zPLiDMRnJqb5G323fL/WQYjAZMgH
+tRko5e+TdPMRWPI1xpL0UkA8/fjYwDWX503DgtKsLTnfA7OyB0R/zGUZ2VAlWWPCDEJjwQ0ALuCr
+CXB0wUHnnb9XOQZwIjCXWHaBl7FlAqXFlBo/8hBLvhrZfnYw/u5Pf/nx6Vx+YnVkkWeN0QZ57mxl
+4AlALF1f351+voM84iVARFnue+G/GxuCHGcQ8g4Ac6uY1nT4ASdEE4XZ0MyAefqdl/1vAEqV72aJ
+RwNoT4xn2X4FgHxWMP7OCYinc/iJyiTI87ovh4k81/VEo2GpROCsF1B9dAEjYu6wQpHQZDmxoVUF
+QcoRhHsA7Il3j/Wo0Cy/My8ImjlhizEJwLkFzAxKkWDr9kGWXAA6ke0VkMt2v3whUNJzAvH0YR8L
+M/WKSDItU3lOcSLKs9WaV5PgIDtMgEjCdAhE3Qa5NrMh+YWwXhQIwlTmo1Kgbk3RQNcHHKsWTw53
+6XVwlgRMBGUT2AqgN1lS00Ci1QbIdRvmr16ilEjPBUSNEZ0Ve9ULTcu70y/vAGyb8pwMiwFL4sZa
+1SVjSmcEIspy9fAzGJsDu8xSpQBCZEBxQcRl2hAhrzl/uNk7Gzk3UCg4WSRaGRNByVB6OY4suW7d
+kmxnQHJH6bMDkp4LiOTxmrHilmk5J88LqtCwCMpcjmvB/CHRZUAc2FAleROEhOnHYJU9HQlOhubH
+nzeqL5jllvRN2EZBtAlKk+7Mkmy/vypA0nMAUeRvYMXDCXHZtEzLfaM8n40T3z0CiLQyoQ2+6gl2
+ikBHEHIoH0LjZMyBlwTX826ax7+8n9GBKWw5gLJBQrxBvvJIIuGvFJD0HEDcY8VsWhYwHpQVd+R5
+hbQAM8eJyy/vRBUPRJcBMcnyEhseQnnPxx0MIIRRgyjMqTJz8bH2mrSNiRmAyTyCUoJBczvL/bgc
+UkEWyvYlgDzKh3xXylfP0U1OtwbiOVZcmmXflcSKYFpKH9dM5+RZ4kSLEQ8AMB2Qj+HnDIg9/WMI
+j2xYY+kvgXAAYGiQkFGKF4ORhJoQnAmYbHlCDs+vP9rIkizmppVtQKqp6UaosG535HV8z1e/vDFD
+1lsDEXNtVLzEhnFUTb2nZEAEQyENCwTyTGWM9yyfCEAs9Hgg9j/ikK6qhqiYfVq3qT3YJA0x1DTV
+ZRjVstfywt37ohrM627Ye4i3qrKz8N097iYYK1b9ajHnL2ojYZEVsTzlFX1ila+t5dfTr1/emhnr
+rYGI40VUfSh0X2u2UUFKkDJxGyD1XZLTak/BMAFSjRYQGLr5EUAski7Scybxow32QhDOAGjgWv5e
+gLAowQVYXLczVPcHZ8BMoCxWLiVLjdr+PxSQDMMgLW4+3X7087/98k3I9BYj6gk8SINXzituxYpY
+e86m5Zw8D3Ei9dGB7whazyRvuAVEQbOeJDthDnrINfopXHbo9H4MLbkydpro/BFnKCpjt/hJMNvy
+wtZks+5EzDl7i7dIbpdg7XPsurwh2SbX/Zfvlo/eiB9vLdd0U2nWVAvUoJdqizDN6KDhCmWJFZf/
+WGJF8pxiSOMUKAdWinGitX+teUxR/Npds/Uv7gPRh76OfZQGQtPJZQ8UfPYMz/z1mNlhzDaS998o
+OLlpnDeCkr1I0zSW5MLnALm8ZHXZvTbI3zFbY2QrMX5sYq9PhubrW0wmcC2Z/niK9DD3DJcD/Hmg
+y2JFHYLqrIRAR4CM8mza7GOkCdM3DwCifsAARJVhqtUIXeS53/pzRbWWgiQXUHO/kmx7fFxlFWVc
+Pl9j2a7R63ezi8aOW92WbL0wdYgGHreZXJ9uX/7J1//jy1cHRmHFbeqF9C+OacYk8fol2R/jMVaU
+ODECx5PUBVN8Eu/1B7nkIajkceMZIFYH4vqgx4U9JtwCYQEwVSp2P6zjtjWuJOmj7Hd/zrfXfVzf
+bwuUGFP6l7N9PQdIDz9i/Mhy5TMVnNDKftYbGJp6C3lGNaowuQd7psNmXWAddQe5uoewoo72I2gB
+I2Bd8jhRgN8T2oNrngCREIisFxNbb6WZLQQhAPAggHOaLBfcBYMlghPfn6qaPGNV3y92QNIGIIPL
+Jk/waxBMsY+T8Lj6bB1Urs2O9RZAHCW6n5itdI5FT6E77DJWLAl8oKNBnksBeYYObXLqDtKsQOyp
+mQhEknq6OS0AYQRg8fg2gHLnVvTicnAiMAMo9QJWFweArBQbjQMg0ZDJdahyrcyX5BrdNUG3/FXl
+ul47TswSneV6KtExnUPsrLg+1mKpd8qKehVzb/WiLM8EztlYD95wEiPavmqaxWVZTpTEeMJeAkIH
+YAEAWm5SNqiL65Y7oXQjLhMwZXiEhgnF6FkAWT0utWNdYP4hyDqEypCEDFRLSPcUk2vux7WWMJJS
+T8SXf3wlQNabxImhZ+ACiR5Z0ZpdbWgpx+z5JayII/Vm8uwWeJQgqqUEIKoem6yDJCMTQunTJLQK
+vSnT1SjZ1bV23c7yk4Ex7WJRUEaWlHJC9dhVWBMvNgoXctmTa5y3LbNjCey4bPvFi4DxnDxPJLrs
+SXQ2LilQLuyospzfJax4AOBuynONk6EYwFOMWCkG+JbnhFEQNYJQHLEBzZmvoqHx38VZA3OSALOi
+iw3JaUtwm9vBAkyKIUtqGk7xY5Zr8ja+S9iRrsGO9Rby/CAXnYxLlugS+1cpDwklPs+KvcNmIs+u
+0oR5xADE6nYSgWjJewsvHYTFCyg6uMzuVrIMrlpAgNuRm4/OmA5KKDZpLA5U6VdhACSllFWSMZVr
+2xS6j2bsqCQCgf8XzwrGc/KcpJpyLncm0WVHotW4hKnqfKehc0Ha+zdYsUxYkaGjO0w7RtGsBGkm
+BGIcuug5lwhCBV4hijnF4J2hNO117zIFJQJSdvmAzl+xlEwN5gwJKkhMmN7x47TFjg074qJUlz/6
+j09jx3ptVoyNpBwenrnosifRO8aFSgARPYIVvXED5Lm/dnDNiRG9Lt6T1wTDaR2EBQBmDZOeL/S7
+SQTZ1WHABFBa72b1eLJkQNYNQPoX9e87pswuZUcK6ud/fvFH/+G/f3FzMF7KiudSOluJ7g2JDsYl
+S3QCdhxkr5f9NisWYMUkz9bdDXkeiREjEHv1RdjrQLFpAQfZ1OVTib3BId/Xx1m2c1uOzRkHYEkB
+ZEFAepOEG2b4HkGugR3LFjuSsyNMlFpwpt40Dmjd4MvnYMbLJRpSOlXnrUkDQCaJ7qmL3pNodHZk
+VQPHsLrwLVbEE+BJOE6XvxdnsGG8Got1ECAbwlwpHYCQNKwCzPFeUmbcQVlGlsSJDYAArMgCE9qH
+Xhz7noOZQXYsPiacgUUZFKqm41nhHD6WHeu1Y8XcC6Dym+NFaCSF6AsT4FQulOgwNzzFAxZa2AZW
+RF/EhUKuRVqOPN/oJfMMxAr1cRpBCGQIUWa6QyyXgMlEFN9few0RkDjkW/OL2tUccknIjnAcAjvm
+yAKluiQjM0r1o81MvSYrxom3eABe3eycoiG2bEEQStly0e2MRFOoWce3ok1WDB1fOVySfnUOQEQ0
+kElsBGDF3KNJPEEvYgRmpRIaIQqGFAJILg56wv6QPBnahB3zcUB2pB2pXv5qKTWX3+MPH8GO9Zqs
+uDMKLuCAUn5R5VnjxTKLFzdcNDZiZYluWGT1bcIlPLAiRlUmz74fCICKK3EYi3nHN5iCHuP1Ko7f
+Kf0tVZ4KMzXDbtn7Fw9jwoWBK3RVkwcKF5F+X2Q2i9kDI5BNZjWT6jJx1SlO++IWzHi5RJ9JdufL
+LuQXZ/Ei/EwzNsRKAJdBoqWpNvRVIusROOhzrFhAntE1hyEQAMTAhApCz5QUqM5gqkdAlEFJFFhS
+PgfnKgd2tTaTwI60yY5xdS+8GDVdNpNqjnEjnI+wfuIf/vuHsWO9ZqyYoXnOvCRAAkvatw8EaPEe
+l5IT3VMXXc5INLJiSf2w4DZLShRrpYJDfhGNRCGQ4VQiLJjmKSVKOuH2FYYWFGA3/Tz2+YkKp/Ud
+AjvCgkrorDFzNpPqQ9mQ6jEBnhYfsX++uCYzPhiM6KTRvEACPJgXnpiX5k38makCptokKuBUy96X
+6JIcEp4T4xZjxbDwUbqQCFJzVs4DY1MQnBVq0Pq7ga9gR46VE2GIw/DZJtc21QGyYxLVIAtlV6on
+rjqc6pZOEZeM7FL+8QNix3ptVtxY3gSd9FnzUvJ6ARYM8uTJMSbFeHG8WCZlRh4luhLTFiuO8hwv
+xoq5PckJkveQWXdOhZGGBCisNZqXCn1briyDXIfyprMjj1LNPIZ900CfevPEyAvDMQ1givH8T67B
+jE+R6M0PunTQTTYvIt/hQs/5RT2oTD4dcY4X03kJxBgHsxScvN6dxGTCeAizpJaNA780BSR/Awvq
+3dgSS8/4enjf9HmhQyrtJyZGB6nO37+EzqcYNzLFbTmm26BqwaN/4CfK9FNjxVwG3GLOfHkdLtlR
+itl/NS/Z5By2aBMVKyz9FyUaX9xPAIeFK9FMoDwD00Rg1eIxIJQB0S1X6UcbABn7RMAIcVyyoXjs
+GMzt6H8HV711bg7FJ50K041zqoKRr8udbz/8d5dJdX0OVhwM9SStwzQ66DJz0iVNSxzzX/2IcHwP
+njjxMsSL+HmMtcdRonMnkT4fSogjwxGOnQGH7E2xI6MiU9VKMzZWcxukmkPsy7QVq5Qxbix5GZFq
+smTHgaC3MZyX2Zra9UKprldH2oXPhZr0ADzeBiVvvPFkET+a1K6nudBhKrHJ1McTiSZYhgOzWoFj
+E8BwwJV2bcM4l7B97ugollecACiyc57qZx6fzI8HmhjKD2zGhryNASqXaXW9hXHZe46I9l5HtGWG
+UkGm0WzN5ov3KZqXMhrOsL95jV+CWRxzxQIrwjQCsg/2I+vu9gR4GYCYF03CihL0ONHmPu44lGxi
+LjmnPLEwLQEbJx9AcP2Tf/vffvIYZvz4Vgz5oG1pTNmEg/AIqt9x4Yi8QZ45VXpiFYJjjdZtT8SE
+JOFtXqDaR6DWip1lMZ3g/UKhIz1+7mSfYiVlVuR7+OwNW8e17RBC/Pzyk8d+xm3ASI8GLj31oJ0D
+5v4H8ETiefpKmixtEBPXmDAknM45ueJzFxINyTFK+/tgBaOrAeVRM5VcHYxv9sb8qAPNl5wJGnwS
+pRwNhbD3gguFHwuA9D3pGZcY+OEZqa5XTOncb/fbudvlYLxRSue9vl1ELLzxJ6xacI72rqKDr/x2
+dZnmF/5C7bGqfLleTare8X2HFVF9pjD3srbqAFvyhH3dlmFyMt5ELE0O/U7dIy/Mztc9rudg8P0d
+qa7Xlmh+DENc8LZ0BTDODjwP+zJb+IKMwdC9BjvDY9Xd1lnpn92nlVvmlWv2XL8v0861vmqGLkLJ
+9nsGOw82Cvdr8gXDGgm8c+z3gHkpGGnz8+3240uY8dklmvcAyfHYEHNqvLjSPuDyz8zhU5WlYhmM
+Q1rH5tEucT3oMNeirhyg82QveBRQrj9ZgFh0hQEAIUwEys6ezCm9U+D4UHE2jpQNM9UTXUXEhkoX
+8x7Z8LPINF/4XGYQjqwXnp3lsHTjmi/jAJJtIuYL1GkkOQ7hncioLe9H8Bo83wosnxkWGFJYUn+f
+bTd8Zr440n7oZ+YvsPdlJ8eDt84pTd5MzwPTdi6YL6zBPDsYZccT63mUwyFzNpPTMZhq6dJc188D
+xkIJc90cz9bGGWHelHQCWWVfGMjWUHFCYlmYhfvaLIwybWuuNFuBIL8WV9QoToQ03S+GA8WR1Deh
+x8C1oAS+pDBIU4MAt6XzwhsSz+ej2ZvnGXmDmSYO0kE1Y8S28wUbHHjd9pjpd4v+uOBit3olM0/g
+L1JqbUmcgjJkR2Q3xan93laZLnoXENo/8XXIiuEHyvL6WF9VlYKEs03JnL4nz2kz2/sjHOtwvMmO
+dUBh2yEmBfHv/+Vvf/xcYOS9xMMegx7PBcccrk4xotFUMMdO71zKCwRBhYPTtcaHEP11adTV7VG2
+QVIVhK2xs1hYMXKlGQMhw81BWYBaPdhcT3pjZlyIUtdgkx0wZ650G9jRh1ShY2caQ5ehpKid3jya
+JU5UQxiDjY4Oz+82GG+V7KYnpAaYxi/FskZaVhmaqG4FM8Lh9wk5LsF81NuJBxGwMYSHiR1tocgB
+kE55JtEN7iDVJVBoBCInVsT9QHVAiXbXw2aD1LzMjgUGq2VdCph5drynIjNrXqHLEyf12k46FsrZ
+5K2h8/OrjinFy30MC08EfgR0nYQClLZL2TiehEnhMnf1jlKtEjhnx+A2BkCuYFM2bEGLiy9TBSxp
+W0QgluJYzazYvyPJoqpBosd4kbdD5Vn2tKXjp5vUrfRPOne1pNW+ni3pDV+tcYzpLL6ZmQf4HpU5
+RD5g2NRRc3bULR/oZGIKz0wMJ6mGtdAKrs0MqAJ2JCM/OgdIwZssaaF5Rb93UGFsuQNE/TyIFTkA
+GzI9trZvgZVXVaLBoQ9XKpqXmVmMTholPuTsqbPrbn7zNmCM5S0+7uwEHoDktNgcta9jghbSXts8
+BQcHv/RVdeBiQKDxqEqDVKtMNp6zI9uiPZj/2wZk4wjKnZt9/i4QIY2j+zFjxWX/s+xmiR6Ph3OF
+HT+C5YN1qUJ00pipD+TQE27+NjvJ+bKsNX5l60xjeiDugK55U/vSPfpQFfQ1GUawfJnDxFEfdMUe
+EicnM6qOn7HKgzyv4637CBGW5CZp2o6QFmRFIZajpydg7d5n277JFzN27iPBNG3KsgAmi/nxFTxh
+7Zp8DQc3jqSUgIjyjBcIhoXIihFmNEi0MhkxxKISL6KTzuaFo5PmmZNuwniqXMTgwG/JjDy3Lww7
+xudKUke8Wilfeng1jnEjp7hxJtU5ibyeVJTqltmxJHb0eK0pcwdWIzAqrvpNDcwo0SbV/XWucg3e
+JwFRV0eF0MFqQdxZMbrx9XuR7FuSaB4Lh4zHby9eZJ7Ei3pRAO6PF+DnJnlGngwPRBNTNkwMb5iY
+vbgRgjq7ojvzbUg1LG+mS5n5mmbEuBAfOGBHZDIQe4DUONFB6WuPN/EsjUNCxlNEITdJmA0PQCw9
+TRlCpMYlJigLMwZy8n19rWlw0VOJ5rBh4XhCNuPFLfOynLrv/8XffP48YJykm2YmJhiJMaeo2nAu
+bmTPnaVV6yHFM3XVM3Zc2KPFLhsuIV2oIJsCElJDnEHZ+t/BSeNLludHEBa0UGUEYgmmhQusP63H
+ZYcVp+0UmNLhkMM1HDY4hpzOYXMr7xMvjKWgz28aM07ix8XE2NjiHDcWCjXLHjcuX5RWGVinz7BZ
+wNaDQ9TI40bNU4NU0yIH73qkRkfyhG3R1SThs9eT2Sf5XOhGV0uQ5e1PZ3AZKbXQTl32ZVkXc+EB
+8vhR52dY1nuUSfqImXAOgZ4XkFkcaFbjGKsfmo4hXZgSVlB11gtEb0Ac5blZrMgTVkTpd+MlIRPZ
+yuh8TBLdUqK1TSS6scWLfC5evAkYO2S6ZZuZmNa/jM46Zovf2sqjp0eOMqC/6nKiUH+TvLdJNWmB
+eJ2hRNiEXDWWeR7rylEnQK0THimGrJLdP0K8Dhd/I0HcCZCnXxIglwH0AgQEZD9ZfcFzMyG62/1a
+o3NVJjsSDbIGjccmDTQsCsS+tq/AzGJhcuAmZUFWhPypgjWwopIqoUSnymKSaIsXCXLPW91a727E
+iAE6gh9a40Zim3cH48bSz7C3O0geS07eymAHD9FXYOlSujNXTcCUIzuKye2zcelMO+t11E5oq4Ls
+RTeXyWpWwC0Es8eQvH6x9RQ1OV190of+/VsZJwCYVKwCADmz1/K+zTQ4SDMC0S705kBs8jdWqD03
+O2FFOKXHDRetYQP2vGWJbtlHSGn1WcC42Ta2gIZ9wVSCki/jdDrrid2W6iJSXeX1+ryn0YR1rXDt
+7MgMa0crLKXtWiY4Mrk2/YMPUNbaAGSprYuChJO6K74EL6Q6adqRFAFYAISySLQwJHo3ACKkZri5
+JRrlGXqXgBUb45rUoYMoHJLQG3CBRJMzLO+Urm8IRlDYJW48TOLGxV1TpSDV1MXgnFR3PSYTDlNU
+SfUZ2yE7rgeI1oNn0t0D+0IOHwlHSZaVWd5J4sc+4U7PPrb+0tP76Iw1ZnA6G5KLmSyXy1t1e940
+gA5CzkWF3lfhOW1sNZM4UUua7IuZI0B7nAELoiuA5qwYKDonunlPojVexJo6T1oc390IiBA3UkGp
+xrhxT6qXU7wYkI/sciSU6vXAvrOQbp8dSdhRlGqZ1gZFu5OfAqnDeqXUtk5PPAHk8iFVzQmvjGpz
+3zpgBI79K7UOUMu+8WZfEkOzroMQsgTKhlAKgQoJALFxKMBY3JhryJJqWim+eXFnmxXFqZMYG47t
+Y2JWuHxX1BB6r/qWRN8OjB5jWAgJUm1x45ZUazXmxI58cM9iplpLKh6HzdnxBGZ6J59xrGvI1yeF
+MgCudLHGhbzGtB0xtZwDZD/ksp7eAvQ+IxhPQemT5lg9eTJvpARag2FIIMTmXc9xS2VpB4gtyr9p
+e0u9mo3swW1WLHBxlFASD+76KOybXTRPUnk3lektqW5iGISNplJtGZhkZEiMjPLaIrfb7Lhqtbpj
+PSDlox4UrQBUuUZAhvhxAkhefQxrPxvbfOTin4i097GDMnRdlO1xPzQZMDUBobMhyHJRb7ILRA5A
+LCDPy4uX4/BtKqKAg95mxY3cIhoXSi6a+3XzrDHjplQfRcOqTrHItvYfSnXRnCNZRpLKJexIsma1
+lgWrALaAXFcBoLrrjnaLH6eAXPOHSzlvLT0LS/Y85JpHZPHOBN2XOE8YpJy2DR/UlYfONhwy2DIb
+WtZnDkQsn6B77t/HenXVqDfsM8B2yMiKpXAcDrHumuUWU6I7Fm+e103vSLXlAqkH4h0hNkO5nNnT
+z6NOoq5mGNlRfh/YUaoXYndXudYJWI92EXQDE9x1ka6WDUCKcy4FZVun3mIAZdHsJwATZxw9k4EY
+AQhtD01DGqs1eh4x9sYGIHIatajumSVObGT5mZ7g9pyk9Qmpg4ZYka17h/255sZFnDTEtH3UhXXO
+P59Mo6OYuOoLjEyhHXbU6QqbTVHTH9O8o6aHPA4nlxSCofMkiXEtywggucQYknWhV0bZ7knIAEqf
+g9yByTRMGLlVgcEqvYk8jyDUenoDZiwAxOY9aG6hFSw+PNbixWxaoNQa84qzWDGxIqRzzhqX54oZ
+V6nurV9k2SsRuaXcZEamsaRHbOZBY8c1zTNjx4PWSSXvWHreca2AuFx3fjLD0hdtW/LZ9JFUaDRQ
+nQGyFQc9aesMgWwrySIo9brBcaWSMOLzF3DoKnZjN4JQCtexZbEoW2VpBiBqGsfiRB/xAGFPkOfG
+3m/cpg56YMWCrIhglnDtPz0rGEMnHQmI5LfGHTRN3DP2ONZckRGW22PHIorAvji9yXURxV7k+mC5
+70VqaP27QfyogFy3qmvjghmV5UXV1MdZMoNyOcverekFeNH7fWaME0wzqyy3CQgnbIjpG5KYkEoC
+ohiWYwLiEQ0TgzyzJ8TLpoMeYsWQzmlQFVqO9P/8l3/8/GDcMzI5zbPDjil27GZD3bA2UIAzDXKt
+ZWyNHzV91CQ3XieAlLMLrrtYKVpYUoJCkogSQNmg31y6b60/m/aOVWLDBs29haxnMYPQO2n6lt4a
+54iZAVHZs0mcqADkLM8FUkAu55zyivzdRqw4YcXnl+lsZDR9k42Mpnl22DE4a2VLUjcNZoYmcr2a
+myV+FEY7aiO2AJInDEnaRdEMcCRVIyZfeaB/g57pMabUcuc6YXeDgbHlsomWrLghwJ6Mx4HWtjjQ
+v4D5wGT5FhBZh4cIEJsDPcgz46hrHpqctdoyOOgZK7aXAiMUECQbQ6uReSdkiWmePXYsHt8tlRe3
+O9pzL4zFUa5D/IiGZgHkgboMk0R8pIBcttMVqtRKy2qRyJIq3TakQcqLVmdpjJ4lSjQuG9by/DQc
+2zy5xNIb5gK1421DlrW6on2Pm0BE4wFAbNGlZHnu9A/VFk9obrNi27gknweMF6R5Mju2xI7aZ6hV
+mS25RnetrToaP3Yjw+sKVdJwsLpilewiDHkkcViYGFfZFlleQ8oCoBTXTDDWVdiNp2hsvJvfSQOc
+YtNwGUFYOCIFE9pH8nRMAWnWYQ0kzpsgCahx4qzSkuW5GSuylf9Im3/NlXslhl+SGcc0z8iOJbFj
+Ffn0c0Emz0cCfI9yvbpradsi+NBVpskrKjq+ZQVYFY49eofP2g3RqrdmAkuWGSg1Y2TAjICiB8wB
+yDw03HKo5WQQIhsWLcXBmIcjJLVbZkRtZBCZliEi1r3uceJZeR4mGbC8onyV40IoG8dBhx1880xS
+Ha4MGx8s8Q606nmhAAqjpOkDxvQBw/AXDjN4WWe0xPLQcawHaN32qAOhdNtiDc79ud6IALk7KTQ2
+LM75bGIwvkUHVenQBG4F5nSCuz7XbJYyfa2O7y+WF7Sj0vT7y+epLLe+30cdL1O8FbfJd0pAZASi
+Hi/GmvaGPB/le5Myq0/HwWGGQWDFxjujA//fn/3Tb56LHRm6cI4+Gq50gNl4CdaB5hyrAZZIO2oh
+HwZItYcD0jpS0mvXE3h0hHe56yd3CkpuzBmYzWYZ43A/Tu55G3/bAYBTEDZt2IEhgyE+RIlVs9IB
+tAnENPkUe6WFTfaPBZs2UtmPTJ6NFSU6+asXlemU5jHd1dYquVpOpsKqMmZmYEWWQa4PXpoO8aOv
+Ort2hbP2YzSQbO4xpAyD6C1qpTd0F2lBNDtPlsE/HdDa8429Edhzh7CWo3vqUJzen1GBJm2NOPaZ
+osL4uBjJk4ExKQ1mQGnQQZ5dM02A2M4AkTfk2cdphmqNKeJRLtD/9dM/eXkworNua/OsdsJaVeZk
+Hnr2Rs1M64lm0jJhEastdbcOSC/WUIHm2RkgiTyGFPsR0j7sJWRt95E4rMeSR5YCorJHXZuADbDk
+Pl8Hx8Q+CF+5qAyDUHgCTii34SB5jQnX30kvFo3pOMz3ZDnE4nGhpm90IgDMOc6AyNBHIfJsVRee
+yHMyLcqKu5mt5wcjXOEybnCtylRhv2BmNP3VewbNXSMgtZx3MMWlXUBqMmh5fTWq6duosWEZNags
+WX3ShtIAlLXvb9/P2kuWFJeCG4YYEK4wmbYbQpoyzKFkLLgA8BANi436LjM2FBWqODgbgLgnzThF
+pAJR48SSgJhyiirPfLzAvOG46W+emR2zmbHg9hibMU1CsPCO8SMaGpjObjeG1PCqgPOxONLGMWv6
+gyF+6xsfodpwtNnDfLaII5oS7ZLBO8aIs+fltZKsZpmzZ20UOkJMeLRjZ1Myg3mSllKID3FYqm97
+ARCTYclxYnTPc3nOs+9ugvG5TEy46rfNDB97rZMRcIzBcZwuQV5T8vyKm4DM8y22gqP0o9vWdqsM
+yiMAk8GMmAsXRIdpTPr2w71xnO6EBdxH2enw3vp5ZQOEiQ39SubgaJnjvJJngMhHeB3Gidi6hkDt
+FxMc4/4dfvFqZHrbzLhcs8t1kfixj0uWtq2qsSZpRlyGmUpF5mBD6qhsSba5XhnWUAvGkWJopHWh
+6ryM2s8oY15IRi/2/KR2rpMVIo4gyxWuxEZjhbqm2BAvWp3KmECWObhsxvyfzdNT0vj8HB8Sx9nF
+HgJEHPIwiRO5QU7RZlU5Pfe/f/anf/XqwJjNTIVYUkyrDqoL8WMjbWYoTwJk8/kdpOlQCzqFjCVL
+72Vch0b0NcQHUFYPAAMwi04/rOAcfHK84cRIDcxLS5nwGQBj5KKBtg3KZxyDbcyJE2Q9EYipyhLi
+xDD5wAP7GRep/vg55do6pU54O0hl5tDPIc3SPcyjoTkDyII9kNoTWW3AEeuIZtKrewF/tY6O/mZ1
+NTWRKVlxmICpjRbqbJeHjg++UCM7lgkAG3SOKxNWNhb1uE0bPADMGqJYZRLTNxDuXAJEmDJqM048
+wkpglxiYZ40bs5nxYRpj/Pgtc+yTY2hrwoHBPI0hw8xhZh5aiiMtJiswUZPFkriUxrpzTao/uHwG
+xpbLe31nJqXgfSi/NL/Ddv31R6zmlBKW7SCdCq+FiWsVWOyJ9/69jjgpqXbfNDdReeT+5UD0DNXy
+ud/yECcqEH/xYp3ej+gI7zlFiR/XK/30+LH3TvQuHOtg9wFWZxiyaB5ShgGsrImd30VZUphThmiK
+RNsS3rA0hzdte1zpEzYF1nfmLNPunbKzVAWXSWrIk8mV40QOxZw6XJQ5UR6Wg3MJL9DLiOmbS4Co
+TkgNyxGA2NjXzfo/P/vRg8H4rFINTRRD/LjmxeaGRlwc9arKBiAXZTpKzOh5yF4oIYn9tClCppK1
+WJJseuIISiJw3hqTijmofU4bk2lKAD0HvqEiY9OplCDBaW5yjAkHEDLM9JZrzEmWw/DVI4PUbwCx
+QUpkYlhKg4z/JatdDPMzvoRUp3SPVjxwMoX1ajv2+rXN7WKphC3J7le7vK6sncglrPxT2BbdYV9I
+khnmQuwdLowpFpXbo14TUf4sR1lc0lPjxO593VaH7rW4KELByR2PIMWYUsIaOsdQAocf4NQo62/L
+8fnOgcjQKrTFiAWA2I8zh0kwSh/mu/79i4camBeXa51gpA8TdUOTHXYRNmQ1wzOGLDotYm8Nk8Es
+i7EpKNvkDlmmbiRcw4g4MOUpbCjrqNTOhhPGhAuMoLXxIaQYp6xL5UCfcCl2Tjdkwjh3Y2gv071M
+suxhgaoFYHEmzZSACM7Z4kS90P/vv/7TR4Px2aV6iB/lJ10GyKKDmfuwU88lynAqnSx3kW2b1PMQ
+Flroj3uj7hyUVU/4DjBVp48PGWuQ48UyXVFtE4CE09MlEML74WyyPhmUsGEsFMa5yqxTqYQYcReI
+7K+5SG03hwf9zk9/+bcvxZB9CjnSAfa6iNo65rrKMgHLcILDOottH6hVYBWBSvbY+rP1hl6ypd0E
+ZVWGu+pjsomkGyGGIUn12J/SbNtfV2TWMUOu7o8OQqMLjvcQQhcfTQYd3b6eCwKwjBMzldTdg7Gh
+JruP0EuKde211G7gdiCimZkBsWUgCm5PrPgHl5z3PZl+OXaMhsYc9jE5bGDIUn2mRDpCVcdYjXRI
+rOqxs+Say4TZwzRelZkovG7pC2ZY97RmwrVjR1lT5T6v+jwN1HcCfGMjm67P68HYpMow0r5FVOMg
+LtbxKgXY0GTDSrA+TzkzY/iRXfMaI9IOEJkvl4XNCeZfysikRlwvM6UcZDI1nofE0lQyNunwmLmR
+nKSvGhBzcet/R2cH1nWicZkCafBA4+Pbx6aJeXNt2oZTE8XaUBwNDTOsW63b29hnMGK2SoKnbNyk
+YMmfJ47Zm2enQCxngMgPaMB5VQbmIQypMaQy5BJLvZP5ntDYYBzZJiypo7aOOkWfTl8SpxG3FA2y
+ZcV4LrFmqjCZydl0MXn93o1NeNLjmFmQmIeqjXe8e8w4Y8MCF5JuZMNNl4yEvPdxK0aMQHwQqZ0D
+44tJ9aWAxLwhr3FlScamuGzLHN467zuvK1xpAlu3HUEJwzgI51dsxecRn4EzBYoXydVsbfYt8BGu
+UlXiIrJoWvZASMmkZFmeOWYxJjp/0iYQH9qWeDagfkkjs2VqJBFtxYzVsIirGIxN38qad6swGBoV
+VoMjH0TFl3irkMSubnas6tJ0KTh15ZPJnR6z2M5sAfi4tqIk2S0o9gS5d8mEZdgCXaJBsUXjrc8x
+rq89AaI17lr6ZgTiwoo/eMh3vkSmX5wdM0Oy9D6QTKKjB/EQZZvf2UD8yJIVWFLSkDbHdB+/UAJT
+FlsQUIDZZ7/LjOldEekiku5nuvjC43GxGGA2nLonp4EMgCUxYeLOIMlbbJhlmRIQOaZvSlqa+pvH
+EE55K+yIDKlhWi0+Fec63Z4+dwFL6jQlmgZyDiylevsZsJ6PrsqMWSJr2rGtqSC9tw4MlbiaVEvX
+IqVVqHYBaKkB9q75iSTjOoV7bLgRH4YJJDga4B889NxeamBeBTsGhgyVmlJyHFlhxOEWSxaySTZX
+lq2xjwFjSsvAKTADY2KeEyondeJmeGOOxgnzDXKNy2VgUpxg7WmfXyrFhBsg5B02PBMf4vrVPMFL
+uQkzvjZ2hFw0CVOG5LjEhqts88iSFu+VtNxuYMqUNA9s6bGlvQswoh3USvPjvAXG2UNtYmgoTXtS
+EgALxpNJjjMIcdYyTdnA4u4yqWjk3VYmC8Y/kRUfmtp5New4qWWvQ1plahGNbYiAJTEFVMkXLoSp
+SSJT6nxmE7bsJ9vqzjwRYOpJ8YfXpMf40aZNCStiK/h0wqYEUl9c8zwIe/OJbAC5Q1ixi2Aa5H0g
+licM7KOHbHxix49fGyChGKwsGeJIZcmaYkmN+w5CqJkplRlmbImxYENWncWEj6kFbkAYVgww9gtS
+PmFBGBq8C0KMDducDTfjw2uw4oOzDi9dlTlbrSnWnSLphj47T7NldkPlZg3Qv5VRdtaUGpbYZZ02
+rld+Su7GxmUwOL/ShimSzQkU7zgEVO+4bSyk+PvrtnlfZK7u3tFdQreZtqOZOfmWveULKykcGmIJ
+x7cwj475aqy4ZkMe+oK/86N/tvz4g/KKbzyJBtlbwYoZHAi3GlBsvkpx8cmGj0HjKkUio0vkh8v2
+1GSTjlwe1hgsNm1dlmRjQU0tNen4kTHpJuM2nDUsJUzIsGfZUIH4VLKix7zotcr1lrlRw4LSfZBZ
+fA4gyVUk+EBFp3aOwCTPKVICImFBMD7+NMYf42Rf/gwk2FaS5eGiMRCWMpgTcMlRksv52PBq8vyU
+4sCrletsblRyZtJ9hK5qjY+SfJuEH2HMMekCA1mQZSA+zip29M7rcsQGip07bp/eh9sovybBFGR4
+dcarFH/L3tSA5gRmRJtKcsOo4zJz++TbUxolvnnt7Ig5SV36SsuJ6rq1LY0wQwJL8/ZWs/7aKqtn
+E6yuVqN3GNaT1smBrE/rwh3H1jPO6g3yy4kBWxiDEkyJyUI2J9kllwvZ8Fry/CSZfktyPZNu+d0c
+MMX0TZEKjUl4STKOecSKgeae3NBDr6J4myW/m893OAWgSnGBSaCuCMKryfOTZPotyfVMuhmlCuQb
+3XeavDPI+HcTOde7yrpOZuq9jQ+4F5Pb4u/ln5HlF/ZnkOGW3DHKsT4HvaMPzYde9fxfo5/xm7fE
+jqF1IMl3MaaU3kWOc8OjWz54Ij0Qn8p6SdnyKRPQ9jzzM4JskwYKdMPp74JJ+ThR/OOZ8BbyfBWZ
+fqtyvZc0L+DAccnhLOUo4bqtNmDwhQdalom5aFw1TmOCygxSHCRYR9DkDh9+IgJvBcSrgfF9ACSC
+Eg9MBCYetJH0DiMYQwtPpfOHu40Lg4dZJY5TGNGQgxwAeB0Q3gyIVwXj+wLIS4GZDx6dV2UD697t
+eBYuoQ8nLJZ+QwDexLBc1cC8dUNzLrZkvClrxRln06yzBAU9vxfLbarR4DLe1YDIAiOTe3PzUZIJ
+8dzgZL+veLvp+b3FgKxv3hd2nJoeyBMx5O62h77M5OfsSr9TqWbm+fPMvBVrXvO83pps6BZv+j7J
+9YMOIo06/NRy4Cw/9QzAe3Yg3gyMHyIgLz7AtBM4Jvbl1/EVvnmu8Itu+eZ3QL752zfP6QPo1h9w
+B+QdiK8GjHdA3oH4qsAIgCx3UN6B+OJgvLPk6wfh8s9L5orpJT70Dsg7G74aMN4BeQfiqwLjPY68
+A/FVgfHOkh9ufPhqwXgH5IfLhq8SjHfZ/jDZ8NWC8Q7KD48NXz0Y79L94bDhmwHjnSU/DBC+GTDe
+Qfn+g/DNgfEOyvcXhG8WjHdQvn8gfPNgnIDyQwGmAe99GgD3XoDxAwLmN+8jAN9bML6HwHxvWfCD
+AuMbBWYA3IcAwA8OjDvAfEmADkD70MD3wYPxAQB9Klh3gfWhA+8OxtuB9Q62++1+e59u/1+AAQDL
+35glpO9LmwAAAABJRU5ErkJggg==" transform="matrix(0.24 0 0 0.24 15.3145 17.2417)">
+	</image>
+	<g>
+		<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="31.5752" y1="39.6914" x2="26.3417" y2="49.0839">
+			<stop  offset="0" style="stop-color:#FFFFFF"/>
+			<stop  offset="1" style="stop-color:#85BEDF"/>
+		</linearGradient>
+		<path fill="url(#SVGID_3_)" d="M32.792,44.485c-0.88-0.377-2.303-1.005-2.93-1.8c-0.461-0.545-0.419-0.545-1.131-0.796
+			c-0.587-0.167-0.963-0.502-1.633-0.585c-0.502-0.043-2.51-0.545-2.386,0.167l-0.042-0.167c-0.25,0.795-0.628,1.464-1.046,2.218
+			c-0.294,0.544-0.209,0.712-0.042,1.298c0.293,1.088,0.419,1.172,1.298,1.632c2.511,1.381-0.292,5.4,1.801,6.571
+			c0.333,0.21,0.752,0.336,1.087,0.461c0.419-0.586,0.628-0.963,1.214-1.339c0.377-0.21,0.629-0.293,0.88-0.671
+			c0.333-0.417,0.209-0.837,0.418-1.255c0.293-0.586,1.088-0.42,1.549-0.838c0.586-0.544,0.627-1.256,0.879-1.883
+			c0.293-0.67,1.172-1.004,1.423-1.634C34.425,45.029,33.419,44.736,32.792,44.485z"/>
+		<path fill="#FFFFFF" d="M40.912,28.37c0,0.418-0.503,0.67-0.293,1.047c0.419-0.503,0.712-0.754,1.382-0.837
+			c-0.168-0.502-0.712-0.837-0.837-1.339c-0.126-0.377,0-0.88-0.545-0.754l0.125,0.125c-0.627-0.125-0.335,0.671-0.21,0.963
+			C40.619,27.784,40.912,28.202,40.912,28.37z"/>
+		<path fill="#FFFFFF" d="M39.907,27.532c0.032,0.048,0.063,0.11,0.095,0.181c0.024-0.057,0.049-0.116,0.073-0.181H39.907z"/>
+		<path fill="#FFFFFF" d="M40.002,27.713c-0.161,0.353-0.357,0.595-0.429,0.992C40.303,29.07,40.205,28.192,40.002,27.713z"/>
+		<path fill="#FFFFFF" d="M37.563,23.724l0.083-0.126c-0.167,0.042-0.46,0.042-0.669,0.084c-0.294,0.921,0.669,1.046,1.214,0.628
+			C39.112,23.598,38.15,23.263,37.563,23.724z"/>
+		<path fill="#FFFFFF" d="M39.237,35.988c-0.078-0.04-0.084-0.042-0.156-0.078c-0.003,0.011-0.053,0.036-0.053,0.036
+			c0.116,0.033,0.195,0.078,0.243,0.133c0.003-0.003,0.006-0.005,0.009-0.007L39.237,35.988z"/>
+		<path fill="#FFFFFF" d="M43.514,19.509c-0.065-0.071-0.138-0.145-0.216-0.222C43.365,19.369,43.438,19.44,43.514,19.509z"/>
+		<path fill="#FFFFFF" d="M45.6,24.645c0.006-0.03,0.011-0.06,0.017-0.09c-0.047,0.003-0.094,0.006-0.142,0.006L45.6,24.645z"/>
+		<path fill="#FFFFFF" d="M39.069,35.904c0.005,0.002,0.008,0.004,0.012,0.006C39.083,35.907,39.079,35.904,39.069,35.904z"/>
+		<path fill="#FFFFFF" d="M39.231,36.114c0.021,0,0.045,0,0.066,0c-0.006-0.013-0.017-0.024-0.026-0.036
+			C39.246,36.095,39.183,36.12,39.231,36.114z"/>
+		<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="26.373" y1="27.4229" x2="16.9086" y2="38.422">
+			<stop  offset="0" style="stop-color:#FFFFFF"/>
+			<stop  offset="1" style="stop-color:#85BEDF"/>
+		</linearGradient>
+		<path fill="url(#SVGID_4_)" d="M23.835,41.346l0.167,0.167c0.125-0.125-0.629-0.502-0.796-0.711
+			c-0.335-0.503-0.041-0.879,0.042-1.548c-0.377,0.04-0.754,0.208-1.174,0.208c0.128-0.251,0.797-1.004,0.546-1.298
+			c-0.335-0.292-1.214,0.796-1.592,0.796c-0.209-0.712-0.418-1.926,0.127-2.512c0.335-0.376,1.13-0.628,1.591-0.46
+			c0.627,0.209,0.585,0.628,0.711,1.172c0.545-0.585,0.293-1.506,0.628-2.135c0.209-0.418,0.755-0.46,0.796-0.962l-0.085,0.084
+			c0.671-0.67,1.258-1.381,2.01-1.967c0.628-0.502,1.506-1.005,1.926-1.675c-0.544-0.083-1.048-0.042-0.587-0.711
+			c0.419-0.67,1.467-0.209,1.591-0.837c0.127-0.586-0.836-1.256-1.004-1.759c-0.168-0.417-0.335-0.962-0.42-1.423
+			c-0.208,0.21-0.334,0.502-0.543,0.712c-0.335-0.585-0.085-0.837-0.795-0.712c-0.419,0.042-0.837,0.335-0.963,0.753
+			c-0.166,0.503,0.167,1.047,0,1.55c-0.125,0.418-0.587,1.045-0.963,1.213c-0.125-0.459,0.251-0.921,0.126-1.381
+			c-0.712,0.042-0.921-0.335-1.466-0.669l0.168-0.084c-0.251,0.167-0.628-0.418-0.921-0.586c0.502-0.669,1.214-1.172,1.758-1.8
+			c0.419,0.795,1.089-1.13,1.424-1.465c0.25-0.293,1.173-0.585,1.424-0.167c0.291,0.502-0.419,1.046-0.67,1.382
+			c0.459,0,0.961,0.083,1.338,0.334c0.378-0.292,0.879-0.753,1.089-1.214c-0.335-0.208-0.629-0.418-0.879-0.712
+			c0.25-0.501,0.194-1.154-0.325-1.045c0.084-0.051,0.162-0.108,0.242-0.168c-0.964-0.293-1.298,0.335-1.09-0.837
+			c0.084-0.544,0.21-0.879,0.67-1.381l-0.125-0.042c0.251-0.251,0.46-0.586,0.628-0.879c-0.042,0-0.168,0-0.21,0
+			c0.042-0.183,0.003-0.333-0.098-0.456c-7.169,2.409-12.423,8.983-12.896,16.845c1.2-0.378,1.926,1.715,2.32,2.697
+			c-0.127-0.46-0.209-0.962-0.419-1.38c0.586,0.67,1.256,1.046,1.34,1.967c0.085,0.586-0.167,0.545,0.502,0.795
+			c0.503,0.168,1.047,0.125,1.507,0.336C21.406,39.714,22.829,41.555,23.835,41.346z"/>
+		<path fill="#FFFFFF" d="M36.559,20.793c0.083-0.167,0.754-0.292,0.964-0.335c-0.043-0.668-0.336-1.381-0.127-1.967
+			c0.101-0.301,0.337-0.69,0.607-0.974c-0.321-0.066-0.644-0.123-0.971-0.172l-0.351,0.044l0.33-0.047
+			c-0.922-0.138-1.866-0.21-2.828-0.21c-1.273,0-2.517,0.126-3.719,0.365c-0.143,0.358-0.353,0.826-0.353,0.826l0.112-0.017
+			c-0.407,0.688-1.621,0.729-1.661,1.565c0.629,0.083,1.299-0.168,1.926-0.042c0.503,0.795,0.711,1.423,0.252,2.302
+			c0.292,0.335,0.668,0.043,1.005,0.084c-0.086,0.711-0.754,1.255-0.461,2.051c0.083,0.293,0.292,0.962,0.418,1.213
+			c0.251,0.377,0.378,0.293,0.838,0.461c0.46-0.879,0.375-2.008,1.339-2.511c0.629-0.293,1.382-0.335,1.925-0.671
+			c0.377-0.25,1.047-0.752,1.047-1.255C36.852,21.212,36.433,21.128,36.559,20.793z"/>
+		<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="43.9824" y1="31.7183" x2="48.7282" y2="46.2283">
+			<stop  offset="0" style="stop-color:#FFFFFF"/>
+			<stop  offset="1" style="stop-color:#85BEDF"/>
+		</linearGradient>
+		<path fill="url(#SVGID_5_)" d="M43.951,19.836c0.021,0.026,0.04,0.052,0.058,0.078c-0.067-0.057-0.138-0.111-0.203-0.165
+			c-0.052-0.03-0.104-0.062-0.154-0.092c0.442,0.503,0.608,0.906,0.608,1.721c-0.251-0.084-0.459-0.167-0.668-0.292
+			c-0.253,0.879-0.378,1.548,0.082,2.385c-0.123,0.409-0.482,0.938-0.383,1.39c-0.238,0.473-0.488,1.238-0.369,1.708
+			c1.004-0.837,0.92,0.042,1.59,0.586c0.208-0.376,0.376-0.795,0.628-1.171c0.125-0.168,0.377-0.042,0.419-0.419
+			c0-0.292-0.378-0.335-0.419-0.543c-0.083-0.419,0.21-2.177,0.712-2.302c-0.08,0.598-0.124,1.233-0.235,1.835
+			c0.152-0.013,0.305-0.041,0.455-0.071c0.003,0.257-0.189,0.646,0.062,0.923c0.441,0.484,1.11-0.089,1.565,0.366
+			c-0.224,0.369-0.342,0.184-0.666,0.251c-0.36,0.075-0.4,0.236-0.543,0.62c-0.158-0.378-0.533-0.796-0.807-0.243
+			c-0.194,0.394,0.052,1.048-0.344,1.332c-0.335,0.239-1.232,0.334-1.489-0.034c-0.243-0.35-0.028-0.883-0.334-1.209
+			c-0.063,0.342-0.269,0.658-0.228,1.001c0.036,0.318,0.303,0.561,0.17,0.874c-0.272,0-0.617,0.02-0.819,0.186
+			c-0.167,0.135-0.171,0.391-0.428,0.493c-0.227,0.089-0.582-0.045-0.767,0.163c-0.091,0.101-0.11,0.48-0.162,0.622
+			c-0.233,0.029-0.521,0.057-0.729,0.144c0.095,0.507,0.824,0.659,0.777,1.246c-0.028,0.359-0.169,0.348-0.504,0.295
+			c-0.361-0.058-0.765-0.082-1.122-0.154c-0.013,0.745,0.426,1.229,0.041,1.983c0.132,0.061,0.247-0.039,0.361,0.01
+			c0.088,0.037,0.162,0.147,0.218,0.169c0.228,0.09,0.404,0.137,0.67,0.092c0.28-0.048,0.396-0.13,0.547-0.342
+			c0.054-0.077-0.016-0.214,0.068-0.307c0.08-0.086,0.214-0.075,0.307-0.148c0.365-0.282,0.346-0.97,0.719-1.213
+			c0.062-0.039,0.465-0.025,0.62-0.083c0.221-0.082,0.337-0.053,0.495-0.214c0.124,0.476,0.399,0.861,0.76,1.21
+			c0.359,0.349,0.818,0.713,0.046,0.845c0.247,0.33,0.323,0.449,0.614,0.067c0.215-0.283,0.339-0.564,0.602-0.788
+			c-0.479-0.45-0.898-1.005-1.243-1.582c0.501-0.494,1.635,1.117,1.656,1.541c0.024,0.464-0.232,0.661,0.241,0.877
+			c0.641,0.293,0.413-0.452,0.436-0.917c0.384,0.212,0.77-0.176,1.125-0.046c0.182,0.065,0.213,0.283,0.334,0.411
+			c0.192,0.206,0.123,0.16,0.333,0.22c0.425,0.122,0.624,0.003,0.756,0.543c0.08,0.329,0.191,0.762,0.053,1.088
+			c-0.206,0.483-0.866,1.12-1.344,1.29c-0.493,0.176-0.941-0.228-1.384-0.413c-0.709-0.296-1.421-0.555-2.112-0.93
+			c-0.679-0.366-0.541-0.11-1.042,0.146c-0.53,0.271-1.057,0.682-1.624,0.87c-0.762,0.254-1.834,0.379-2.659,0.377
+			c0.192,0.31-0.392,0.865-0.562,1.171c-0.672,1.046-1.047,1.632-0.713,2.888c0.168,0.628,0.378,1.172,0.713,1.716
+			c0.167,0.251,0.292,0.628,0.585,0.796c0.376,0.293,0.336,0.125,0.838-0.043c0.544-0.167,1.465-0.292,2.051-0.125
+			c0.208,0.043,0.293,0.251,0.501,0.293c0.085,0.042,0.671,0.084,0.712,0.125c0,0,0,0,0.043,0c0.126,0.545-0.168,0.963-0.168,1.466
+			c-0.042,0.545,0.084,0.46,0.294,0.963c0.376,0.879,0.082,1.968-0.21,2.805c-0.336,0.963-0.084,1.631,0,2.637
+			c0.047,0.563,0.345,1.089,0.53,1.611c2.281-1.364,4.252-3.192,5.782-5.357c-0.259-0.639-0.451-1.269-0.16-1.779
+			c0.628-1.13,2.009-1.632,2.302-2.972c0.085-0.461,0.043-0.921,0.21-1.339c0.11-0.369,0.351-0.551,0.654-0.668
+			c0.304-1.347,0.465-2.748,0.465-4.187C53.165,29.205,49.472,23.157,43.951,19.836z M46.019,24.31
+			c0.023,0.025,0.037,0.056,0.045,0.089L46.019,24.31z"/>
+	</g>
+	<circle fill="none" stroke="#1996CE" stroke-width="1.5" stroke-miterlimit="10" cx="34.183" cy="36.11" r="19.373"/>
+</g>
+<g>
+	<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="16.4316" y1="53.8184" x2="8.4317" y2="81.3183">
+		<stop  offset="0" style="stop-color:#F6B93C"/>
+		<stop  offset="0.0341" style="stop-color:#F6B53A"/>
+		<stop  offset="0.2023" style="stop-color:#F3A633"/>
+		<stop  offset="0.393" style="stop-color:#F29C2E"/>
+		<stop  offset="0.6231" style="stop-color:#F1962B"/>
+		<stop  offset="1" style="stop-color:#F0942A"/>
+	</linearGradient>
+	<path fill="url(#SVGID_6_)" d="M18.332,64.434l8.522,8.555V47.726L2.087,48.128l7.428,7.456
+		c-4.562,5.018-20.488,25.244,6.841,37.215C16.355,92.799,1.005,78.075,18.332,64.434z"/>
+	<g>
+		<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="18.166" y1="53.9062" x2="-7.476" y2="104.3633">
+			<stop  offset="0" style="stop-color:#F9DB47"/>
+			<stop  offset="0.0261" style="stop-color:#F8D244"/>
+			<stop  offset="0.083" style="stop-color:#F6C33E"/>
+			<stop  offset="0.1499" style="stop-color:#F5B63A"/>
+			<stop  offset="0.2322" style="stop-color:#F3AE37"/>
+			<stop  offset="0.3465" style="stop-color:#F3A936"/>
+			<stop  offset="0.6503" style="stop-color:#F3A735"/>
+			<stop  offset="1" style="stop-color:#F0942A"/>
+		</linearGradient>
+		<path fill="url(#SVGID_7_)" d="M16.947,93.722l-3.636-2.05C6.836,88.019,2.152,82.652,1.09,77.667
+			c-1.997-9.371,5.227-18.565,8.425-22.083l-7.427-7.456l24.767-0.025v24.885l-8.522-8.554c-5.218,4.107-7.987,8.725-8.231,13.722
+			c-0.24,4.913,3.354,10.315,4.535,12.092L16.947,93.722z M6.826,50.052l4.104,4.121c0.754,0.754,0.782,1.966,0.064,2.756
+			c-2.991,3.29-9.754,11.856-7.949,20.321c0.744,3.49,3.565,7.238,7.646,10.323c-1.384-2.638-2.755-6.122-2.59-9.516
+			c0.273-5.602,3.299-10.713,8.993-15.195c0.767-0.607,1.962-0.536,2.655,0.162l5.104,5.122V50.055L6.826,50.052z"/>
+	</g>
+	<path fill="#7B5020" d="M18.661,80.746"/>
+	<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
+		M18.332,64.434l8.522,8.555V48.103L2.087,48.128l7.428,7.456c-4.562,5.018-20.488,25.244,6.841,37.215
+		C16.355,92.799,1.005,78.075,18.332,64.434z"/>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/createLinkPalette/PlayAudio.svg b/Sankore-3.1/resources/images/createLinkPalette/PlayAudio.svg
new file mode 100644
index 0000000..80f21dc
--- /dev/null
+++ b/Sankore-3.1/resources/images/createLinkPalette/PlayAudio.svg
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="96px" height="96px" viewBox="-10.836 -5.585 96 96" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g id="XMLID_2_">
+	<g>
+		<path fill="#FFFFFF" d="M51.119,0.75c-3.26,0-39.495,0-39.495,0v79h60c0,0,0-57.821,0-60.688c0-1.682-0.81-3.904-1.754-5.062
+			c-1.58-1.936-10.316-9.098-12.142-10.773C56.54,2.138,52.026,0.75,51.119,0.75z"/>
+		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="41.6235" y1="4.7002" x2="41.6235" y2="75.7998">
+			<stop  offset="0" style="stop-color:#F0F1F2"/>
+			<stop  offset="1" style="stop-color:#FAFDFD"/>
+		</linearGradient>
+		<path fill="url(#SVGID_1_)" d="M50.169,4.7c-2.935,0-35.546,0-35.546,0v71.1h54c0,0,0-52.039,0-54.619
+			c0-1.514-0.729-3.514-1.578-4.555c-1.423-1.743-9.285-8.188-10.928-9.696C55.048,5.949,50.986,4.7,50.169,4.7z"/>
+	</g>
+	<radialGradient id="SVGID_2_" cx="60.3052" cy="10.2793" r="16.1285" gradientUnits="userSpaceOnUse">
+		<stop  offset="0" style="stop-color:#D3D3D3"/>
+		<stop  offset="1" style="stop-color:#FAFDFD;stop-opacity:0"/>
+	</radialGradient>
+	<path fill="url(#SVGID_2_)" d="M46.048,4.628c0,0-9.017,6.213-2.155,14.081c6.862,7.869,11.963,10.418,17.65,9.242
+		c5.687-1.177,5.529-1.826,6.314-3.395s0.932-5.307,0.353-8.13c-0.533-2.598-7.11-7.148-10.026-9.238
+		C53.884,4.106,51.559,4.562,46.048,4.628z"/>
+	<path fill="#FFFFFF" d="M54.539,16.395c1.835,0,10.509-0.217,12.083,0.438c1.573,0.655,3.984,4.525,3.984,6.492v-8.531
+		L50.804,1.287c0,0,2.41,2.174,3.067,4.797C54.527,8.706,54.539,16.395,54.539,16.395z"/>
+	<path fill="none" stroke="#A1A9AD" stroke-width="1.5" stroke-linejoin="round" stroke-miterlimit="10" d="M52.405,0.75
+		c-3.26,0-40.781,0-40.781,0v79h60c0,0,0-57.383,0-60.25c0-0.764-0.073-3.548-1.018-4.706c-1.58-1.936-11.759-10.74-13.584-12.415
+		C55.833,1.29,53.312,0.75,52.405,0.75z"/>
+</g>
+<path fill="#9FC23B" d="M36.45,21.794l-6.531,5.611h-4.78c-0.845,0-1.534,0.69-1.534,1.534v7.357c0,0.844,0.689,1.534,1.534,1.534
+	h4.288l7.023,6.034c0.447,0.385,0.814,0.217,0.814-0.375V22.169C37.264,21.578,36.897,21.41,36.45,21.794z"/>
+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="30.4341" y1="44.0723" x2="30.4341" y2="21.5889">
+	<stop  offset="0" style="stop-color:#85A53D"/>
+	<stop  offset="0.1032" style="stop-color:#8FB03D"/>
+	<stop  offset="0.2503" style="stop-color:#98BA3C"/>
+	<stop  offset="0.4552" style="stop-color:#9DC13B"/>
+	<stop  offset="1" style="stop-color:#9FC23B"/>
+</linearGradient>
+<path fill="url(#SVGID_3_)" d="M36.45,21.794l-6.531,5.611h-4.78c-0.845,0-1.534,0.69-1.534,1.534v7.357
+	c0,0.844,0.689,1.534,1.534,1.534h4.288l7.023,6.034c0.447,0.385,0.814,0.217,0.814-0.375V22.169
+	C37.264,21.578,36.897,21.41,36.45,21.794z"/>
+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="46.7632" y1="32.5791" x2="55.9878" y2="32.5791">
+	<stop  offset="0" style="stop-color:#85A53D"/>
+	<stop  offset="0.1032" style="stop-color:#8FB03D"/>
+	<stop  offset="0.2503" style="stop-color:#98BA3C"/>
+	<stop  offset="0.4552" style="stop-color:#9DC13B"/>
+	<stop  offset="1" style="stop-color:#9FC23B"/>
+</linearGradient>
+<path fill="url(#SVGID_4_)" d="M49.823,17.39c-0.113-0.113-0.266-0.178-0.426-0.179c-0.188-0.009-0.312,0.062-0.426,0.174
+	l-1.711,1.689c-0.236,0.233-0.238,0.614-0.006,0.851c3.305,3.347,5.126,7.779,5.126,12.479c0,4.86-1.93,9.399-5.433,12.78
+	c-0.239,0.23-0.246,0.611-0.016,0.85l1.67,1.73c0.111,0.115,0.262,0.182,0.423,0.184c0.003,0,0.007,0,0.011,0
+	c0.155,0,0.305-0.06,0.417-0.168c4.214-4.066,6.535-9.527,6.535-15.376C55.988,26.748,53.797,21.416,49.823,17.39z"/>
+<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="42.52" y1="32.5273" x2="49.8755" y2="32.5273">
+	<stop  offset="0" style="stop-color:#85A53D"/>
+	<stop  offset="0.1032" style="stop-color:#8FB03D"/>
+	<stop  offset="0.2503" style="stop-color:#98BA3C"/>
+	<stop  offset="0.4552" style="stop-color:#9DC13B"/>
+	<stop  offset="1" style="stop-color:#9FC23B"/>
+</linearGradient>
+<path fill="url(#SVGID_5_)" d="M45.473,21.685c-0.112-0.114-0.266-0.178-0.425-0.179c-0.135-0.007-0.312,0.061-0.427,0.173
+	l-1.711,1.69c-0.235,0.233-0.238,0.614-0.005,0.85c2.167,2.196,3.36,5.103,3.36,8.185c0,3.188-1.265,6.165-3.562,8.383
+	c-0.114,0.11-0.18,0.263-0.184,0.421c-0.003,0.16,0.059,0.314,0.168,0.429l1.67,1.73c0.111,0.114,0.263,0.181,0.423,0.184
+	c0.004,0,0.007,0,0.011,0c0.156,0,0.305-0.061,0.418-0.169c3.008-2.903,4.666-6.801,4.666-10.978
+	C49.875,28.366,48.312,24.559,45.473,21.685z"/>
+<g>
+	<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="22.1724" y1="88.7773" x2="22.1724" y2="45.9297">
+		<stop  offset="0" style="stop-color:#788A38"/>
+		<stop  offset="1" style="stop-color:#9FC23B"/>
+	</linearGradient>
+	<circle fill="url(#SVGID_6_)" cx="22.173" cy="67.354" r="21.423"/>
+	<circle fill="#8AA53C" cx="22.173" cy="67.354" r="19.281"/>
+</g>
+<image opacity="0.4" width="181" height="181" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALcAAAC3CAYAAABQbs+fAAAACXBIWXMAAC4jAAAuIwF4pT92AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAPcBJREFUeNrsfVuvLdl11hh1zmOf
+P8APWA04iZ0cwwPCDkkcJ7E7bXAiEoQQUhASr0hIvCAhhATiIgFSEiAg27hN++4EhzceSWK3u08c
+4wjERlw6ROIH7LzuOVhVNS/jOmvW2mvvs885a7W3z95r1bpUra+++sY3LhPhctt1++77n3ty/OdQ
+/iai8hv7e/09AdXn4XL/8R5at6WyfVq3J8z/plSfi8s26frPHP7W1eXI77/h5RDEt++9/5YE8grI
+4310YHBuj1L5e/2dgAN/voPa61B+lArQKZ8Y6ylBlPJz0/Xx/67K43UbxOuPvP63L6C/gHsUzG8L
+MB8BpYCsbyTBHTA4VeA6QKc0AHJ+P5X/MujTyv6Yrj/6x//OBewXcK+3//L+lxSYGyuDEBv+XxV0
+m2BvrE4MxBrk8kQo2yYB7PX3JE4EyvIFAa/SvP36vOs/9yf+7tUF3K/Q7ft/8GUO6OPveNh+Fhlw
+r9JCSxOttEmdAIp9iYaZnBa9ntp7CHZff2+vmzKz0xWt2v0I9L93dQH3S3j7/f/7VQVoOmDZdcRB
+bJMBMtfYRYoYHa51twI6VaCuoJUgb9p8BbaWKqkyd70a5Oc1dl+2LRLmCPK/f3UB90tw+69/+PUC
+6ick5AYCnrTrFuBQA0cVUFZm10CPQE5CXwP5LC9Z3JEpVZYYgGeQH9n8eH+idP0TH/iHVxdwv8Cg
+9mUHqr9wE86wob3rdgLsHJD8eUkAXYCcARWIgxcyKxdWj2SK0OHsyqBOhiO4aQb6MRD92J/8R1cX
+cD94UH+DgbrIEJQARm/XcUBvC6p2gE8W7ARGW0ugW5BXkJKSGgQSvF2ZkhTA2/aS7VcGpyxZfvID
+//jqAu4HC2qsoF7AjHwXPX7G7SNAPd+EBODJCTwl0FPA5lxWeKyfFIv3ZArT4dVt6QB8lijr49fH
+32c//frjP/BPry7gfmCgloDmYMb8P8vWw9g24KYaaBqwk7QBR0FOHHic6bl2pi2ZYk+CUYCn9bFF
+ruCR0T/+g//s6gLuewf1r1dQ4/yvAbQGswb6/nCShEViAU3sMQt06ZjEICcVeDLwMs87kimnA/xm
+AfayVXksa/Ij5K9/5gf/xdUF3PcO6gjQ/D404eN63/5dl2wdg9oFumFzC3IL8KTcktSVKX6guQ3w
+wt4EWaJQ4rr8CPI0OyzXn/ihX766gPtOgP0bM7CfGlAzoFZgI3aAjMzexl28TeSJlQL4xLZJTtJm
+G+SFNZtUSVWuuDJFgFACHHhA6QFc2YTr3zcV3NVhaZLlmlJ69skP/crVBdznBfWsp58cP+1Bg7oA
+ujH0DO7JAJmMDj/tVoCJFbz8XmIJH5JZRiFRApBzp0M8NzkyxdPhIwBPLKXPAe6wd/6Z77vJ3vjx
+gStCun7jg796dQH3OdgaMQQ1IkqGziD3wYzdXS6ETzQCcXIgr8FdpEFjcw16ULUmPot7MoXZfvPe
+UuoAXMiMJjt6AOfbMoDP+nxN7adnb3zwX11dwH1LtuZA1qAWLI2OS8L/Quc+72gQQNcAJOqA3WFq
+D+SsNkQD3LJ4cmWK0NkdgLs+uMlkcg2+BpiJJ4eKbGn6fMl2JqLrNz/0r68u4D6JrRmQNaiZFOF+
+ttXVyCxvaQFuCRUn4c4kBdfV/Jak5HBAzqv9rFRJQtokkkmZswB8vh+psnLSAWbV3yz4rPr7Zmmq
+mJ+/SBWgZ29+6NeuLuDuOiEo2bpKkGkD1BrQkwC35HPO2r0sJQUJmyY7yIBdanAbNPogl4/5LJ7I
+CQJPBDjf1sqVXfKkOSpEzz71w//m6gLukK3ngHGqDN0kyNSAjhiAumyrAY0BkLmrsqGweWmqC3gy
+enoU5DqNrjOUMcBZ7chugO8IMGWCJ4PasPfii88yZU4CvfnDn7m6gFvJEKmtPbbug1q4JwLQkwAy
+8uixexgokCK200Z03bh1JQC6MnB5jPVWkqnTTiHAuRdOzLtuPriyCVP+1wDcCzAj/V3kyU1xT+rz
+23tmFv+Rz1690uDWwC7B4QrsSTggK6Nr1i0nAudqC2jhe59sCJJNxdc+yKKhHaATuSAHI0d4Gp2z
+vAomhwDefHBRezL/jikDPRn9fbo8aSyfnzMnfp79+R/5d1evJLj/2x/+hwXYRV/PYOYyJGLroqlX
+pp5YAqfo7EkwOmi9jRG4Y81ts5NOuEm8qo8UyDkzS5kiMpCkZYLW4RHAtQZP0gpkJ02ov8METwrY
+2w0uF1aHnPSBBeCfv3qlwO0DW8oQT1svLJ1ZfKqwbaBucgNlXQmis7u4A9z+71ZygAkMeRKngC0F
+LM4BbnR4B+AkKgstkGGH/ubpeQn2m9HgcgF4fs4iUf7C07euXglwe1JEy5ACYMvWmMUJY+wKak+2
+gLEIEU/Zdd2IoINFR4MrOUKKpT0WF95zchItGwBvtSOyZiTpAHNh2hPkiQgubwbYewH53OL2XACO
+9wfqb+SuGHwSArsCdArYGoUmj0HtARoH7L+NoFLrbpIaG5S2DjvZXRbnqfbM2LsBnlRxlGZvEvrY
+lyc+e9vg8maUvef3XRj80x/+wtVLB+5cd/108bGxWH3jwJ7yfUKCKD2uZYwFNII0SfYXvdrCKa65
+wToh4nHbzFvkg5QpSbonIcBlaauVKHv1tzpBiKTGdoPLYfZemyGOGvznnr59bwCf7ukcerIf2JMB
+9nzfhFN9PhQGxyk/d6onxCpgmpbnVwDER/V54z+P2klVY4JJJJm8z1XtSf5azj61E3OSAfM0iews
+sjIDfazkCc/yBfl+Yr/rf4UFS5MtTGNBP4rPWv6eZLyDfB+X+54cP8DTr7/3i4eXBtwt8zg5yZce
+sCcD7AYgHXQ6oGaA7oJ56vyw7UA9D+BR/TwAsjxAADifeA3gx0cQGcCRnbRgAY4N4KBAKfx+mNgx
+1MeafQb++FIuqU8WaPc772M+Q/59KseapPWqXKvlCv71937h8MLLktxc8BRnrY0888iBggGwlb7G
+xhD8gKNwR1DWk2D7spD1SyI7p8dbg0kO4iEywaRxT4gCqdJkSuI6vF7uQWQgl79SsrbdLv0dyZNU
+5Y8fXN7s1975MSDptqzy6QZyK9uzn//wV65eSHDnADLrbH55OgXYjd0NW6tMpU7w2O4ccAbx4Ca0
+9WAeD+geyKVGBpl8ySAaAbj2wSP9XTUu8SaHJAJJ7Z6kdLNhDfLCKq69b3hbmtDeCUTWkn2um3Li
+XR8fe/bzf+prVy+ULGkBJByktmuX+HIpJBM8opIik2LsyQSU9dIv5AZWaVM99OXnUdaHXGqg+QFs
+27Tt235MVS+37Zt8aXKF7zv/rLUGXcgvYJKGXYHY5+fxitXfW/JEteAJO1Vrb62dPe2trqJch+u4
+oF426+stGPnKu58+vDDgzgNxnuYKP6OvQQQ+MuiZmLshAjIewFVdzfRtBOoKaA5mrhkHAklQgAf1
+WgrkPMDVVxNkXzx2AY45yIwAboNC/j6TDmZFPBAFl1OgvQHAOYnMfUx7Qy1ek9vIgHc1Go6/Pf3a
+u586PHhwN2Cv7WDgRuSTOcM9V4QDW8oQzgzsCzegbkCUYFYnDndV2M8EkzoB5O/29TnIJ8bmal+H
+AI418CzAoPIb+kBDk8kFVUzWglyPvYGRhmZv3HBOJHuDCizzZzflEHU/nhyv3k+/+p3zA/zxXTB2
+O6Q6gLR12AhorDELbHSAzUEEFRj1i2c1JO6BHUi8y4RP1tG8W6cQ22KdwaJj5QsiLypctOfyWY7b
+0/I71N+hWH/Z3y6lBPNeLeO3Kw+lfAVsn2EJ6JZ/sX76eftWcMXuX44pLdumcowosy2tjF6cknV/
+JTvzx8o3WH5rn2H+fMQOV7v6zPdTfs/yXaSFwel1WCZfPUzmliPMdG2I0dnQ2E3ZfW5NCdOsmk2n
+ckn1LtuoWdn+ZzUpmm0BAu+cWWL1/YEFxor1IwYvl3BrEyoHqHxloTyZNtgb++xtfO92TuuSYnD8
+cmELKixU88o0di8PvHZu9p7OyNoHz4vVWs/X2SiCRDQlrZNiahSeNzCN64EaDEj5fx2tHTxHAJ3v
+G5cqwPYPlYyKrkSAImht/nTT30KeQE+e6OCS95JOgfYGx/eWgSW/KtmkDtrPwKSJ/awM6riQ49Mv
+v/Pm4cGAe559TURVZ9szuzgOVo5McvccVyQANtfuHCwsAyhBzfUhzzg+yjr5kfnh20w4ST2qQO4m
+VxhL+wAHx0VRJ78IMPn7xewNyuf32RsC9rYxkgwsQQHZqbRUM2NW+QGSFPKHIuai5Kv5PDv96Zfe
++eThQWju4wdlrA1BENnkSA040GYfNYu1WhJ5CRPARttELP8F630TsBMj2i9ozQjorIAgvtZJ6vGi
+sed9pFVbT/O4hiJtievnFQA16FrkMGbJ2lTtup+z98xBnuo2XIQ3RUyB9mYn4aK989YEImtJ1D5T
+Of6UtTLpqzR/TpYmS+RAWWMXoK93sddgx2+uNJwZnPAs+nu6LWsfP9MBnc5zbv0ZKYDWojLpYtRt
+ZCPAnoSnKi1F5nkrqRL9x0+y9bmN0SfF5IbFNxhcBLm6CAzQ6F9do15weBp7gysjpJQEcxUG6XKw
+k+80aaJcE/6er52DvU8G97y2DJcjEIEXxWXHjj9zZ5GoAiBVVwJKnoCQHlMIal3/ASADQfGj4oAq
+pXSdigtw2AQ4IMZZVVf+gAguvQAxGlhhtffkxEJoJIb4XlAHltH0l+y46GASnFZANWeG2h4v+vtL
+73zi8FzAPcuRZbaI2ZEdrJ3BQ0aOoB9AigOiei4VW1cQajbViR0IfkSGkn2W+Qum8ikfmQTMCMAR
+rP4GJ0MIqtJwH3v7vndUdkConltkBiiHw7NzUTM+CNfEx4ecJSNlSqkkhdfvHdzf/4Mvzax9UALA
+XGK3WNu145QcAd4AjPqyb/soZVCpQc0BjOM/ODG2ndSQoIml+SMGBwVwUNYdjy1UHTqCCS5RAGIK
+nRNvRks/sATxHUbShMzQfifJw59Fso5efF4yliB/7aM8+enDvYF7XrvxGBA81XOxAcEHqXNRaswO
+IWtrna29WC5FDLDngI24pvMB3XzrR+pHuiM2FmBXDVI1Hw6Di/Y2XS6K6NRnePdB8De4zolxNhAd
+W/A0aSKObdCLSrq8FmSOA4yAMrq75E6evv3tnzrcF3Ov7WI4+YNuzMFt058025qkgMfaXI6gdUMa
+sDPAiCeImD8rAP3IJHambLdNQUreMHkIcD3fijErgtXTCOIqF7P35GpvEL63Ao3qRuKBpS9N2OM1
+G8kztuW9ADzbF9hjInGDOjeskl++7i7vdrI8mfax9hfXNRzNqgXObD6UZ7DJjCEIG8tnbTCVaaaO
+gXvcGtimuu6RALOoBNTFRazmhdegCCZEH+CTo491LQk/Xn4Fnb+vmr0rgTQBDvEkRAOvzlg6Pf9c
+ntxoEjpYbU1UV+1IdzPJHeju+iqvfeHbP3m4a+ZWy0l7kkQe5HbiogpKWFZMs7ZxE/hrgml1qlLE
+ALsVDDUNDjJVrCxCUTQFPsi1LdZncBWPoKNTN9jbLVlFNFlLG7BCYM955cayYsQEfkZ28Kobu6/b
+uhucRJDW3fUEeHK8//U7A/f33n/7CZUsJE7OODI7f88LJO0Z6gUj9uKOxg8GxeQgGhl0ncika7Fd
+TW31uM0YOiDvApzbcSDtR8PeEDgnIALLdjwYMHBAmoSuCS9R9dyUvu52V4kDUAkmEBWOAtCmrNb7
+dHBk748d7oq5n4jmA0eSoDnbbYpXfB+IzqWKszYI3zmUIybtDTL1juA6M1GjAndYkKW8m1TyWbxW
+65lTFI0TEWlveaKC02QAVg5uSJMIyh45gU4GnaC7Xb87nK7rfBp0Jxbs1t5D4P699/99HgYPnQOF
+trBGSBIwksTkzBCET6oDJjlZmxUUkdZzkwL2ZGuVlVuhQV2ZUCdNUJ/YOiGBY+wtpJi2yQJA4B5p
+4n0/blgX9hr2dXcwlE5kRMEJKuUx1XGFDSrF7bW3vvXjh3Mzt9LaYCw/L2gBBmxfkkCY2tXaHUyt
+iLLVtGNT6w0nO9/Etb8mPzOIuhezB3AmAUif6GqFB/QZE9RJrSWL6Bt1pQmYclRb2NTX3TCkux0y
+Q+Vd81dxp+qirsvykjn8Z3bqXj8buL/3/ltzIflB6jIfnJ7ejhIFbtIB7UAdQHTtsZi1o5MDhNSQ
+2TU1j0QVYXEW1wD36jXq5yWPvW0KGoU+lixordaARELfGVxLML4Gx9dnffODSl9AxUGl/Yz998Yj
+e//Y4VzMbZoQvLV3xYWOINZ9+lIsr9DheEo0gU+Ptfm8bnCBrSUIF5MuwAFMcqTpzslnb8c9ADVx
+Vh0W8IfiO186WUuNgpM6qnqMgEwYTeZiQSXoZA74hAe9baAfG5hjubzpsPae+lr780+IszaCw0Lc
+uPeOaenmUKl0x2dFT8N75TliYSbL2sYTrqwLQpr0BltYvY3Oh0Dn0zkzU8Q8QwtmcCfSBuyMKhZx
+6VSz88hEcgx0foA5ij8lGEa376EdE/5dDlw9Xvv87/zo4bbM/aT1RG4Fk0GIid4lNrzkuAwI0O+B
+BDc8QmVAoDwBN75YCXDdj+mxt3cCmHRFKAH8clQbJKL+XE62ciuB43fvBMkexzGxKqLnmMCQzMGg
+JgaMsTDunITg/u77n6usTXDizfFdqXcZ05In8FwRsH9Jw4j1oy8yfi3knnQAXhi+9AY2HD9OXd2t
+m5f9NPpWUIljokCRhHNMe740jrwDutc+K5vIZe/P/fZHD6cyd9Xa4Zm95ZQoLQw9JsGRL5fBmgIw
+WpXYYW1dEtoBuPlSexdk7Lgm+gsnlwv8Kx3C5tB83EM62jHpsCxCyKbb3BbVmPTdd/+EFfh8fTe4
+f/f/fGYpaR2kZ3NQyd1xGn2lge8JnR1G/4vGke/ZS57AJrhwx5Lb4esOD7TDweMy+j4Bk6Kv6Lu5
+Q6/GxGXjKJj2Y6uta+HWanTTbl/7VhbSaaMJYwzjHhzvfKfxV8NIPiGe4XPcdnv0Pa3dduCepcYx
+jjYokGp40lF67bO/9ZHDbZM4A4c28xjthxp26hluc1KM3OTiv96A+fPd8KTjcXe3/e+z4wmEu1+B
+QpfFfzbNBVUYJ3UMuJ/9738bShIZWNz3V35n8IY2Yvg0UBM9p+NAeKdH5dTtdlIbeF4vRS7aoN6P
+mNuRJEFcca+Hsf9c8l6p3knd56/zqPl2ajK3WrdGvwEN7g/d2XG4C1rf//VR9+UwDjRv9+Fe+0wg
+TaaHcBy1NLBwJfBQbJ9HzrFnr0EUnAExsPldJMC+DVYivazffV4JHtZ5gmc/q7ZdEwHu9/7Xr+1w
+Se5XOIyyHF/10YVwCPDg5PBYm/onlLmfbr/HPg7ouUAV7ywoOO/rTsOSpJCfd9lmHEnYYd2dF+Yu
+D2MMSODrO5L6uy5mOsKg1FZNMKxNIgCl7pXDWf3Mu6y/EIxNu65C96SbXGky7eYT8pmKNtGCY2RF
+HnOCAggFfE16OVMBZuLbEulVqsWPBbbP2mIZEbMNtLIJ9zhQeFwsgOjsep3O/5L3iG3clCaP7/Yc
+LyUy65fvzrvmWbo5sMsz8SoqRJUO5tchCbLagcJek6DOgsYMlrVMAmvZTp+ALLDHWJsUu5E6IfXJ
+SfKD0CDJBAZa//pHu3iRdhNo3486q7kwcPWozP3u//yXR72dDsM6Moq2oNV8efyOm69PVloY3WwB
+F7E3f426aFKPssVqvu3kaezPVg8LWZuadCLv6gNqpTN+pekxOG2DdejkoA42eldh6mIbN95zDJcn
+m5BGmkye3qaTzx7qikjc0CNkdCo5aoWBGMlhP2Kr50p5wgNKfRrYk4Mta+0Be4i17V7534+3vDbJ
+eCZPnMXw1WgcCxRzKcHtFck5XuOEm5Em08jRiDTu1nlKDN/ly+GMSk6ARV39SW7wptlbs7UGcdPb
+Zfk7tmYkNcuQB54a2GX99rZMnsfabEnr+gmTq7f9zKhlatKfS3n0hPK12hXC5VCAejUVjoH/3nsw
+MOTk0J0G0Y9HQRuFPiQOjrdxZhxsAVqb/Zy/1eXvnJPCdQb1sj3UYc4M2GVO9fq+S9FdWQuGae8C
+xmU+tXiNpsH9DpfogprE2pNtjcdR1vYkCdQZ4AQSsLClq5E24DUGxnYUNqQKRRjo5Q5GVP9IvDEg
+xyLN/c7/+BXjb3M2wI3DV7ctX05gB24fbJKXTPKkCdeoCfQqvlCZMdVtiDEYv8+xSJRE0avqgvP8
+9rkpL/g0xNoEG5rf19sROIjHOkS2ZiY89p7ad+xLogESZDLO+8aJBOlpvMkOXNoEOkE/OVZkydKY
+oJ7GAE7s7KXO2dl2DI2EIJfpjWQAJxFDUosKHZqXcZa+NAd4khrcgDwppZ3s/UQq7EvBScGAPcja
+IKSbF9jxYwruMfUl2SnKl1zQAVL8+EZI5qucbbbHnnkR30RQOQ3E1SaFHfrMrisgdTcE4DVJE/ON
+k8/ey+YZ4Mi/kaQYrwdy57+qxSVbR8DWcmSUtYktte0nSOS+9vR23+QgB3jxpb4+TrFDH9fcQOfK
+YeWU3mcaDUwta4ug8rERycZbtmDHejYTNPGsVRxJPTc/D5tWrjobpQdQTyAsnjbXg6mOLWvPSuuM
+aqJaJIdVqydo663wT5Q7UKitINMRXU4gCC6wCamur07G3+6xtuOSuJIk0ttUh0P1g0l+Qoy6bIEQ
+QqjL7JDS7kPZucDz31OEtrUbj9spSQZcWj6EowC4f80XH1VBIAfZJE4CalvlL3k9EcqCQ9Smwubf
++aJGBchtcSMG8GUB0ylwf3AjogiYjaR1uH62GNj7WduXJNa7j/S2Bxl1gjCnhNTJgCGkmdNU5u90
+YUZlrVVXy8Nm2DzqjQea+1tX//xJopuDVxmqg0rquABEse4G4s9IUvAQOPKDpIugAkx9caMa8KX2
+ylynUzIyxcqVZPS2veSW1ypA5jJGA1vtL9l93WbtUUnS09vUCcjIfA80ZAN6CRw/BsAgPsAtuzls
+GhlH+dSSN37mjtyiI4/VyPmiGASJnwhl6WSbPGlfHEkWIrYdJRPnC4DrILP616l61f0gTINjfc0m
+Q5grEgKbJLDL+/ITcIi1ByWJw24krhQ9vb2RI6DI6bKBofZetuUDX3acthNMtAn1GlRO20kUG1SS
+trJIXS4dFtjKBHrs3Q5uYgAlE8xIgKfGpJiyVU4W5BXoHPDqvgJoIsHW6zg8ngDyGFsCREsZIhpm
+bSCdric3wAbix4xc4vEv751gMu8nOrYpRTYgksvKNiaIMtUUBMJDrF2DyseUF7lHdva0BAkN6W6q
+ehmyHs6vwYqgygHDotMoz/IsQSaSVOgl2MyLjhLvqS8Aq+/X0jNU2ZGPc0D2WL6M4nbgJMCmNCYH
+JwUVghLYUo40AKZx1oZ2Yo9KEgkNfiL7enskmCRhEfpOiZSpXoDsJXBow7fbJ8AfI9u5FUxoVsJF
+5AejBJxcV6NhCASq/iix9WyFA8J2EjlzIXNCaGpfwrKy7hogFpNGA1x8FnKWq+BA7x1PMenL1n4Q
+eYBWGtsAW4FI+/eDrC2Pm75ca6DG12Jw9Da6DoYTTKpTyV1vgWTx2SqpSMXmVBM4FGW8YSSB5Lol
+pL7EBmLkO1UBDvUSPa8x0yxBZEzPQC5KWMvVAAP2BpFGr4xe934FNjLmRiwnxAR8OWjN4i3xHq3L
+gib49aQCOTXe28BO9bkJyIBa2oTjrL1+R2nMJSmefbcLKdbbqI4JgsSLB0YEcgUvcaJ0lDrK3LP/
++WC7de+xqamGJrU8v5tLE1YtzaQJNZ2G3FriNds+e0O+SsTyhAMcmDTBvMb6eljQHG5i5qwCenRF
+NGW1fhLJshsMAjuSI8ypGWbtbZdESxKjlYttp/V2cvQ2+BLGxmZ+1eSWU6KnELhB5IA0ecx3sEkJ
+z++20qTpctUowLN3CEK+FOdgTsYsB5xW0waRLFsWuUFrMqbOZFQAb8Dng8xJgLxJEQ70fuUMBJUx
+vhXKGJ2SkSI+sKPMLq9V2cPafUkiS4CTK0mi9kBR1Umeq9au8JS2gknHKSEKrd74OxmVJfwyw/QR
+8sskWpAjp3lqBfqNBnjSpbFNziuKE6U4G4gsmjb6WwOc6pqJhI1xETEAub5gjvaIUBDeMMDp3s1B
+YEdyRBmku1ibXJdkpB4F7Ilik8+h3tZ17qSbNYisU6KuYOhcTr0Gi80MZSn9RCSTpm6YlboKwcoN
+fp9k75wCV85JY/1InuTnCf3dAbhODW+A3MaO2E1YuFKEnKo5SuK+cWAnaa0SsRry27F2kySNoRPI
+OvZIkoArK9qJiIFfjrxnlaQ/jyV5JoJJCoPJU5wSVVuipAnxf4HVgbQKjfKFeYGlYO/8mmgu8iVl
+LuVJ+W4WMC95plaXLQBeGL0s6lTfEwOQy/gC3WoI6jK2yCyKg50aW4NMPo0Am7gUpNYEQVmWJSKh
+WfeyNhE49S78+9ySJMwpM/52sgV2OofRCT5tMEmdYHI3uMHROjyQQKaDrcbeZG8gpqEzYPNnTOjL
+E25DrhcX1ngACezakUyHQwTyetaY0q5ef6gOYGQwxUGtkhms4KsvRWTFJWmdbUCTVAZ3hLXjgn90
+XieSJF7rHoBNHlV454K2aICS2Tfq1ZTw2GMgoCSW8JBVe+AEjvzsSa2QybC31d6lElAGl/nwI8Fk
+qg4dtsQErZOm+dxcpggW1yCvQN8CdQBxXZzsgVqxNehsqqOxiQPbuCOpI0dUm9sGa8tA0q8arFfs
+AUkSEgI/sYW/rfW2znhGehtUSfEocyO4kW9L6ESBJQpmJ+VtInjp38yuJjs1g3JqLFhW482XZMwe
+NuUlsJuLUph9UkzsgBxYpkBfHHGk7NPOLfFA7bM1bACbdwslBUAwGUVTv3MSa8eSRH/OcUmiLctk
+LeZhve1Jm32J+MfEXF/Zn9detCZNYJS9WUtRqasmyPrakSfo629pBWINMkvqF8vvTKb4IMcWIIMC
++9aRIs8QJNFPqUFt2FoUjjENXk5sk8bPLgs59TihHDmNta0kAcaiLLu6Q5JYCzDS22lAb6vAdMft
+cau2KysL6MAys3e26Dz2JiCR0kZmPsfyhMxwnHQE71ROgOqySDWBWZrQ8rm0TFmbiwXIqQziQdbM
+MBl8D5QTSUALu88DtWVByCcqqUsxd0YksEEQybYcYQkjOoG1q4kgvSNi1YwwIEmoawGy91f+NpEq
+ZSaI/fQh5i5W4ESqJF7uxFrT8ciwN0EBW2pVtNhYuC0J7ckTGzis+rtcEUAmb1o8KIMNweIc5GCA
+vj45tfcdRDepevL2/gGoFVubCsCdwF6/+LRLjsixFiOs7UinMJAckCQ9C7Drb4Ort/d2hT6uQGG0
+v4e9V04sEmOPPOH6W6ZdE5bmMKbBl/cu2hvr7xGLVznN2FzWRCgAI25WqNlEiJ3rbUENIri0wE5K
+iiT2Sikf2/b9nCZHaJy1k5/G9wPJW0gSVdd+br3NMpTzkZhA5LND9p4c9uaVfVvyZAvgqxxZGZxr
+cGBVfVyHQwX8etVo+1DLcAFqep8oWN7OK3MFv+iEnDpjD9TguB8CoAFjkxdAUjsZtD7ncsQGkVKv
+72FtEgHvQCBpJIl2SWJJ0mxQcK4C+/W2CSjbB8GQvcsZPn8RS/0dFunBtZkjT44nT02P47qdDDA1
+wHEBeEm9r9dGrcOZxkaol+9Wy62LT0D49ojbPXpEcemlmCXogBqcqQHiSzfBIwd2UgFkav62kTk8
+RU1BEMm6hTQDR6y9K5D0JImuAuxLElGgRpbF9+htBu6idyZWP5IYC8sdxgxqqq5GYe2OPBGrnLQC
+I8wnAhmAZ1AvmcWpnj7VSVG+eQM5SrkCzO9mYRJn9bGbKt90Z7iQqiBU/aBChrDaE9JXQB/YtiLP
+BlpE3uVcgg858w6wdj+QlMybiCdu/CrAUUmi60l2a+7CksSKm5r2TqzcjrE3kx+xPCmBzdSuC5VI
+S1Vgq6DDEOAryBNOUofDFshBZVdR/C19we3KQDt436li7IAaBJO24yzT6p7lx1LxHZ2dMjOD8JcH
+gsjy+jTK2lvpdh5I6sRNkSR055JElrxCUuyNIkM21Whsquwy6+VYnnDfPAn7jRjAmwwp2ZmpA/AV
+0FO1xbZBXupKQNUFEsGOLKWvwT1ZEIOapHQAr1UsKY3dA7avs305sh1E7mNtL93us7YuGSARsCfX
+bTqHJBElr8SaCLRzYoPLtIB8W554+rtdBEpVH1SJwoNMAj4Qqw2uVCzeAXktMhLtZhSsKT4gTLyJ
+WkZXd0Bt2BrOAGzJzAT+97WyduoEkUky8h77j9SUWIwCSVU1CX7XzTkkiarnLsVNmWW1c+IFl648
+KVOepP7uAZxLFAlwWSDV6kk4i3dAriw+rFp5dCFuigupFKBhANQ+W/OGh5RfchvY7SqQgs54O5pZ
+sG03iNzD2v50A5+1ySSwgPyY5baSxIK71uKWs7e1fi2M2ZUnKT82iSCCarnqCMBJ2oTZRkHXa0Yl
+VTyQK6BXsOthvBbuobuq+xR5gZRJ0HugtmzdvuiWrPGKqgSwi/tBPkuLkRNEbpFS3/pTpbgb9p+U
+JOC7RiKQTEECDIyrdIokMeAG1tlerJsVxKx4KZQnPLnT2HvxrGfg4zbAVyQXH7ysIotMpkgWj0F+
+A6JFW5iA05Akoa40icc6joGap5sbW5uZJiGwGZjEMiaezg7cEUiyQSIMIpO5CvTtP9UcDeSydhRI
+eo0Jp67U8DhRqh3ocm5f8hM7rjzJBU2iJoQHmDAEcOSlrbVGJGJx8kFeVYYDdODlrirA3IQ5grvU
+nh7HMwJqwdaykIpEJ0+qDRkS2HzClQb2ts6WciS15FAYRJbXU+/Rsf9MQ/Mma5Pfmwmwl7Wvjz//
+vdSWXB+/t6sjTA68NYxKeptG5AlUwK/QWbtl1uCtAL8PcKjjGUBOmu2yuAV5S0kVNocamE6mQWFP
+UBkNa5ee9ziowdSMRP2UIILR1GFsEjUloGu2qRgAjhzRVYmBHCnARJFUiuy/fRlJMlcuOEVz/9Ev
+/dn/fLV83z/xgX8wI/0qsfFi9rIjB02CHtZeZ/utjyfFHtymSmaQZJIFVZRUoJSqvqwugrlUc1uJ
+6U1K4nf5Xxl5mezM7bxfert6Dx+jxiUCkfN5lAamoq2TyDpyfezWa28AW7OwN/CHfw4xWoItq0K6
+nzMIIokfvyxl+/Yfa8frsLYOJG+zeNTj8iY1zBqUJ8UFqQxf9TcPMKfaBznC4JVXlyuHMy+cij3I
+2ssQFJPzxIpn+dmAkmz7grdAYFB74plVfaaugaSuPSEnkUGSQCJgE6s9kVJHJmskcNnSKBQsnbIZ
+RCZTyNULJKO6bXLijVMDSQluaGcVVnehJ0+KPpxyAqfUTY8BHDLAsQadyOpFmkxpFiGfmXZTs55U
+Ss+w+dsYyg7s1InsdryD5I7sudwCtU7De2yZiJevQgfYOtOYulnIbTnSrizJvZp7ciSJ5/XsP68U
++JyszcCdaspk0dOVNKc6OarWbufqO6u/W/f5epXrARwzi7fAsSVZWjaTcrBLooAbs25E1YjMm4Ul
+0LdDRxwEcwxwEtH9OKhdts7Pl8DWbKs1thyx7AWQ5LFxnUPS5ErX0x4KIhNzbCTgQdi1d8faIv3e
+5AkpeZIYBCbh7WLue+QAr551CPB8ctTCrKkCoYB+tRIVi7sg5xV/yOaSWKBbaWK9kEiWoJE7INuD
+FKB54dc4qMGVITqlLu3CAWBDsllI3k0VuCNWjrAgEkaCSBAOS61NJ7WA1nlZuzolXHMf78Sr4wc9
+8PUb5WizbCtlkMrkCMkkTghwDt6JBRjryIamw9GyeBfkAHqqqxjAQ+VEUBrcHX5pzwF3tEPFsa6J
+kAmdYVC7bA2MYOh0YOsAcnEvErMtvWSNlSNVoZfAtltD4smRVF9D18KcibWrU1I9so//wD85gpuu
+iqOw7JjuwaMk3RERVacKcD78vbUqcRclqWKf5lYk7iJwt8R8ucxVYc5K4mtPKrdkdShu2I9yLLyf
+8ngqv6/Phfp6yXmd4iCoWo3A5eFuSVriCb2ddl3SCcDm4Gn6WwJbbacdoFsEkXSPDokjS7SPm3LQ
+d+RNlIVQLU3e2sdKo0DNRoYMfvz/nPGcRAVgY2sqk6V4sFkyl1wauUzOvA8xPAhUs6R0TDbbKJ3O
+HHc4Jnl1332mFql20nMBE4CzDn1bgsRxRVxgJ8OqntzxZqvUFSZcTzuJKbYRa4/72ufR2g64eaPv
+xIrmgaXeC5hLTcTEHJQY4GVQZetAx/XEqdIAhUzBUitGeqpUH+QrhjXQQYGd14nw1oUoZKShCkEN
+aADYALWWFwD+TG7tiBDLPMImsIW7YsZHyKtzzx2RnjYYT5+Eb/78WVuCe9HddNTd04FIzS7JgK4O
+B0yttLU28MYA58u1IbQyV63DUQG5sfgIyFubtgG6ATsYu5A2B/P47rdZKDaat8eYupYYOy1nNvWs
+67Zbw4GcS+gDmzOqkXahzk4m27ktR5yk0v2ytggmzRX5P33/b/6x4z9vrN72tDD2tEiH9d/GsGv3
+OdYumyn/Xdq8GhtPyLfB+lNS6WXbid2P/H1Y+py/vvxXujl615APPwHcYQF2GhbINp9BNObYrfQD
+V4K4y3+b1YqT2cbUpigpwt8nkczsCmDzkyPff1MzxOsqcYmaHFlf74YB/4a95k2VMYlpe/l+LX5K
+YqzF7tv/OwaTvxnIkmZcTZRMUd3qf0+i5LIUKKHL4NBsQmQ2IE0MWqnKklWm8PqRYhVilirgMvk6
+5gEEm2ugk1j5lSzoh6A9sha5BbSo8yYyrWqRBNHVdFhGPvA0PYBI0HD29oEdp/ZNtZ/R2amukGxO
+jJ4cIXJl111q7QDcrXMG+UHAxADemDQGONUWMtuRzqw5QrZOzbQWquWhxSBY3Ad5g6cGOqiOHGCv
+FQF2SJfEYA4AXSWI0dSwIUFYbyWptTdJp+YTO9Y9YFvLD8yissXP9nW2liM0IEfS3WcjjSQx4D7u
+7OJ3J6TDxOqAeWKlB/A2yBJrfXYd/s4zkUqHWxbPZbiAIcib58HZnAHdhImowD6SpaSuSolHf8Em
+S8vTizNXsl+8ZmvVIwlqgL3W4VLKKNmimhQasJOydjmwnRQ7+ZlIUYJLd8bawt+WtaD59okf+uXr
+43tdzb5uEjZPEkXuKYiyedRMwjdtUX7S3jLXiJREfUJyvOj1fW/Ya0r2Sfp5zOtOyfGmSXrYoReu
+fpJ5/KYOiRf6EvRnZ148nyfCs3+iAlJ1sC+P3dgqTVLViuy9kvGy278JZNdNS9ToxWO5zlYpdlEY
+lXKxnRdElhzK3TkkIXMDb9USxYATS9lyLa0ZfKozN0oHD9RgMqkuGhZU1qwkN+aQ+eJU9ThB09hC
+e4tptVy6gLrf09r7akvIXSXZkyoxS9th66S8az02WHfQAOhGYUANSN8V4SW9NjGkmyGolhu7OpvL
+Gp2JDK2/JKfb3o61XUkSgJuW+u7jmx9ujp/hEat2JTZaWAI8F0Kx+dt8VFodYs/88jJ6QXjdhKYJ
+oTyc2GOTWE8SmQDhtSVJwJbaEsBOcIgbooQ6oKdgXXQwnTt21WEAcCUIgF3QVbohGjAUNOW6wCZr
++RW5kZgzIk+WtKGzsztC++RIikofbilJjCyZb2988Fevcfa72SWEQMoFK1GUttNyhnRvX5LVYo5U
+qR3aLN3d0vw6VX/jXP5vRGqfAolQtvXS7+tr3IgyAbsNideJZcdNk1rO+vJy3Blvsripx1n611wG
+Nklnj7PWyDpJ4wO7NB+QsSB5p4+ns2N35L7kSMjclb1z69l6MGa/OjkMTsombA0JbSZJmfNXtud2
+oWZxyciayVE9npi1NwEPWPUak9bbtvJk5DD7aXgTOPJyToKYpdn0LCNBjBMysFgUDz7B0eMg63E4
+sG/yiecDW54cOo4SFX+iMIpvm84tR7qSpCs2/+P3/saS0FkhVxI6mGeasEROvs9N9GQg1pUNRAII
+RDKG/0w6UQMyYbM6MHxsGsqkDaKqGuEWIW7KkTF54vdM2oZWsllMPqaYPD1uJQg4l3TNjLaheAzY
+y5VwvnolDWyuxW/klUXo9Zs1yNUthqzYLqkr/xnkiJu42WRuUTuBrbhcMjgrT8WW6EEGOGLsW1YM
+rgMoSzDKtHgBaRpk8lo3ooC+fhmyhnsKVgwmpuv949BvViCKspSNwXGDpXmNPAEYthYd8e6k2GRn
+gDPXKhnHI9Xa8xvuyBhgxwVRbRtfZ/MA+L7lyDa4a2AJhwbw4/l7lBctyMS8CFNiZDgtOpGzeJMp
+hdVvmpvCFmGSwyu3QA4u0K00KYVado17GODw/qXTATXpaaYs7KSOa+KAemuFYc+/1uWtWl9jKT8u
+gaUrRZLS2EkBOrUAEvzEk2x2OLsc2ZQkmx7YN3/vrx+lCb5RajqQWh3JNBW5UuRHrkdZ7gNHpgCT
+JGylA157IqQKhHKlSA+ZdZR1JoAgHiMjT/bWljgMTn5xVFwGq1Y7g9JKB25jsJyJ0iy2otf9Ndib
+Bk+io0dlHsPgMQJ2UomaG5Fe1zrbqx05oxzZlCRd5uaVgoTToTS6TLnUMuV4cSLV9cLwImUKNLuQ
+afFWYpuEVPGYnKiBtPneDeiir9JZyzIKLk8BtwayBrMOOXWXDmdpcmflAfjrwScmaQIZ4qTggdgg
+Cz5i4iRgs7oRJ70eZiHPJ0c2WXvo2/3md//awt5FUsxAmirTHn+mhaPXIlgeaOYAstSYuCxeQT6x
+YqcC6ojJNaODy+hWbMiA8zY3Mguu2oSO7mbfZmnogto6IQB6/ANna/CsPpBzvInLmg6wQdyXRLCY
+yJtclWrXFU/o0D2y9jZzrwdwrfOm6VC6zlOt2ps///G3PH5KBJq5pgSpJGEcFoc2R602KCxv6TE5
+BzoJcFtGh44tCIzhTwF2UA0YuiYkAG0XgpKdOy6oDVt7VX1JMaYMHFOQeZR2H90JsOm8wB5i7eHr
+8je/+0uLLdi60zk7N4autiDrrim2n8/iENqGumwVMdLlyvITAxyQ2YJ2d/cyuO+ccGa2YNZ2YMzS
+MABq8LU12XQ7VhkCpp+Tp8hPBbYuzEoM3Heos4dZe5C5S3c8LN3xZfUFgiRS8WtgMS3rWU6Ug8TS
+juSweAN5kizO9Th3YRSblylZevUEUmDnKyiQlic7KrrJkSMYlM+Su6QIDLH0Fqi5DEmmfLSxdayv
+QfRg6gq/U4BNJBuz7xDYw6y9K6L6jd/9q2tSJ3fgtKaCFYxNh88Ltk75t0n0SLbkTXNUVhdkUtUA
+Kmmj3JViBSIr3BKQxV5hFA5ZgK7OHrECIeqv5IEl1JXhBEvny0Mf1BRoaxJuCLj6WmYdtcYmXee9
+A9hJtKa1vtB03gaEYdYeZu6mvWEe/3CAAswy04+mZaJqHZeWbuBmDjIXPxwNi5fvjGpRFCk97lUP
+cneFlcaUv4UjQ0qKEJMh0Ri18YWyYx/caRbmehytZShZOlgQlYPac0IEW0Pzrr3sJSWbQVQjKGA3
+Y6tmZzpp9PBZWXu3F/brz/5KZm/uhEysoWBiGre5KQhai6PS0JzJPU0u3RXN5hW4fKVgdaL4O3tK
+WNkbmOksWIQ2abHN0tABtUroZBAWkzHp2g9PhvAUummS2A/sJFrSzu6MnMTaO5mbaW/IWcsspJFW
+MFJuISNE5qbkamyhxbEtnecyudbk3F2RbF6A3haEUqAmvjIbOIHo3iZhT36gZWaBflLD6UFmdVWH
+zhCoHScEdIqcEpu7Ylc/k8CWMgWHge30fZ4f2LtZ+yTq+sZ7f7lpb0TgnfAg2sI0i69aHNl/cBKT
+czZn+pzRNQZ1JNYHZwmfoSOlMpJEHYWuRz5EgNYsDTtAvb5+UinytioD2SYDcAb7CDa/kQkaXS9i
+gJ1Ey1q6G2A/i2q2z8bcmYqXPstZe1MOBtd2fmLB3pRn0XEWxzxplEkVwl1Mbtm8AJ2vb8iaF9CO
+d7AMf1rm3V+uDzoDecYB7SdzFKgdtpaVgR0ZotaZbPr9wQF7vv3RKcA+Cdyf/vAXr7/x3l96lhe8
+PpTkTJMpGUYZ2EUHE7IES5UqoyBv6fg+0H2wF+NOlpXcIktJFISQ1JUxHqD5+jmkFoMaATV/Damt
+dX+rbEKWk6IAWnXfgwL2SXLkNhHVcvv6e79YEzs8iQMiYSOr+VriB6QEmTCUK4B2+4JNkeQRteGw
+Q1fjbei7A2RwNLQFdJlnLiw9kIPru6CuEgRUA2+w5J5o3pZN3eVESmrZP6Ak7EXdPX9HwD4piLyl
+LJHWICwLRZW6ZnRYHJtUKYN2eMC5weRtUVSSa0gqRl9jW9k1N4k68S1wj1iB2+WvEsgazAB65nlt
+p2sHQpQiDYE60NbRyAgOZjTDLIMiKDVi7R6AfSvWvhVzz7evvfcXnxz/eYqze1LT6JbFW3GUmkOC
+2GHyZv9JNteJGh5ETkJxYMDauJno2WZsC+IYzI2dtY5mQaZiab7S7xioydXWhq25DBGjjMlZOOq5
+AvvZqVr7LOCeb1999+eWqsHiaKwgnhpwt6SKA/L2waRkqYBVQPdcECx0LupTdGby9PIpMp42kyZq
+FV3ZlSNHrnFAQ03AqKByGNSkUui2c4ZUbyPULKKzprwZ/QBi/fo77Ka5lRw5gyypX/NSNXgM9A4t
+A0hMivSkig06y8g0LVlWTDfZIoGeA1hXZjCfm5rPLbKfuzU3eQsUSyBTW7mLuP1T0+ca0OBYf211
+5S1Q25XRtAyRbG2D2yRPEhY4iuo+gLvwsc8qR87G3PPtK+9++snxhZ5ClicTyuX0UDE5/1szOQdt
+xOYc6NzmE2AXo+dRuCS4W3P7ulsPpkdQY4wJKlPrLnkLaMvSwo0ZBnXUW8mvCD19LVfBeA7AvrUc
+OSu4F/397qeeHFn6CHA8AvwRA58FeSmUsiAHV7JIETEJpb08NjkghzZFHBx9va2w0axN6YSP4g5U
+qwtLx5tE8OgC2luJgfTg+m1QS1lyA3qZvASRDPG6d0obGcRrBz1AYJ8V3AuDf+fNteeSdd0YkLMe
+StTjGwbY3KplC/bG7JKZ0Tji2OVo3M4/ukBvQJbgFtJFsbJ4DfKW1R4HdWlpQ+GcgLPkH5kCK66v
+7yFwvDNgn0Vze/r7eESq/l67ZBjI69gFrclZACh0OShtXv4ugHWSOMQkruiIl7UldPL5zaBKXssZ
+2cpAfSKEgJYsDexUGAW1YWSlrc10V0+GlNT+3QP7VlnIewP3L/zp37z+8nd+9lk+MIc5gAlBXkKt
+KPAsLkcI9KJys7aurkwSqXvO7nydKgvuPcMwo9VydM221swqLW9a0xzdLGTMGKhFnbgoegIxsJL0
+2jf3q6/PHkDeqSwpty+/8+bif6+dO9yq68gV0IEmKK+8+d7g9kk68gOd+8jagvZQYAjo5nPLTS0L
+B6l508jggVZJCC89PwzqAbbWMuTu9fWdypE7Bfd8+9I7P9sSPGyGyBjIZYOCu+6NW9cdNwUbzY29
+3ceNjKSeTxKcCOS5LDp4JIjS9OVxBLng6j5QQ6Ct9fqi9ypD7hzYdwruFeCfXBkc8FC6cbZBDg6b
+c9YGC3bUmcqgrQzxTLtPzp8U2oZWmmwAGsmsjS5nn+wBtWZrNpmWLRl4j2x9L8C+c3BLgM8eeGs5
+0yBvXesem0MDumJtnUZv22jAR7t8y6lTHoiFNPGbhbcADQDK+fA0+Tio9cji58TW9wbsewH3CvBP
+CIB7IJ/K2jmKzSUbM9lBEWuDWzciAI79XZfjITaKpfT4NKPNPTDne5AcDc67Z5oXjWoc8n5Q0/PU
+1vcO7HsD9wrwnz4CvCR5ACKQW8kCDtAbYEmDXckPPGnS1N653bIZ1gKZg1ml5EGyKOiJUiRXloET
+QV0lyPNh63sH9r2Ce7598ds/cwQ4PT2+6wHVGIeWqCkgpQDoena3ZG6RkSS18KrD2HtnT4UjHkht
+4QJZBpR8fmAEaMvStwT1/bP1cwH2vYN7vr397Z/KLgoedKAo3RLoMDpPjusB93rX1IrvaslsHPa5
+FXCVL4iucyIlCQczgu+MiHcSIEzOYw8e1M8N2M8F3CvAP74AnBYNvpRaMcYGBXRgbglndAA+WFOA
+PW+AndR7L7CMRUl/MI8chCmBbINLMt3zFtAkTxDSRbAPGtTPFdjPDdzz7Qvf/hizCYvPgQrIEDJ6
+c0Z8sHugJlMdiAOHhWLPhGQAieAnb9AsJ8LBDC7wRYBK4NQWPmhQP3dgP1dwz7e3vrUCHJEOsowJ
+K5sLe8/T6AbsEpATcudjCnyRU8xA2y+J7lIiyMSEB2ZHchhAg+N3P1hQPwhgP3dwrwD/8cbgrBaE
+B4oxowdgF4D31tERBD4McxkIRodSNyd4YFbDfbqABjAjHurLP0hQz4C+ft7AfhDgXgH+YzPAZ/2d
+/53AAp0xusvWNpAEL6QMPO440UMbjA1sqlW8+JMNSyWL08ZKwxL87X0fCKgfDFs/OHBXkP/Oj+aC
+KzxIj9sHeg1GBWgjLT2+XAh//jZsaECf98HMtyGRpZRr6giWfjigfpDAfnDgnm+fzwCfnZRJWHe2
+u922G0SAB9g3jfsUHa4mtJI2/Ci4CgwA+uGx9IMH9oME93z73G9/dO7JnBsenjS7EJxqPw12dNSz
+HjavJAfuORS82k+yO3VY3Kw1rMGsNbQG9MMF9YPR1y8MuDnIIdek6Nl/Ptg9wOug8zaHggbu1ZNg
+9f2yHFazs/f3A7w9WLZ+YcA93z77Wx9pwSYWT9zWiUza/ghAb4E/clh6w+djYOuib4+ZNZj773Zh
+65cK3OX2mRXkeboVqOIoMFNdJV9HiL7t7sd13e6aiy8emF9IUL9w4GYAZ5ah2gn0Kkv6VI07D8TI
+1EAuJ8iheYIX6vZCSJAXHtxbIA93DHFzp7vjjc3I4g3B0tn+BQP1C8fWLzy494D8pJ3ugHssxHyh
+by88qF8KcN8W5JfbywnqlwrcF5BfQP3Sg/sC8guoX3pwOyCHC9AFoOFlBvUrAe4L0F89QL+S4H7F
+gP7KAvqVB/dLCvQLoC/gHgY6PGDAcyDDBdAXcL+IgPdAfAHyBdz3Dvg7AfcFxJfb5Xa5mdv/F2AA
+WhWWsKhQtpUAAAAASUVORK5CYII=" transform="matrix(0.24 0 0 0.24 0.4712 45.6514)">
+</image>
+<g>
+	<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="24.3979" y1="55.9121" x2="24.3979" y2="78.8438">
+		<stop  offset="0" style="stop-color:#819E3D"/>
+		<stop  offset="0.0381" style="stop-color:#84A03D"/>
+		<stop  offset="0.458" style="stop-color:#A8BC41"/>
+		<stop  offset="0.7933" style="stop-color:#C0D145"/>
+		<stop  offset="1" style="stop-color:#CADB46"/>
+	</linearGradient>
+	<path fill="url(#SVGID_7_)" d="M31.682,68.273c0.662-0.493,0.662-1.3,0-1.792L17.821,56.157c-0.662-0.492-1.203-0.221-1.203,0.604
+		v21.232c0,0.825,0.541,1.097,1.203,0.604L31.682,68.273z"/>
+	<path fill="#FFFFFF" d="M29.361,68.05c0.497-0.37,0.497-0.976,0-1.345l-10.396-7.742c-0.497-0.369-0.902-0.166-0.902,0.453V75.34
+		c0,0.619,0.405,0.822,0.902,0.453L29.361,68.05z"/>
+</g>
+<path fill="#ECF3D3" d="M25.081,37.567v-7.358c0-0.843,0.715-1.534,1.592-1.534h4.418l6.227-5.146l0.088-0.942
+	c0-0.591,0.307-0.957-0.594-0.572l-6.777,5.611h-4.524c-0.876,0-1.592,0.69-1.592,1.534v7.357c0,0.727,0.532,1.336,1.238,1.492
+	C25.112,37.869,25.081,37.723,25.081,37.567z"/>
+<polygon fill="#ECF3D3" points="43.758,25.239 46.42,22.738 45.067,21.315 42.588,23.633 "/>
+<polygon fill="#ECF3D3" points="48.28,20.879 50.941,18.378 49.587,16.956 47.109,19.273 "/>
+<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="22.8218" y1="34.4565" x2="25.6357" y2="37.2705">
+	<stop  offset="0" style="stop-color:#ECF3D3"/>
+	<stop  offset="0.1396" style="stop-color:#EAF0CF"/>
+	<stop  offset="0.2804" style="stop-color:#E2E9C4"/>
+	<stop  offset="0.4219" style="stop-color:#D6DEB2"/>
+	<stop  offset="0.564" style="stop-color:#C7D19B"/>
+	<stop  offset="0.7065" style="stop-color:#B3C180"/>
+	<stop  offset="0.8493" style="stop-color:#9CB15F"/>
+	<stop  offset="0.99" style="stop-color:#83A03E"/>
+	<stop  offset="1" style="stop-color:#819F3D"/>
+</linearGradient>
+<path fill="url(#SVGID_8_)" d="M23.724,34.557v-0.884h-0.12v2.623c0,0.823,0.659,1.496,1.477,1.528v-1.752
+	C24.32,35.982,23.724,35.339,23.724,34.557z"/>
+<path fill="#8FAB3D" d="M36.571,42.126l-7.025-6.034h-4.287c-0.061,0-0.119-0.011-0.178-0.018v1.751
+	c0.02,0.001,0.037,0.006,0.058,0.006h4.288l7.023,6.034c0.447,0.385,0.814,0.217,0.814-0.375v-1.289
+	C37.122,42.389,36.864,42.379,36.571,42.126z"/>
+<polyline fill="#8FAB3D" points="43.551,39.965 46.077,42.276 44.792,43.55 42.262,41.147 43.551,39.965 "/>
+<polyline fill="#8FAB3D" points="47.796,44.372 50.323,46.683 49.037,47.957 46.507,45.555 47.796,44.372 "/>
+<path fill="none" stroke="#8E9A39" stroke-width="1.5" stroke-miterlimit="10" d="M36.45,21.794l-6.531,5.611h-4.78
+	c-0.845,0-1.534,0.69-1.534,1.534v7.357c0,0.844,0.689,1.534,1.534,1.534h4.288l7.023,6.034c0.447,0.385,0.814,0.217,0.814-0.375
+	V22.169C37.264,21.578,36.897,21.41,36.45,21.794z"/>
+<path fill="none" stroke="#8E9A39" stroke-width="1.2" stroke-miterlimit="10" d="M49.823,17.39
+	c-0.113-0.113-0.266-0.178-0.426-0.179c-0.188-0.009-0.312,0.062-0.426,0.174l-1.711,1.689c-0.236,0.233-0.238,0.614-0.006,0.851
+	c3.305,3.347,5.126,7.779,5.126,12.479c0,4.86-1.93,9.399-5.433,12.78c-0.239,0.23-0.246,0.611-0.016,0.85l1.67,1.73
+	c0.111,0.115,0.262,0.182,0.423,0.184c0.003,0,0.007,0,0.011,0c0.155,0,0.305-0.06,0.417-0.168
+	c4.214-4.066,6.535-9.527,6.535-15.376C55.988,26.748,53.797,21.416,49.823,17.39z"/>
+<path fill="none" stroke="#8E9A39" stroke-width="1.2" stroke-miterlimit="10" d="M45.473,21.685
+	c-0.112-0.114-0.266-0.178-0.425-0.179c-0.135-0.007-0.312,0.061-0.427,0.173l-1.711,1.69c-0.235,0.233-0.238,0.614-0.005,0.85
+	c2.167,2.196,3.36,5.103,3.36,8.185c0,3.188-1.265,6.165-3.562,8.383c-0.114,0.11-0.18,0.263-0.184,0.421
+	c-0.003,0.16,0.059,0.314,0.168,0.429l1.67,1.73c0.111,0.114,0.263,0.181,0.423,0.184c0.004,0,0.007,0,0.011,0
+	c0.156,0,0.305-0.061,0.418-0.169c3.008-2.903,4.666-6.801,4.666-10.978C49.875,28.366,48.312,24.559,45.473,21.685z"/>
+<circle fill="none" stroke="#788A38" stroke-width="1.5" stroke-miterlimit="10" cx="22.173" cy="67.354" r="21.423"/>
+</svg>
diff --git a/Sankore-3.1/resources/images/libpalette/BookmarkCategory.svg b/Sankore-3.1/resources/images/libpalette/BookmarkCategory.svg
new file mode 100644
index 0000000..64555c0
--- /dev/null
+++ b/Sankore-3.1/resources/images/libpalette/BookmarkCategory.svg
@@ -0,0 +1,427 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="96px" height="96px" viewBox="-0.389 -9.981 96 96" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g id="XMLID_1_">
+	<path fill="none" stroke="#010101" stroke-miterlimit="10" d="M0.75,63.903"/>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="38.2178" y1="69.7495" x2="38.2178" y2="0.7495">
+		<stop  offset="0" style="stop-color:#B7B6B7"/>
+		<stop  offset="1" style="stop-color:#D9D9DE"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M75.687,17.069v-5.114c0-1.247-1.021-2.268-2.268-2.268h-42.67V3.75c0-1.657-1.344-3-3-3H3.75
+		c-1.657,0-3,1.343-3,3v60c0,3.313,1.116,6,2.772,6c1.657,0,2.657-2.682,3.228-6l5.71-44.432c0.159-1.237,1.31-2.249,2.557-2.249
+		H75.687"/>
+	<path fill="none" stroke="#010101" stroke-miterlimit="10" d="M0.75,63.903"/>
+	<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="45.7812" y1="69.7837" x2="45.7812" y2="17.0342">
+		<stop  offset="0" style="stop-color:#ECECED"/>
+		<stop  offset="1" style="stop-color:#FFFFFF"/>
+	</linearGradient>
+	<path fill="url(#SVGID_2_)" d="M3.493,69.703c1.657,0.001,2.66-2.679,3.235-5.997l5.76-44.425c0.161-1.237,1.312-2.248,2.559-2.246
+		l71.136,0.08c1.246,0.001,2.079,1.006,1.851,2.232l-7.891,42.213c-0.229,1.226-0.789,3.18-1.244,4.341c0,0-1.522,3.886-3.18,3.884
+		l-71.45-0.08L3.493,69.703z"/>
+	<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="47.1133" y1="69.7495" x2="47.1133" y2="19.7071">
+		<stop  offset="0" style="stop-color:#C7C8CC"/>
+		<stop  offset="0.0179" style="stop-color:#C9CACE"/>
+		<stop  offset="0.1426" style="stop-color:#D5D5DA"/>
+		<stop  offset="0.2577" style="stop-color:#D9D9DE"/>
+		<stop  offset="1" style="stop-color:#E6E5E9"/>
+	</linearGradient>
+	<path fill="url(#SVGID_3_)" d="M6.184,69.75c1.605,0,2.574-2.547,3.126-5.699l5.53-42.207c0.154-1.175,1.268-2.136,2.476-2.136
+		h68.896c1.208,0,2.016,0.953,1.795,2.118l-7.596,40.108c-0.22,1.164-0.761,3.021-1.2,4.124c0,0-1.47,3.692-3.075,3.692H6.935H6.184
+		z"/>
+	<g>
+		<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="3.6626" y1="43.4028" x2="75.8658" y2="43.4028">
+			<stop  offset="0" style="stop-color:#838584"/>
+			<stop  offset="0.0097" style="stop-color:#898C8B"/>
+			<stop  offset="0.0381" style="stop-color:#9A9B9C"/>
+			<stop  offset="0.0717" style="stop-color:#A6A8A9"/>
+			<stop  offset="0.115" style="stop-color:#AFB0B1"/>
+			<stop  offset="0.2025" style="stop-color:#B1B3B4"/>
+			<stop  offset="0.4903" style="stop-color:#AEB0B1"/>
+			<stop  offset="0.6804" style="stop-color:#A5A6A7"/>
+			<stop  offset="0.8418" style="stop-color:#969898"/>
+			<stop  offset="0.987" style="stop-color:#848786"/>
+			<stop  offset="1" style="stop-color:#838584"/>
+		</linearGradient>
+		<path fill="url(#SVGID_4_)" d="M3.663,69.047c0.725-0.279,1.739-1.881,2.349-5.424l5.705-44.401
+			c0.209-1.628,1.659-2.903,3.3-2.903h60.849v1.5H15.017c-0.871,0-1.701,0.73-1.813,1.594l-5.71,44.433
+			c-0.735,4.274-1.954,6.455-3.722,6.642L3.663,69.047z"/>
+	</g>
+	<path fill="none" stroke="#838584" stroke-width="1.5" stroke-miterlimit="10" d="M75.687,17.069v-5.114
+		c0-1.247-1.021-2.268-2.268-2.268h-42.67V3.75c0-1.657-1.344-3-3-3H3.75c-1.657,0-3,1.343-3,3v60c0,3.313,1.116,6,2.772,6"/>
+	<path fill="none" stroke="#838584" stroke-width="1.5" stroke-miterlimit="10" d="M75.819,17.069h10.333
+		c1.247,0,2.081,1.003,1.853,2.229l-7.842,42.223c-0.228,1.226-0.785,3.18-1.239,4.342c0,0-1.519,3.887-3.175,3.887H3.522"/>
+</g>
+<g>
+	
+		<image width="158" height="158" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKMAAACjCAYAAADmbK6AAAAACXBIWXMAAC4jAAAuIwF4pT92AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANTFJREFUeNrsfU2zbMtxVWb11fC+
+ocNBMGGA3nt4QMiACBP+nGN+BowgICQ9ge0QwpJwyEjggBH/gynIlnDIAXiInp8mTDwgGD7PpLsr
+2bsqM2tlVe3d3ef2+br3tNTvntNfp3vv1WtlrszKOtHL5eXyRC6nl0PwcnkB48vl5dJdXr0cgnr5
+5e/++PX6z8fbz8JEzNu/TKwHieG6/XfR+xILZf15/bFdWB86Xj7/8b/48qcvR3y88Pv2gb/0B3+6
+ge6j7ZNveFHAcbmN6F8SKxjL3Q2MRP6M9eYVjBVtvIFxew0CMPIxGD9NzP+2B+h//+d/79MXML4H
+l7+9AnD9oB8pSDbQfZ0KpKiBEWlvvS21GKY8bgZAB18HvDQ7uvXP7R3wT9d7vwPE+vmP/tn7B853
+Eoy/9J0fvV5P7kesgFn/3YD49SK9jooGQmTCBsLtcfXRef3vEQCTHckecDwe7KMDLnot4CT6jgHz
+h+8JMN8ZMP7St3/0WlR+Vxn8cGO/pCDjirMKLZPUDVc7IKT6WGdBp0wEIDfGQwQa4MTVesKY58Ho
+v2/AXN/Xt7ef8zsOTH4XQKjx3ocruD7ZMHRS8KVGVQBLkGQF0qsehFyf2LOgMWB5Gg8HkBP8Lp7U
+SGDNgLbZmSj3r09a/80ei9Yn5SLn/O31989/8A6Ckp85CD9UIH6iGfAKCAAit2CtgAPYcLsVE5Py
+JADhwIL6csyN+Qx8DryCJOZ0RpvLm+hZkTuU5glbikjJ3EU+Xf/MtzfMrr9//if/9O9++gLGR7j8
+zW//8PV6sj98RbyB8GvUmI5PNaarxAWyvMOGnphYTAgJ9MCCYO1AzNmBzx4gMWpkvvxgi+Mu3lTA
+2gO0gnOLLwtb/rdnzpbPBox/4/d/uCUlH75ar+vJ/+QEBkphROYQH9Yf42MCG1Yobj4hY0w4AyFK
+sL12GsHHCLpejbf7TmeO9/acRUYh5xGkYuAEYP5EVMKfKyj5OYBwk2Perkxf+4LGhDMgJudAQ98o
+y/Zz1lwGJTlNQFiNbWDBCQARLDVEILZ4jwRe6AhlCEqJMWRa/4MgtachMCU3UG5xpTxDUPLTBeGf
+aExYMuOvbSBYWZFfnQGiG9lstk1lsVcQG6aQRx+DMBEFmWfhAEB9voOvs3Xqmw2A3D/kYuiKD3MY
+ioFzfdwCDzNgypbpGFtWUH7yX59RPPnkwPjXv/nHKscFhF81NjoVRqyJyREQiTnEh2rZDLLcsyGj
+JHcgZPJX3gcgN7z1xRejtBOfl+ksPRYdXHZjecQeMLOxZU3INyB+a/MqnwMo+akBcf3nH61n9Kuv
+NL3ogWhZ8+kMEDd4vaqJyEZmhSFRltOYnNS40JLqDoR0AMCkt8xAxzPnhkcUcgfckMwoSBmoUmgE
+phEjgjJXtt2A+LWnDkh+GiA0SZYvbgdtO/sr2FbAvR0QMT5MkLZ0bOjBXyLymDAJDyDsGdB+GcDX
+1WGcdeXgqEOcKEJBmQnlu2NQZEyRyJYGyk2+15jy0/UDfmtF65NlSX4iQPztKsnVjDmVuG6NDztp
+Fk1eErl9swtEy2DOyHIBaYIYE2PCmgA1EDIYOqTZcQc+lPuBHtnc8N2zIc3RkY4lEaDNBHfGlBZc
+VrYEpiSIKQsonyhLPioY/9oKxPUN/DYrENPGYAqvjRW/oCa2hWFJQYSGNiGQDoA4k2VkQ7bKC1kL
+mf+FVrtRlsRkhDtLx19fKhtvr5XVt7ykHJgdl+B9K0gFqDEDMKUlMeIFHK5MqU8USHQ26X6SLPko
+YPzFf/3HGwi/uJ7FzbL5amUhYYwTx8y53v42QBySFK+4NCC6JJ8DoadEIOsKvpNjZgsR6uNOBwe9
+jxMXS5KUKA2k5nsXhpNo78xAqQFleSwmOgWQ9b4nxZL8GECkyoZfSU5ULs8OxFnmbED0ygqb5cL8
+BXde0hEQy+vicy02NDbkYIlzACGD3PMEgFJsJf0b6HaPB50nrCgzw1EAjKli0IG5oGabB47PkZpV
+q/8jGVgyP0HZflAw/uI3fvB6PTlbfPgV9fFKm9aOPMcyn7KZIGRq+ltO/hdUWYXpIiAasCyxEWBD
++//JY8AIQosrpwBsqc3oKvIFOj1nS09WemAu9gBlSwRlhkRHQeosmV3BVbafACAfDIy/sAJx/WP/
+cGNEBvBt8nxSeT5N5DnVTFiZsKUsEkt85fXoAIiYqGB8OJPlhBVFAySAMB0AcOxlbECWC0+IB37w
+JDkA5oZDBGWWKN85suTGhqNsV0B+a2tT+8EjgZIfCogEQCwxlAquseIse+7jRG/uUsY0ILL6iOoT
+ToFor+UsB7Ls0UJkw5ZV0wSEPQN24JNOpvn42MuUICWUXqTXc8hPHJRZH5mtDU2RiyxpsWSWVvZR
+QFajXORrj1FK5AcFooPCuqgpJC1ad+7kud7Xx4mesBhltkYwOqULgGhg4302LIa7hEDSzccUC36t
+7BLXIAwR466xI3PDG5PoBk4JJUIBMhVpyc1yxJJHgBT5yfrrJw8NSH4IIBIAEVnxKGnZlWe9EROW
+EmBCZSUltgyW+xhxF4idvWOPOcFt2hHebG8ODmPAWtc2Fh3wM7XpgE0ZOsBFkDEh4xa4L4N0A0vG
+WFIh+VQAyQ8GxIEV2ROTPmnps+denhPI8yxOTHwHIPoXpWbJwi054h0QEnjt4Ekq5pjGqsw8RJwl
+MdKBVKD0J8iTzeNBG6iAslhEWg8MLImy/YQAyfcNRAIgzlixT1pE5TlxzJ47edaMYz9OPJlJfhkj
+BlkmzcpfDUkM11gwFHxGAI5lw6jPRz4jWjqt+oz9jC0r7kHJSo3GktliyayZ9x0BuTB/8hDd5Pwg
+QNxhxXNJi6HrUJ4ncWKtbROHdTCpJStTIPayPGHDIcMGEA4AjGXEq461xJSFQJYF1XkApT0uR5Ys
+0qyybcnNHiDj7fVx688/WXH8yX2vu0n3CUTqAqXJys1aabBKP3tpLoZWmIxYGW/zWcTbuShYOJaA
+aEnOkpOrgWjmJrc7kr/H+lVxu4jb72vMan+Ta7nRHIMLr1vSJmR/i5O+YXsv7BWk8f1UN55NJPRz
+1MeezKxvC3r8+OAaoOTH0b/gf2v99ffumxnTvQPRABflWUHob6AmLZCgjutXuJrM2oUz+In2epVx
+3ROk5iNeDESGMIAgZuQdEPYAdLAkpsTNprzoQg5A/x4MwEztHRoooTxp5r8HDpcC0j55RkdBl1is
+P37wG//pf3385GV6D4izWFFZwq0cjxVTtXnMyulqz5q0cDlQ6UCeX/UJC7ck6NQlK3tAxNQaQDg2
+T3hnhb9uI/Ihfjzu85Y+r+4XvTQJLUBziRaBmmCTVosbqy57GfGsZC9Vsof4canx573KdbpPRgRW
+9OTzxHQRK9LIim1hFcgzdfLclr90PYvNwA7Sfg0QXeq3L1NiX+CKDJhMyy1GbuYUjddGpRBq6BdS
+L5UiW4iQ6jt1ttRMj9tSCTDrqcn2hCET/F30R5mi4vgS3irXf/jr//F/fvxUZfqLe9LM4VexsUkV
+BK09bIgV+3UkqYHUTp6b2fbYIM8YJ+phRqvnpFnzhUBs+umW0whC1WsK4FOgqOQCwHhyY7vZbk+h
+AmTOvToNCsptaW6yqgEHQPI5QK6ALscBY/ETh3ZlLySktiT34/sCZLoBK35xPwho0qQA9A/HgRXp
+LCti0oKFYB79xNpDCB5kixP1wEqziy4A4siGrZ93BKEBsEHMshsPUdTS0uuAS62ht4yoAXMEJSdn
++vL+FHQtpj0CpBcH+hp+bRwhXGbBVtsvl4/5HhKadF/yHCW6LvNEVozJsi6+p31WzLDqD1kxyDP1
+8gzDIjAz4Zg17wEx4ePsttRANQMhAjAVv1Na8mFA6/6XCLNpwsdzYgh0J6B0NvXk39LjywC5PSiM
+LwC10YQPFcifuyU0t2bHdF9xIne9e3xg5zBqAlZ6z7Ai6WKr1BpkO3m2pQExTpTOvtkDInVADGyI
+fAwgjAA0V8gNU/9fQ1r8H8C5AyczghIyZ3aWBEDyASCD7aMxDsaPLtfR2Gdnx+pqbOx4U7lOt4wT
+ZxLdJy6jRGNXC5s8OCuWKbGXsKIevMwN/r08W5x4im+zfdsBdITMCTYTQ7dEYabUg7ChipraBplO
+CUR8/RnCRDTQHZzbMYKqlIUG/tgASHaV4T2GjMsq6nADix9xpaTLNbV5QuhFco0fv/trNwJkunmc
+OJdomkq0fRsprk0R8BXrM+k8K3ZJS2PouTzbTdJcpD5GbAu/kpuL7QHJ76KTZk2t5tgAyAq2Exji
+zN01JTS9VXdHYCaVTWPdwJIg25xcJeaSrT7kGbkO6tYlMz7wimqG/bsPDsZL40SmaY/AKNHSbhNj
+xe75KtEzJjtkxZP7jHN5RvaDWNNlKqEFExs2qEkylM0hjXYAJgheE1nnB8e4UPMf7wzR91gByvZa
+jZXYJq1VHPoPrTzuNfkYQ1pzcXzgTK4xzDnDjmaI34Id083leT+LHiWaL0tcsNpSTaI24PMcK1r2
+nDp5pt7CYJCoIUbU10oe1NUYNrBhA2Fqs/PKU07FjK/Xk99Wr/hzuT+1OHHGsAaGNvqvITPB/KkQ
+Q2LyAckINmiyKZG0PoGYzNw/O6Zby3NvdB9n0VDO6CQ6Wf8gDjMEVuQ2hqHw5h4rmtUTkxYm/LIw
+LvrD2JDMOgk2enlPiRgyGa8TBxAa+E4cvG5K8FuYxqK1bLd9kse9AZSWinjNG8qX3BqOAyANqRCV
+kC/LBbkWzVASkAeyY+76kFLrwfzgV//o7dgx3ZwVO6N7AGmXRdOuRDMPdk5gVw6AuzMrUkwXh6w5
+SHMDIgaIqdFqAGGrE0NlGsw6DwwhoRGIFZkaKFu7hjUPwxg/ACTGkCGpaQlNkOvAjtV92GXHeHoo
+zDOyZOZX/8P/+PhewXhN0tJPU0B/as/oph2J7hOXmUR7WKD4QFakY1aE8d5YAqOYNcPCLwSiYeiU
+WsdLoghCComv+U7zmNEQkvqWCgBl8D39Rc8Dsq4QgvJrPCc8Y0eZsGP9u6hQQaq3Gz9+G7lON2fF
+HUtnBG6MF2dZdP+6vURzlH1Mc+qHk1qD3WFFAlbEBdndt8i6eyRKOchyYEPo3o0/e6FmaBlrVZeW
+YGNfmn35XgWW9Oc26eWWjNSPJf4ZUa4hu24nCtjRrB6CzNqbOSQML4hSXR/7wV3ZMd0yVhzjxfYV
+7C0dHJDNI0t6Fn0o0TFxQQJ14LqUTlgRmAflvlmEyZ7LsNogAtG6yltTV++HE5b4FF8SrpoMmaOD
+s3/Ai3Kw1L83AWRqRRYoQzV27I81Mm9gR2rNLH2f+nDaolRb7fp374sZr40VoSnKvptdvAi4w3gR
+lNqN7iOJxsSFJ4kLc7dYr2NFAqZzVoTCcyhaUDDCfWsOBCIHGzLkN9yqemNjI6xuJARm17hL4D0O
+gPSkhqBI3/ay2Swi6pMZJpqyo/uOE6k2JGbvSR2keru8/pU7sGO6ZQbN8z7JQaWTxDukb9nv40V4
+s5hFQyPgING1esixvNiz74wVQb6bPIfSoE6fkAGI0VTvplDw2AyRUiKQ7eZ1B3zA9m+QWPn4vhoR
+e9ODPSr1U6nqsePJbJV5Zn1Gqvvnp7iy8U7smO6DFWdJDCYvip4gr/mCeHHIortgkbsIQBAR/bxE
+LLhOWDEOqwfHuX5LOBEPjJgQk+y1XOvM6QHp/Y/QRcbF7E6tBSx1LAkRSjPvO15ipD3GCk1qq2sT
+h+1pBtLQRGYm1eGceqIY/LLtl9e/8u+vY8d0q1hxkrzQbvLSyXKKH7TFixRlomUqYHRzi0n7/rSj
+xCXGjiMrwqpZrDioPHNYNxJ1vDmSCUAIDasUitEJHB+KyxqSG5IUQgBi9pOPSVOK7RAhmUF2xMx6
+V6qN5WZZNfXHjIdzpVbP79yKGe8YK46e9inGbeHT9F9L0e1zBdcnU4wXTS7Q6O6zaLSHphKN+2iM
+G7XgyoGmfcqKpzCIPmz5AUAceh6hu6yvTWucCTINFiSuy45lzLZ+RWETFiUGimSBzJobO+5J9dbt
+tJdVY9yILCn9ygqmD/7+FbFjuhkrjpWXEFq06arHycswIQncbBY5G5PaN1Tmq036tSpxzwzM0j1F
+oTZnR0c3IwUy0EMHRFjZFwBovRHscoxdZjoRow3GwiUOEqon3E6igzSyY9hkswXCEt2JPan2GeXH
+0dh4DtpvW5vZ77wtM74tK04rL3xZqDlNXoagcOcu44g8iRf3mjimEs1ILhyaLsZWTR5Ynzl6mNwW
+tpCvW0nNzoEpBH0XOtlz3JnQBApjwhQzM7d6iOdSPSQw83iqGuDdY2VCGH0SMzF/rwfjXVlxtHWu
+jwuYzgWYsIGks2Wbzc7NAurpkvvZDtyVhWgEWYgzxSOjkRXjfB4eeiIVdHXoQEIWxJbuypa4GCh6
+0SjXEmw+IezDbPVuHMOCUt19ys6GmMeNzDMV3NnOONLt6y9//zKpTvcVK+7ia2LrHFZe0ICF555m
+Mam0+uqpeweDlvfxYuiplMkHkthd1MI4MvlMk+Zc7v5N4EOm1NZtYezIQ98aWUwZdmfYQCmDmSq2
+ejYeu+4zT+LGMVGE41jr1dPzEsgijaf7Yqm+6USJS0Fqtg5+8+IHlP0DNOxIyvE1DnYTYN6ZAtZX
+jIii600ziW6xovTxQ8BMtH5S8gy7eoVJF/vbctMOkLhMAGm8259zkGoUha7/ZPZ5w3EZzodY91Vn
+fodzxLtslEiul+m3SVz4jvelnUnDPPmmpJ5g+2fyPIbc7cmQmW82sYT1tEsn0WEUD0OChMDnGSCp
+NFhsTQfeLAF1Y4bxDikmsVY9CREMjDILRZTD75zsnhveOzf9g3FU3+y14PfX/+B7f/bxtcx408Rl
+9jGP5hPu4VY6wnNb59IXODjg3LMGfOnbfuXcOQJIjNLZm2ANYv4AuytEk7v57SnsDsJh7zeONgpz
+i1lGqW4y3Fk8+0nMFV5yeFZ/HoSnyeIGxH/14DLNt3jsbAO+i7P26xl6eqRnzEKTMmYEYAQPGvFE
+Xfs4lPvQ9baHphbFCneTwwMjye7x5FjzooO5uWeP6+nugLj4bz5kzPhQGL+cFi9+ceG9x0ofjvUx
+E5rfMeDEnkd/Xuqk2GvyvH9I+OD9jlaL7H9Z+V7P1wdfPiPV6baWzntxuRu78OTXrvbzlmDgR/+W
+H5t9H52T6vRg8eITush9ve7ORuaycx+1KbNnHyvyvI7FXS7pXQOZXHqf3O2E4KYEzZOU4bUGlBHu
+pMG2H7ROoGWcQOuoFJm9PxlixfFh+3UPucOxuwNoZeeJr7/0vT/76BCMt5RouZ8Xufhl863gLDj1
+kONc7cm/uAMBbudnm0nmNk9R7ygztOv/MmyZISRhT0B4GzL92zw/SN3oZTB/rj558nbHFTeKPcyq
+04NKdLfXST5CGUJBA2+5Ieqt8hPekgEF/0Snjzzs/dwcy7AFL7BiwViumMvrh85Zobfdlre7fPC7
+TfoU3HODYY/zdg8DziQeH9zUsn1bwocR5rdX/smm7WdeVe5dpq+idxlER1jGe2eyIcFqkHOvO4H3
+wds6eHI90Q1vbNNiJzqKO0Y7CeYG+qxs2UAZVRnYVHB/c7tDUPIduH0Uevl5koNjMz1IEq2krsP7
+rdg03ZD0LruvdmDLnnMvkw/lt3FErs0SDo0R3JKC/lS5nMoVCYhvbdGeluNzyj3ZdqeiwHD+5A2Q
+TohUfm1XqcwpDk4lV4FdDcJbkPAfGXFCnZBIoEmRQa2EJLyyb98B30DuSDb8bd4H5TLtOHj4BGbY
+gUx2mIj9w/HQiyg0ti3h8cwSAbPoFb/BewwtnYS17c9kkLzcOoRiflJbhaRT+zZDO2tImHW/FdVl
+qTJt8aL/p/2MrDhKNBwneD81OeIWufaJkUgXRsyUpwFJwxl4ygJHLHc7eeVdWdJjl+WDX/7ujz96
+KDDKXbPd5eyrNcAsE5KzTRy5O6Ay2WdPuuxAZAp+3PCnnXCN0QhAU9gxIztqTOiZjGKqgdBAKQ7K
+TMiMhkaNJ9t2Q3afJ1n1TzV9p34T9I4cCXbdwmPRx/XS8nJkQSsaSHfAOOw3J7Jzfnf9xlf3Y3Yz
+vu2ztsHkmaC8ImFpWob+Oiguo1TXdifxCW96hrjPJMu50ySG9bjrAQ0LusUwXiS2Lg6U1qFP0LK1
+AWxrgKj7H2wbjee6qpYNw22TrTGpEwkJUA/EnhW7L5dMJVogltj+6EbTzGNsKV3so/ZR0l0Q6JzS
+HJxjvtAmTbfMpHvQMSSFGfJOaRnyRMb1CzrpEBmaI2QeCuT9SBxT5YgBYMg9qbZcUTyJ6dmRTIYD
+Q6IE5/aDBov6qwaUOTshToDYsqImt/hBuGyx1km0BFAO+7x1ycu4vzXGyOGRQ6zPe+2rl/kgN5fp
+3m/TWAuNYsGvMVolvuZi/S5ylj4YCvYJZtQRIIOsCNrA6Am2DSJlSEV7qcYgLqP15zcfAtIyZ/MU
+DWQCqGt2Y5PdAYj1uc5sIgQbm7eIIPiVYV+Y7nMLxpUS1ipJDpZN2Fk4ZNIy7rvpB3F7TOrtsgcB
+YzyZssj8DaB/l8fkROYxDyQ5HIHaAaTuRt8xpOcCXT6JUu2PzYLe9MiOvs9ejQkxg54B0t5bBhbE
+K1z0yxt+H4EI8a4DccaKLab01L73FxGkGfyqupeRHZt27LIgOVMAM2OyN0tg5ZgdX90ya+GDnwPl
+sB+U1p9dlgpK3Y6t7yHTg5ILa25ngMvGlouFj9CUmKl2JmuHcQ04dUWch5/tTdnQCQsK7T8cGXfD
+wHrPera3tSrbH92+aGXJqqGPnfN1N5pKJkuW2gSmgyYltidiqNgcAZEuBuyAaElLl0E3Y7LzB+DL
+Q21qsAPEgIXqgfFi30RbzkWXFYnFltJ7jez2vCnXnv/46qbESNMuEP+cmCjMHm8Z16vh7ooiixsT
+pjXihVpri68OQvxCCFsIWz3OEq5qjlG+GMVGYyY/XxvNpLKkQLJOkDCi4QpBXtZ/y6L2epp5BkiH
+QxZNiSpCvE1MdjY9ByeGRiD6bqhOetRkOhNm41QNwqwEkKNEZ7C9uSmVK8tRvCh9vDhsA9twv9D5
+DqHbx4zUvDAM4PCDS4wZpTeY+yTmKG5McDJwM/CZVGNdQwRyV/FvO0Za9aS3WKHJpT9Pyl57oKP+
+2hnjRKhwGhG5TEMRBpwkleqsdzLGrT0Qm1OOIEaPKIAWcjWJKcueRFMw4sV94YkTJL1FxmPdYbvt
+9Zf+4E8/ehDTO5bJZJrEYAbLEnf4riDL5maHqirGjYIGLIR17jfWAHpWtpNZImPZZz3ejP5kYRuH
+as67gIwAiKCsicfcf7f7BxBCJm7SjEDsKz+NFTEJE7dz+sSld8ZRolmG5oxC7/oll5j8SG98iyUv
+E8rfgPj1e5XpWSltPVHbBueT5L7Gh2Ckum9XT34334SqsIa4kaNUi8pz0lAxa0zA4CWySVqV5CrO
+oi8ev811HJRKsMu1CvqGgrJ+pZ5ak+yKoEbq5XnohDAJzQAJlRyy59AAHpIMO6nmLk6M8iz6o/3E
+FDkfE8QWUaL7s0CwmWcSDfGidEzUxYsC8eK4lu4+mLGLw4dgI6O9wA4gin6MqFOvr8aBPdxvnEq1
+Zpfk8Q56fd4/GAph2W7PlhlLkGuP0aTFY4bVCUPSG9BazIopsON4zY0FgzFpbLhIBGK3v68D0R+E
+lhMmOGdY0V5cuqoLxqco0RYvyqSKxXr8l4nzmO87gemzDsgn6hHhGjeeFIXSpkLUIgVzqL5sUr3S
+EdmoRXbaEt3QvH7j+6wa6sc1kenYkfqEQ4dGFFRUruOSsNtGsFLD81xn7QSGLBpcB0LYKSosKbag
+X6GZx66r6eFD3zWHzFj5RUYmy4RxoQTrSToryp7erLA9VoxxfJ9FWw6QQ6YVJXq75U0fL8q+Mry6
+J3lWQLAHb1KcERLYk0605OvfLLN4TK2OpDqVDJVcqsWV18t69W+uP2xTQzZi8sV57WuitXuRsmIU
+5Loc9URtIarYvjQ1yQ6A3DYT3x6e/K2sTCb1FYna3oMgGnzQdiXomYp/mde3lAldnwkQCTvICf1A
+aCLKjbxDXCiBFRv5ZggFQslRuh6gHYkGO0d2Stf3GzOKoUPjxtMkbpRKWf5IHTpfnruUPe3Eepes
+wkwW7nFlMQJPRkTdPfEbMY50JpayClStm2rMbI+ROkFtk+tUbMytCCTJzpfVmsuXoQFSJ4ywBXHS
+Bps2pqxmZ/j4CcOP3doBW2fuGALNgJhjWJKtExPluQFU4zjxKs6iX7gpK4ZSVDS68zyLbpZOZZ3m
+plSWlYeRaTXxYqsEu/+XzIibSLWodIoS2Gki1WiACyQy59jRkxGbnCQ4FgXkeg3gCiC1zyECMld1
+1rnsuguCJBtSbMEZgLJL5MtfXKZCxRJaugCE2DieoZcC6oY0ADHEjd5IJFj6y2CL8+Ws6MDMXfuY
+qESLxf7i4ZFLtDyE6d0nLGIDp02qtX3F4saZVLNJdWVHxRlPDXAs/zk7Fld8O4gVvElhtqT6mIQ9
+RRZU6fdmWZnlVGfenAGkoLlegLhotNmDMttcHDXZ+ajFTnJYrYAenTTHpmveRe/0CIgUMm+2BEuP
+6GK+Yiv/NFaUgRVjaVUia0szuocsGqy0h5PpPanessJk6JpINXBpa50T6/nhmkRUei0/D+zo/NJA
+pPhsnUKJWCuKUa4xfpwAchPmNTB0YmFV5ax/dXu9pZo50uYyQcAODcRjm9XY35IJ2hfRyoN1CYLp
+zB4QwVkgifJsEr7ZYW9C13hzFYaq0A4rHiUu1Em0ZHk4ZtyV6i0+05T2pAjYkWpSg9X7CznYxAfs
+CLPZzHcsiQ8kMwnlut6grmKJH6eALG81i81mD7Ktn0tsWJPZcTjzWhiNhh01kVYqgO71VhqRIQaU
+uNx1BCLUgVrGDQybY9uuJzHRTxxZcWbnBYM8tgti1ethrJ2zUr1JGmbVNe6up9X2LSksVI/uorXo
+VHtS+Bw7li1qtZZLyo4u15W5HLQw+obADK9fmAkgrba8hQCpJaKaUwVQelTmwOSxB3C3OXUAIIUO
+b2GC1kbp1mGPQERFhzjRu3QW4O9srWNQ5eHw2o0V7fcMjMvKsEsLg1r2bgxdmPiBwcg7Um0H5JJE
+ZgPSjB3FOxwqIOusmMqAiz4zJbNuLCtm+7u0eLlnZWjIlI8AKYUhKw+7bHNYqspcOiIs/Y/APKoy
+xHU+gqXUhgQDYW6rBHPwEVvVxlrRCIHo3nuxnqTFiWD/YNKCrQ/oK+7Hihex4k5Dzb3HjEXKDACt
+RhoN8DGROc+OfWYNvqNowlDYklP96CjX5gttL77UiexyUjcCAal5iiTbbGVjSCqjZstLVGepcHUA
+pXVLRWCW98H5khoWdmbDFG0EYWNDsHcAJBluGoFYqzktTgS/HEkE5bn3FbsMesKKhKyIicv6+p+v
+//zFg4KxB2WtVlXTY6nHucgnq8+3neSyo8A17FgAp75jq5IEud5eybPrLn7cAshFE5gekKw8Zw6m
+7mBGPUvKPiixmb2CM2QtPK7OY+6iMQF97EA4YUNkNkMZUw/EmrAsXZyYsa8pyrM3BjO1td9nWDHY
+OZkCQ3/2v3/v1/7woRslDhOZK9hxjWt0z5OeHcmluW2K08s1tWYGtHverI97tQPIcuRSLEKqMW4s
+WbzGypLa9mETOLWhtgfmIE+zwQMgjA7A8h7sbUUQUlg2KkBoLWu2GBGBmKERYvuiL5BZT+TZy5kZ
+8pnOV9yNFTtW3LW27p0ZzyUyaPMcsGOfWRf6Sla1g2RmJte5jjwsNLmooVRYTmpCc5oBUuuEpdTC
+DGuwnCXrx8piNb/ClPVuIlsRaAGZ/wod03v997aCUKME6iWY+kYFiMmm9s05IMYMXeRAnjFpkYmv
+OIsVO1YkoQesTc/YUSsf5aatbntSMKDNc8SOlGt8x95AkWyGMaNcS5TrFj9Wu8cTGq7+Y2XeniF1
+KzzzIYvrrvucCbBkDR916akyJenyAoYVn9wvWoJx0jKZgdf1yfaPE/QCJS6AEupkubad1UINqzQv
+FBMbXLfTx4njpAxsBIV125amWZPSDitqa9rjMOMt2NFbbrQqU3YJ2JFr7ZBhYyWMH3Pm+qJmL1EL
+D9+o5ZMU9K/aUpuZbJP+MQelV1d8cYilz21/Bt5riZ41TXRzmsJ0EoogxIwbZdlKh4uC5A1FC8ca
+g8lblqitrRFor4sNydInLUtXbbG69zWs+KBgHG2eY3bMWpSx5S3szWNUYsG0L9eUCfcm0pSUqVZS
+rN1mveGNAjKxxbD1byZdPbpR69LJtrIk9aBs7T4ATOv+8cLzFTlf7ENua6BlTBaQDQn6D73Jlk1W
+J9JMLkfWS+rMpu1hBj6aybPGkTg3rXX3g6+IrHi0IOuv1utP6Z5HKIPNU7LYnh37zPpETabr5msp
+yDX50oRRrsvGI9qTaPfMAEn6t0sMqTZhZpumwHUNgLaF6SaabAzSg9LtnA6Yik5c0nOh6S2DZ0c7
+IJQdNkx91UQpasFKj8dFHRAnceJMnhdt+ghJSzelzUu/aqgvec6O6f/9/m9tQPz+g0k1tNAvubUf
+4YIttljFFutJazp1udYDlSRLCOD1zGAzKR7g8mVoLdtCFtzDaqvtcYv7Fr62uRjFGQ3ljSlxUT6U
+brO4BRIWX3VXGm6zRVpt4AQ2JPgKf24d6LhAy55YHmrxIUw0c4k11uyBOOvBkLgUdVeeqfmLvTw7
+K64/bOT32aPJ9Og3tmAtazfL9m0p++e1Yox/aTMz7cm1N3eLePxIkNBktQ2TSb8yJFeG3EK68sTs
+Rnrlty3uLF6kbuxcVhisjHxq3USBKTVTYa+SjJtIkVwxkVfAxWMIQo1u8tg1E2RaZIwPpbNvqJNm
+gS/sHhCx1Lh08izBr5d+fl+p+Kyv/xf/5xu//u8eH4yaWee2d3R1pbVj5o0W+E4mzprMsK+RinK9
+lUaU6YruWtJjgFzBVkqCM0Cyrowy24fd9iljU4Js2wQp1hLalhW9spNR9zzkkASoMVk6L7hXYNhb
+MuYow/66KbYyhmW36gjY+ph6XDmsABhkmfsMHOJB8yj3gBhBLB4nsojg+m5fKIaVn/X5b0jCCtFH
+B2OXzEBVJusqkgK3lsxUiSsxYNlwVAEpY/y4Ai2XnBkS5gGQ4utalPHgjbRWW40jgSUrJUv1ERGU
+pBm2grLf4sxohCetYmHn0klqvTM01TtzrJyXycez4JrukQ0J128F+ybGiDtAxNlCi7JcW3gre9mz
+ybPXnvIFYHyQJCb4jmMyU6smO3Jt2XXyTIF97eaiPfwloVnhUGE5AlIwqSFRp0ZLgFJ7HGtDOc1Y
+svqICspF34vPbdr2A6S2nhi3T0uTvoCjecdxSFNbCG+xKEGGnDsQwgwgZc9WLuSxalPjVroAiGPC
+MvS94YrMiTxLW1E8v5T+hYdKYga5mSUzVJd7LriYB6YZWO6RsWSV67e1xjXZFwBhUpNzOFEa9Ldv
+c27emIdBVodtj/XEohz0N3rLUi0cebP9rMnKAsO5MUFZymcbr/iYNomsJE0lXl3qa8JEifr3c7cE
+JjefMLAhNQ/xrkAUBWIoGWaSfvCVZ13b3zJ51qTv8zdZPnsyMn2QzLhca3RYDpPGj5JroCc2eynI
+de0c5pUhy5cv1Z4U7hkSbR9qQbit/dMuHNHWr1XSkxVX2DZf4Wqku/jWLhwdpYKMaRWQNOyvXVx+
+DrVqscEDUaLNCxoYkEJJR2QyrRZbxLXhIcSHsEI1jm68AIjQ27YXJ1rJ0UdPa7L62V9+8ze/9/TA
+OCQzvqzV5ZpUwz1+3CRTqzPcx49XAnKpdexaWAHZ9npPrdjUn3dAyXEr9wBMS0AWTVVwI0jOPho2
+TP5qDagNZcOKyg6ACCawALvpokQzNmRoAXsrIO7EiSbP4IPTpQnMg8WNKNfGIrpSYJOjbS/m3fgR
+E5oLAUl9UmNeUdZxJNk7c8RykjoQQLvBtTPMUuUCSh9sugPMxnDi82lm38hl59j0c25mAMxhGpiE
+6RAc2sqaf4jAyRLm6/dAFIgRD4GYBaPWMU4socwFg5S98fih48Y+kLchD0P8mGP8SNg86lSQ4/0x
+hoRZxu3gVSMa46W2OVAOsSH5uNpcg01/MdYTup2sNxBbWty3CE4radu4HFz9ccvMIG+NsQLGdfmj
+uQveFlgRmGEkMx4L0S6KDD4iBueXMWJo0yjH6+cS4kQD4ufr+f3sSVk7l2TXJX7MdSXelon+XCvH
+J+tvJHEP8AKGpKS2Tm3AZR8QOrAk1ebb7OtadOmpFclx8z9Nu6mNbi9LAHon25gzdIgdlQI75qNJ
+D6T4qnoYH01hvAhWoFzuY2ITy4jQTBvsm3NAFPhDlrAsAMTcVmn/9C+/+RvfuwaMDy7VLtdd/FgD
+3kw7CQ1dAkiqgCxPPHnSUpOm1GI/H2/L2hOpABCdRe2gbCWgkOhUaWdq+35I0+p8VX9EL9XSEpkA
+orCFXdfRQ3EccxsdE2JDom6UCk6XaD4ijrmK0kwwsFzlf5KwuJ0vF2x4EdYHPZZUo92T2/i1sFvZ
+JtfWFOrGrm/+M0o2wxGxGmqzfrzEK9i5rIVnPy3+PJWaZr1UCV9MwsULzXUbtjDyJqj0Jf9rY8hU
+kl2Cc9i5yKU4S7CG6mIrz57bppkZ2BA7u+3tbS1mP4+G9jlGJABied7SJSyaxf/Vlklfk8A8+sUW
+0OvYnJLh9gmNpd0hww4jTIAhreCxeYA6KeJUpXh7luggxMKSohUXFu8Bs5YYXoApfemgftN7xuzm
+wtVVCMxna9GBESlsCDlsy9Y6r8N+lz5uCAZ7D5JMgQ1DVcVrzRwKy3MgaqEgADFDb+TStnPafv/s
+//6b3/z+XcD4KFI9tJrpElK5AJDaRzxKNtkKGK1lb5UVjyOzLoey5dvBtmmT6TtQJp+gsg9MCwwz
+wdKDK+PohcZ9bI4AyNLG0/UgpC5eZGkDPDPIcjfpPhQBM/ZLRmk+BOJmdO916cy+hMPlF77xg7+z
+/vOfH4shkxZvk/YQ2mC6UxnlUIu6p2r50Mm6BS0BSSXmtNt0PUryZYW1kK2vQbWEV8GT/H5bXeod
+2tymODEct8qoCkwoNsP78WkSR8d7v7F2HEE8BWDX94i9h5igGEQSSDWyITTyCoy2Hu2bHSDmHoj1
+rf75yor/+JLzvifTj8qOXULjGbYx5HbmtxjyVWTIIsqbD7m1s6Q2MIpCt08znZ0lyZcxJLf4GMrL
+Jt8GOB17YUzkjCkITrGu2tCNsztCWHYbbdvr4j4r2DnjLAid2UT9pkpqpOocHIEkxQCm8yfb5uyh
+yycAsdhtFwBxvr7ikgTmKSQyIaFp/lrwIGWe1Ph84Oz15y6x2QqO2K+cfXml1Np0Ju9MheZYODEi
+4FHm3LzBpTmavqurQKKxV4fWkzg8xnzPpZUCNZkCzzJrE69t9Rb6DskTLRhdX17jDSQpcdF/HjJm
+PSJuJSEQl9FLDEBcr5/nSmr0Nsz4NBKaMwwpypCnypCbZHsg1yc2jUMaS9pXenvOm6rSW4JTG9F0
+OZftiJd9lUFjy6CpyJpKf0vsqnVCXA7FmcyqHygT2W/W42gsmGwUH8itrY2mzrLp2dBr4eDcwI6y
+1vgQFnLtAHG79acrsX3/FmB8VKm+BJBJAUnKkDnVdi9MbHSUSpVtG2xbXUupi1nVtqwNdwMo297S
+sIGqmfU87LkewNkFirN9Hncx2e1sPIAPYsnQ3W1SzHQZCLlLUnpZnmXMAi74ARANP5f7qkd3PnYi
+s5fUcCOguo56zVpsmsSQ2KhtkzQrSdTyHd/Ban1Gsp4FtpG09c6TxZRwsHLdL6t259gUM8tWZjbN
+W/iuk0DSTe5UZLcyYILt27wtrwNhq3fHBKX1SkY2tPfRAxEqK3tA3C5/vrLiP7nmM5+T6SfBjj1D
+sibEOjea87ZjZKqAAtneGJJMtnuWDDsdrK+a64SorUFnYEryXVw92aHImDaegCTziEjZAeqBtzPd
+viS55PLAgG8QgBMm1GMoYfPiAzbsZXkGRGn2jXRdRlez4kVWw1NiR2TI8rPPBG3Wj915liXJBjtw
+ZLVqA7XuLrBzJLX1pzPGNJZt67PEM0Q3o3nfXGQvfFts6X9PaiebUL8/ywyAxp48AeFUki9gw534
+MDS6wJfnala8NIF5MuyIDGnGeG09q10MGEeWXsKsTYozliRdLyW2uYatncrQ/lBjSv89u00zY0x9
+/ewA4q7O3CR+0ixCQty5ILjcgJT9CDaGnAEQG9lCTDgBITrcR2y4Ex/uAfFOrHipCfvk2NFZsjGk
+m+MQR/rak44l/TEUJ0BEphxNc4Lt5AYD3FgTD+xp5zhf4jMOoBvBNzAgsiDGhAT2UA9CqOYM3uHZ
++JCma3nuxIrXWDtPih37WnbW3m+28SjbN1sXRdsiLoslrXx3IpvitMOUvl1vZEsHpsCYyPpmhkrL
+m7YR9vWdOxIZlbrBtviHEIDU1Z/lPAi9+WTGhhnY0MB+AMQ7s+LFzKjsuAHxm08NkEdxJLKk7XlZ
+f2+x3glJEpjSgsYZW3opUFlTf2eaJy7X1QKDtM/vl0kMSTMWZKzQXApC8iakjg33ZPkmrLhbgXmq
+VZmjONIyuuydYN77sjXqkhYsqvStv9YO8rK4XBYce6juxJagWyVn6VbdSei2tlpPFTRdeWh/Syfa
+tt3fz13xseG1BHrR9dVzrLTUalTbvaA8NLeJ877s4I2ubCwbb2YSYEMhaIitXOuyLGj/HKjnnS/X
+VmCepFwH2a7g9H4ITG6KLoN0L2qWp2RbJilTCu5sJYYR26M3MCZuectWO+E4/W4/RmTinW04Jqv6
+ZbKof8qAPiEWtqC3mBCZsL1OSFCuZUPDxX+5ptryVjL9HOR6L7kxCyZKd7WBEhwI3YiSMNEJB4l9
+OULbwpUaOKnzGPnKgy0Ht4XBWd0ORj0Au+eJjaGTC0EI20jvxYY3leerZfo5yHXPkoSTvjrpLou+
+ct2n1Gdeg3z/jAQlvHW+QDt2fY0m57WxoV4zaQOELsbP0ECRu2u4XRfulyvB61mXuS046ySYBae5
+FXtGfl6vtakB5Nj3f8nBN3RJzthsfh6Iby3Pd5XpZyHXoaSGGXeVbsKsW+W7bHsl1vKYWyKwseVS
+zWuTcbMAg5cobTYodyVA4W7KU1+jlkn/GA5lzK2s6IyYaNxlYKGwmD9aNGR16xpXIhNilkxEl7Lh
+zeT5zjL93OR6Jt0m3+y4kCDJrNl36g5USi2Tbl4in/cRrz3Kcv4mA1+MHylM+hKKrXgR/28FwpvK
+851l+rnJ9Uy6qclhkG89nyX7Ngn3hU0q49v1552c/0yz007WcZLDddeYYIvJrknvz0B+/b2ADC/k
+44ulfI4wxaTJ8QJbA+fLJPle5PltZfpZyfVMuo0pUb6hru0SbhtgmIxbQm3ZuL3uAuwJ0/zlrt/2
+YSRex3oD+9l+4kK0x4KYmNyRCe9Fnt9app+zXB+Z5piBMxFaLxwlO4Lz2lYxa2HLcl11JkMSbeBb
+hok8zTrqAXiBTfMoQLwJGN8VQM5AOQIzRG9DnHhK3O8n3eLQCw92HuNDaQsUB+B1AJwz4I1AeK9A
+vBkY3yVAXgpMomnZmY8O9CkdH+4DsE1zGayG3yMA7y1huVkC8y4kNOcYyrw9THp8AZUmP7kkA6wj
+PPaLf6U1a1sAVq80udZhoDtFQmlXyn6l9l4g/xAJvuStLjdPWG6dwDz7hObqpMepriU/E/YMbiJf
+ZN4cPiBswzKhVBG6S2vQ05Dnm8v0uyrXV8kLM9/7H7t/4D0KEO8FjO8rIC+Og44AOxml/MiXBwPi
+vYHxBZDvxOVBgXjTBGYnofnmfQe9L5d3A4j3CsYXQL4A8cnI9ESyv7JeX7/I9gsQHxWML3HkswDh
+pl4/fSwgPjgYXwD5woaPFjO+xJEvQHzSzPgSR74A8cmB8UW23+/48EmC8QWQ7zcbPjkwvsj2+8uG
+TxKML6B8P9nwSYPxRbrfLzZ8FmB8Ycn3B4TPAowvoHw/QPiswPgCyncbhM8SjC+gfDdB+KzBOAEl
+vSfAxEVR7wwI3wkwvkfAfOdY8J0G4zsIzHeaBd8bMD5TYPbrkt8LAL5XYDwAJj0iQGcL4t878L3X
+YLwCoG8L1nPTF9574L2A8X7A+gK2l8vL5V27/H8BBgDgfdIbsqwnogAAAABJRU5ErkJggg==" transform="matrix(0.24 0 0 0.24 26.5088 25.7793)">
+	</image>
+	<g>
+		<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="42.7695" y1="48.229" x2="37.5361" y2="57.6215">
+			<stop  offset="0" style="stop-color:#FFFFFF"/>
+			<stop  offset="1" style="stop-color:#85BEDF"/>
+		</linearGradient>
+		<path fill="url(#SVGID_5_)" d="M43.986,53.023c-0.88-0.377-2.303-1.005-2.93-1.8c-0.461-0.545-0.419-0.545-1.131-0.796
+			c-0.587-0.167-0.963-0.502-1.633-0.585c-0.502-0.043-2.51-0.545-2.386,0.166l-0.042-0.166c-0.25,0.795-0.628,1.464-1.046,2.218
+			c-0.294,0.544-0.209,0.712-0.042,1.298c0.293,1.088,0.419,1.172,1.298,1.632c2.511,1.381-0.292,5.4,1.801,6.571
+			c0.333,0.21,0.752,0.336,1.087,0.461c0.419-0.586,0.628-0.963,1.214-1.339c0.377-0.21,0.629-0.293,0.88-0.671
+			c0.333-0.417,0.209-0.837,0.418-1.255c0.293-0.586,1.088-0.42,1.549-0.838c0.586-0.544,0.627-1.256,0.879-1.883
+			c0.293-0.67,1.172-1.004,1.423-1.634C45.619,53.567,44.613,53.274,43.986,53.023z"/>
+		<path fill="#FFFFFF" d="M52.106,36.908c0,0.418-0.503,0.67-0.293,1.046c0.419-0.503,0.712-0.754,1.382-0.837
+			c-0.168-0.502-0.712-0.837-0.837-1.339c-0.126-0.377,0-0.88-0.545-0.754l0.125,0.125c-0.627-0.125-0.335,0.671-0.21,0.964
+			C51.813,36.322,52.106,36.74,52.106,36.908z"/>
+		<path fill="#FFFFFF" d="M51.102,36.07c0.032,0.048,0.063,0.11,0.095,0.181c0.024-0.057,0.049-0.116,0.073-0.181H51.102z"/>
+		<path fill="#FFFFFF" d="M51.196,36.25c-0.161,0.354-0.357,0.595-0.429,0.992C51.497,37.608,51.399,36.73,51.196,36.25z"/>
+		<path fill="#FFFFFF" d="M48.758,32.261l0.083-0.126c-0.167,0.042-0.46,0.042-0.669,0.084c-0.294,0.921,0.669,1.047,1.214,0.628
+			C50.307,32.135,49.345,31.8,48.758,32.261z"/>
+		<path fill="#FFFFFF" d="M50.432,44.525c-0.078-0.039-0.084-0.042-0.156-0.077c-0.003,0.011-0.053,0.035-0.053,0.035
+			c0.116,0.033,0.195,0.078,0.243,0.134c0.003-0.004,0.006-0.005,0.009-0.007L50.432,44.525z"/>
+		<path fill="#FFFFFF" d="M54.708,28.046c-0.065-0.071-0.138-0.145-0.216-0.222C54.56,27.907,54.633,27.978,54.708,28.046z"/>
+		<path fill="#FFFFFF" d="M56.794,33.182c0.006-0.029,0.011-0.061,0.017-0.09c-0.047,0.003-0.094,0.007-0.142,0.007L56.794,33.182z"
+			/>
+		<path fill="#FFFFFF" d="M50.264,44.441c0.005,0.003,0.008,0.005,0.012,0.007C50.277,44.445,50.273,44.441,50.264,44.441z"/>
+		<path fill="#FFFFFF" d="M50.426,44.652c0.021,0,0.045,0,0.066,0c-0.006-0.013-0.017-0.024-0.026-0.035
+			C50.44,44.632,50.377,44.658,50.426,44.652z"/>
+		<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="37.5674" y1="35.9604" x2="28.103" y2="46.9596">
+			<stop  offset="0" style="stop-color:#FFFFFF"/>
+			<stop  offset="1" style="stop-color:#85BEDF"/>
+		</linearGradient>
+		<path fill="url(#SVGID_6_)" d="M35.029,49.883l0.167,0.167c0.125-0.125-0.629-0.502-0.796-0.711
+			c-0.335-0.503-0.041-0.879,0.042-1.548C34.065,47.832,33.688,48,33.269,48c0.128-0.251,0.797-1.004,0.546-1.298
+			c-0.335-0.292-1.214,0.796-1.592,0.796c-0.209-0.712-0.418-1.926,0.127-2.512c0.335-0.376,1.13-0.628,1.591-0.461
+			c0.627,0.21,0.585,0.629,0.711,1.173c0.545-0.586,0.293-1.507,0.628-2.136c0.209-0.418,0.755-0.459,0.796-0.962l-0.085,0.084
+			c0.671-0.67,1.258-1.381,2.01-1.967c0.628-0.503,1.506-1.006,1.926-1.676c-0.544-0.083-1.048-0.041-0.587-0.711
+			c0.419-0.67,1.467-0.21,1.591-0.837c0.127-0.586-0.836-1.256-1.004-1.759c-0.168-0.418-0.335-0.962-0.42-1.423
+			c-0.208,0.21-0.334,0.502-0.543,0.712c-0.335-0.586-0.085-0.837-0.795-0.712c-0.419,0.042-0.837,0.335-0.963,0.753
+			c-0.166,0.503,0.167,1.048,0,1.55c-0.125,0.418-0.587,1.046-0.963,1.214c-0.125-0.46,0.251-0.921,0.126-1.381
+			c-0.712,0.041-0.921-0.335-1.466-0.67l0.168-0.084c-0.251,0.167-0.628-0.419-0.921-0.587c0.502-0.669,1.214-1.171,1.758-1.8
+			c0.419,0.796,1.089-1.13,1.424-1.465c0.25-0.293,1.173-0.585,1.424-0.167c0.291,0.502-0.419,1.046-0.67,1.382
+			c0.459,0,0.961,0.083,1.338,0.334c0.378-0.292,0.879-0.753,1.089-1.214c-0.335-0.208-0.629-0.418-0.879-0.712
+			c0.25-0.501,0.194-1.154-0.325-1.045c0.084-0.051,0.162-0.108,0.242-0.168c-0.964-0.293-1.298,0.335-1.09-0.837
+			c0.084-0.544,0.21-0.879,0.67-1.381l-0.125-0.042c0.251-0.251,0.46-0.586,0.628-0.879c-0.042,0-0.168,0-0.21,0
+			c0.042-0.183,0.003-0.333-0.098-0.456c-7.169,2.409-12.423,8.983-12.896,16.845c1.2-0.378,1.926,1.715,2.32,2.697
+			c-0.127-0.46-0.209-0.962-0.419-1.381c0.586,0.671,1.256,1.047,1.34,1.968c0.085,0.586-0.167,0.545,0.502,0.795
+			c0.503,0.168,1.047,0.125,1.507,0.336C32.601,48.251,34.023,50.092,35.029,49.883z"/>
+		<path fill="#FFFFFF" d="M47.753,29.331c0.083-0.167,0.754-0.292,0.964-0.335c-0.043-0.668-0.336-1.381-0.127-1.967
+			c0.101-0.301,0.337-0.69,0.607-0.974c-0.321-0.066-0.644-0.123-0.971-0.172l-0.351,0.044l0.33-0.047
+			c-0.922-0.138-1.866-0.21-2.828-0.21c-1.273,0-2.517,0.126-3.719,0.365c-0.143,0.358-0.353,0.826-0.353,0.826l0.112-0.017
+			c-0.407,0.688-1.621,0.729-1.661,1.565c0.629,0.083,1.299-0.168,1.926-0.042c0.503,0.795,0.711,1.423,0.252,2.302
+			c0.292,0.335,0.668,0.043,1.005,0.084c-0.086,0.711-0.754,1.255-0.461,2.051c0.083,0.294,0.292,0.962,0.418,1.213
+			c0.251,0.378,0.378,0.294,0.838,0.461c0.46-0.879,0.375-2.008,1.339-2.51c0.629-0.293,1.382-0.335,1.925-0.671
+			c0.377-0.25,1.047-0.752,1.047-1.255C48.046,29.75,47.627,29.666,47.753,29.331z"/>
+		<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="55.1768" y1="40.2554" x2="59.9225" y2="54.7655">
+			<stop  offset="0" style="stop-color:#FFFFFF"/>
+			<stop  offset="1" style="stop-color:#85BEDF"/>
+		</linearGradient>
+		<path fill="url(#SVGID_7_)" d="M55.146,28.374c0.021,0.026,0.04,0.052,0.058,0.078c-0.067-0.057-0.138-0.111-0.203-0.165
+			c-0.052-0.03-0.104-0.062-0.154-0.092c0.442,0.503,0.608,0.906,0.608,1.721c-0.251-0.084-0.459-0.167-0.668-0.292
+			c-0.253,0.879-0.378,1.548,0.082,2.385c-0.123,0.409-0.482,0.937-0.383,1.39c-0.238,0.474-0.488,1.237-0.369,1.707
+			c1.004-0.837,0.92,0.042,1.59,0.587c0.208-0.377,0.376-0.796,0.628-1.172c0.125-0.168,0.377-0.043,0.419-0.419
+			c0-0.293-0.378-0.336-0.419-0.544c-0.083-0.419,0.21-2.177,0.712-2.302c-0.08,0.598-0.124,1.233-0.235,1.835
+			c0.152-0.013,0.305-0.041,0.455-0.071c0.003,0.258-0.189,0.646,0.062,0.923c0.441,0.484,1.11-0.09,1.565,0.366
+			c-0.224,0.368-0.342,0.184-0.666,0.252c-0.36,0.075-0.4,0.235-0.543,0.619c-0.158-0.378-0.533-0.796-0.807-0.243
+			c-0.194,0.394,0.052,1.049-0.344,1.332c-0.335,0.239-1.232,0.334-1.489-0.034c-0.243-0.35-0.028-0.884-0.334-1.209
+			c-0.063,0.342-0.269,0.657-0.228,1.001c0.036,0.318,0.303,0.562,0.17,0.874c-0.272,0-0.617,0.02-0.819,0.185
+			c-0.167,0.135-0.171,0.392-0.428,0.493c-0.227,0.09-0.582-0.045-0.767,0.163c-0.091,0.101-0.11,0.48-0.162,0.622
+			c-0.233,0.029-0.521,0.057-0.729,0.144c0.095,0.507,0.824,0.659,0.777,1.246c-0.028,0.358-0.169,0.348-0.504,0.295
+			c-0.361-0.059-0.765-0.082-1.122-0.154c-0.013,0.745,0.426,1.229,0.041,1.982c0.132,0.062,0.247-0.038,0.361,0.011
+			c0.088,0.037,0.162,0.146,0.218,0.169c0.228,0.09,0.404,0.137,0.67,0.092c0.28-0.048,0.396-0.13,0.547-0.342
+			c0.054-0.076-0.016-0.215,0.068-0.308c0.08-0.086,0.214-0.074,0.307-0.148c0.365-0.281,0.346-0.969,0.719-1.213
+			c0.062-0.038,0.465-0.024,0.62-0.082c0.221-0.082,0.337-0.053,0.495-0.214c0.124,0.476,0.399,0.861,0.76,1.21
+			c0.359,0.349,0.818,0.714,0.046,0.845c0.247,0.33,0.323,0.448,0.614,0.067c0.215-0.283,0.339-0.564,0.602-0.788
+			c-0.479-0.45-0.898-1.005-1.243-1.582c0.501-0.493,1.635,1.117,1.656,1.541c0.024,0.464-0.232,0.661,0.241,0.878
+			c0.641,0.292,0.413-0.452,0.436-0.918c0.384,0.213,0.77-0.176,1.125-0.046c0.182,0.065,0.213,0.283,0.334,0.411
+			c0.192,0.206,0.123,0.16,0.333,0.22c0.425,0.122,0.624,0.003,0.756,0.543c0.08,0.329,0.191,0.762,0.053,1.088
+			c-0.206,0.483-0.866,1.12-1.344,1.29c-0.493,0.177-0.941-0.228-1.384-0.413c-0.709-0.296-1.421-0.555-2.112-0.93
+			c-0.679-0.366-0.541-0.109-1.042,0.146c-0.53,0.271-1.057,0.683-1.624,0.87c-0.762,0.254-1.834,0.379-2.659,0.377
+			c0.192,0.31-0.392,0.864-0.562,1.171c-0.672,1.047-1.047,1.633-0.713,2.889c0.168,0.628,0.378,1.172,0.713,1.716
+			c0.167,0.251,0.292,0.628,0.585,0.796c0.376,0.293,0.336,0.125,0.838-0.043c0.544-0.167,1.465-0.292,2.051-0.125
+			c0.208,0.043,0.293,0.251,0.501,0.293c0.085,0.042,0.671,0.084,0.712,0.125c0,0,0,0,0.043,0c0.126,0.545-0.168,0.963-0.168,1.466
+			c-0.042,0.545,0.084,0.46,0.294,0.963c0.376,0.879,0.082,1.968-0.21,2.805c-0.336,0.963-0.084,1.631,0,2.637
+			c0.047,0.563,0.345,1.089,0.53,1.611c2.281-1.364,4.252-3.192,5.782-5.357c-0.259-0.639-0.451-1.269-0.16-1.779
+			c0.628-1.13,2.009-1.632,2.302-2.972c0.085-0.461,0.043-0.921,0.21-1.339c0.11-0.369,0.351-0.551,0.654-0.668
+			c0.304-1.347,0.465-2.748,0.465-4.187C64.359,37.743,60.666,31.694,55.146,28.374z M57.213,32.847
+			c0.023,0.025,0.037,0.057,0.045,0.09L57.213,32.847z"/>
+	</g>
+	<circle fill="none" stroke="#1996CE" stroke-width="1.5" stroke-miterlimit="10" cx="45.377" cy="44.648" r="19.373"/>
+</g>
+<g>
+	<g>
+		<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="89.5537" y1="80.9458" x2="56.0727" y2="42.314">
+			<stop  offset="0" style="stop-color:#E6BA21"/>
+			<stop  offset="0.546" style="stop-color:#E6BA21"/>
+			<stop  offset="0.5592" style="stop-color:#E8BF38"/>
+			<stop  offset="0.5886" style="stop-color:#EBC964"/>
+			<stop  offset="0.6206" style="stop-color:#EED287"/>
+			<stop  offset="0.6545" style="stop-color:#F0DBA3"/>
+			<stop  offset="0.6907" style="stop-color:#F2E3BC"/>
+			<stop  offset="0.73" style="stop-color:#F3E9D0"/>
+			<stop  offset="0.7735" style="stop-color:#F4EEE0"/>
+			<stop  offset="0.8237" style="stop-color:#F4F2EC"/>
+			<stop  offset="0.8862" style="stop-color:#F5F4F3"/>
+			<stop  offset="1" style="stop-color:#F5F5F5"/>
+		</linearGradient>
+		<polygon fill="url(#SVGID_8_)" points="95.078,47.589 77.031,44.967 68.961,28.615 60.89,44.967 42.844,47.589 55.901,60.319 
+			52.82,78.293 68.961,69.806 85.102,78.293 82.02,60.319 		"/>
+		<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="73.2637" y1="73.4585" x2="66.5271" y2="35.2534">
+			<stop  offset="0" style="stop-color:#E6BA21"/>
+			<stop  offset="0.362" style="stop-color:#F7D709"/>
+			<stop  offset="0.8834" style="stop-color:#FCEE35"/>
+		</linearGradient>
+		<polygon fill="url(#SVGID_9_)" points="88.548,49.055 75.014,47.089 68.961,34.825 62.907,47.089 49.374,49.055 59.167,58.603 
+			56.855,72.083 68.961,65.718 81.066,72.083 78.755,58.603 		"/>
+	</g>
+	<path fill="none" stroke="#9B7F2E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
+		M59.487,45.171c0.771-0.111,1.685-0.775,2.029-1.475l6.816-13.811c0.345-0.699,0.909-0.699,1.255,0l6.815,13.811
+		c0.346,0.699,1.259,1.363,2.03,1.475l15.242,2.215c0.771,0.112,0.945,0.649,0.388,1.192L83.034,59.33
+		c-0.559,0.544-0.907,1.617-0.775,2.386l2.604,15.181c0.131,0.769-0.325,1.101-1.016,0.737l-13.632-7.167
+		c-0.689-0.363-1.818-0.363-2.509,0l-13.631,7.167c-0.69,0.363-1.146,0.031-1.016-0.737l2.604-15.181
+		c0.131-0.769-0.218-1.842-0.775-2.386L43.858,48.579c-0.558-0.543-0.383-1.08,0.388-1.192L59.487,45.171z"/>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/libpalette/bookmarkIcon.svg b/Sankore-3.1/resources/images/libpalette/bookmarkIcon.svg
new file mode 100644
index 0000000..a836c00
--- /dev/null
+++ b/Sankore-3.1/resources/images/libpalette/bookmarkIcon.svg
@@ -0,0 +1,400 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="96px" height="96px" viewBox="-17.302 -5.289 96 96" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g id="XMLID_2_">
+	<g>
+		<path fill="#FFFFFF" d="M40.245,0.75c-3.26,0-39.495,0-39.495,0v79h60c0,0,0-57.821,0-60.688c0-1.682-0.81-3.904-1.754-5.062
+			c-1.58-1.936-10.316-9.098-12.142-10.773C45.666,2.138,41.152,0.75,40.245,0.75z"/>
+		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="30.75" y1="4.7002" x2="30.75" y2="75.7998">
+			<stop  offset="0" style="stop-color:#F0F1F2"/>
+			<stop  offset="1" style="stop-color:#FAFDFD"/>
+		</linearGradient>
+		<path fill="url(#SVGID_1_)" d="M39.296,4.7c-2.934,0-35.546,0-35.546,0v71.1h54c0,0,0-52.039,0-54.619
+			c0-1.514-0.729-3.514-1.578-4.555c-1.423-1.743-9.285-8.188-10.928-9.696C44.175,5.949,40.112,4.7,39.296,4.7z"/>
+	</g>
+	<radialGradient id="SVGID_2_" cx="49.4316" cy="10.2793" r="16.1285" gradientUnits="userSpaceOnUse">
+		<stop  offset="0" style="stop-color:#D3D3D3"/>
+		<stop  offset="1" style="stop-color:#FAFDFD;stop-opacity:0"/>
+	</radialGradient>
+	<path fill="url(#SVGID_2_)" d="M35.175,4.628c0,0-9.017,6.213-2.155,14.081c6.862,7.869,11.963,10.418,17.65,9.242
+		c5.687-1.177,5.529-1.826,6.314-3.395s0.932-5.307,0.353-8.13c-0.533-2.598-7.11-7.148-10.026-9.238
+		C43.011,4.106,40.686,4.562,35.175,4.628z"/>
+	<path fill="#FFFFFF" d="M43.665,16.395c1.835,0,10.509-0.217,12.083,0.438c1.573,0.655,3.984,4.525,3.984,6.492v-8.531
+		L39.931,1.287c0,0,2.41,2.174,3.067,4.797C43.653,8.706,43.665,16.395,43.665,16.395z"/>
+	<path fill="none" stroke="#A1A9AD" stroke-width="1.5" stroke-linejoin="round" stroke-miterlimit="10" d="M41.531,0.75
+		c-3.26,0-40.781,0-40.781,0v79h60c0,0,0-57.383,0-60.25c0-0.764-0.073-3.548-1.018-4.706c-1.58-1.936-11.759-10.74-13.584-12.415
+		C44.96,1.29,42.438,0.75,41.531,0.75z"/>
+</g>
+<g>
+	
+		<image width="158" height="158" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKMAAACjCAYAAADmbK6AAAAACXBIWXMAAC4jAAAuIwF4pT92AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANTFJREFUeNrsfU2zbclxVWadp+Hr
+ocNBMGGAuhsPCBkQYcKfc8zPgBEEhKQW2A4hLAmHjAQOGPE/mIJsCYccgIeo3Zow8YBg2J5Jb1ey
+d1Vm1sqq2vucc9+5X+/dK51+957vs/c6a2WuzMoievl5+Xn5efl5+Xn5efl5oj/8cgjqzy9/98ev
+138+3n6X9agwb/9yOUCv9ECxHzCmRW9LLJT19/VXPLJ7x/bzH/+LL3/6csRfwEhf+oM/3UD30fbJ
+N7wo4LhcR/QviRWM5eYGRiJ/xHr1CsaKNt7AuD0HARj5GIyfJuZ/2wP0v//zv/fpCxjfg5+/vQJw
+/aAfKUg20H2dCqSogRFpb70urb+c9BiVmyYAdPB1wEuzo1tfbu+Af7re+h0g1s9/9M/eP3C+k2D8
+pe/86PV6cj9iBcz67wbErxfpdVQ0ECITNhBu96v3zut/jwCY7Ej2gOPxYB8dcNFLASfRdwyYP3xP
+gPnOgPGXvv2j16Lyu8rghxv7JQUZV5xVaJmkbrjaASHV+zoLOmUiALkxHiLQACeu1hPGPA9G/3sD
+5vq+vr39nt9xYPK7AEKN9z5cwfXJhqGTgi81qgJYgiQrkF71IOT6wJ4FjQHLw3g4gJzgb/GkRgJr
+BrTNzkS5fX3Q+m/2WLQ+KBc552+vf3/+g3cQlPzMQfihAvETzYBXQAAQuQVrBRzAhtu1mJiUBwEI
+BxbUp2NuzGfgc+AVJDGnM9pc3kTPityhNE/YUkRK5i7y6foy394wu/79+Z/807/76QsYH+Hnb377
+h6/Xk/3hK+INhF+jxnR8qjFdJS6Q5R029MTEYkJIoAcWBGsHYs4OfHYHiVEj8+UHWxx38aoC1h6g
+FZxbfFnY8r89c7Z8NmD8G7//wy0p+fDVellP/icnMFAKIzKH+LD+Gu8T2LBCcfMJGWPCGQhRgu25
+0wg+RtD1arzddjpzvLfHLDIKOY8gFQMnAPMnohL+XEHJzwGEmxzzdmH62hc0JpwBMTkHGvpGWbbf
+s+YyKMlpAsJqbAMLTgCIYKkhArHFeyTwREcoQ1BKjCHT+h8EqT0MgSm5gXKLK+UZgpKfLgj/RGPC
+khl/bQPByor86gwQ3chms20qi72C2DCFPPoYhIkoyDwLBwDq4x18na1T32wA5P4hF0NXvJvDUAyc
+6/0WuJsBU7ZMx9iygvKT//qM4sknB8a//s0/VjkuIPyqsdGpMGJNTI6ASMwhPlTLZpDlng0ZJbkD
+IZM/8z4AueGtL74YpZ34vExn6bHo4LIryz32gJmNLWtCvgHxW5tX+RxAyU8NiOs//2g9o199pelF
+D0TLmk9ngLjB61VNRDYyKwyJspzG5KTGhZZUdyCkAwAmvWYGOp45NzyikDvghmRGQcpAlUIjMI0Y
+EZS5su0GxK89dUDy0wChSbJ8cTto29lfwbYC7u2AiPFhgrSlY0MP/hKRx4RJeABhz4D2xwC+rg7j
+rCsHRx3iRBEKykwo3x2DImOKRLY0UG7yvcaUn64f8FsrWp8sS/ITAeJvV0muZsypxHVrfNhJs2jy
+ksjtm10gWgZzRpYLSBPEmBgT1gSogZDB0CHNjjvwodwP9Mjmhu+eDWmOjnQsiQBtJrgzprTgsrIl
+MCVBTFlA+URZ8lHB+NdWIK5v4LdZgZg2BlN4baz4BTWxLQxLCiI0tAmBdADEmSwjG7JVXshayPwV
+Wu1GWRKTEe4sHX9+qWy8PVdW3/KScmB2XIL3rSAVoMYMwJSWxIgXcLgypT5QINHZpPtJsuSjgPEX
+//UfbyD84noWN8vmq5WFhDFOHDPnev3bAHFIUrzi0oDoknwOhJ4Sgawr+E6OmS1EqPc7HRz0Pk5c
+LElSojSQmu9dGE6ivTMDpQaU5b6Y6BRA1tueFEvyYwCRKht+JTlRuTw7EGeZswHRKytslgvzF9x5
+SUdALM+Lj7XY0NiQgyXOAYQMcs8TAEqxlfQ10O0eDzpPWFFmhqMAGFPFoANzQc02DxwfIzWrVv9H
+MrBkfoKy/aBg/MVv/OD1enK2+PAr6uOVNq0deY5lPmUzQcjU9Lec/C+osgrTRUA0YFliI8CG9v+T
+x4ARhBZXTgHYUpvRVeQLdHrOlp6s9MBc7A7KlgjKDImOgtRZMruCq2w/AUA+GBh/YQXi+mL/cGNE
+BvBt8nxSeT5N5DnVTFiZsKUsEkt85fnoAIiYqGB8OJPlhBVFAySAMB0AcOxlbECWC0+IB37wIDkA
+5oZDBGWWKN85suTGhqNsV0B+a2tT+8EjgZIfCogEQCwxlAquseIse+7jRG/uUsY0ILL6iOoTToFo
+z+UsB7Ls0UJkw5ZV0wSEPQN24JNOpvn42MuUICWUXqTXc8hPHJRZ75mtDU2RiyxpsWSWVvZRQFaj
+XORrj1FK5AcFooPCuqgpJC1ad+7kud7Wx4mesBhltkYwOqULgGhg4302LIa7hEDSzccUC36t7BLX
+IAwR466xI3PDG5PoBk4JJUIBMhVpyc1yxJJHgBT5yfrnJw8NSH4IIBIAEVnxKGnZlWe9EhOWEmBC
+ZSUltgyW+xhxF4idvWP3OcF12hHebG8ODmPAWtc2Fh3wM7XpgE0ZOsBFkDEh4xa4LYN0A0vGWFIh
++VQAyQ8GxIEV2ROTPmnps+denhPI8yxOTHwHIPoXpWbJwi054h0QEnjt4Ekq5pjGqsw8RJwlMdKB
+VKD0J8iTzeNBG6iAslhEWg8MLImy/YQAyfcNRAIgzlixT1pE5TlxzJ47edaMYz9OPJlJfhkjBlkm
+zcpfDUkM11gwFHxGAI5lw6jPRz4jWjqt+oz9jC0r7kHJSo3GktliyayZ9x0BuTB/8hDd5PwgQNxh
+xXNJi6HrUJ4ncWKtbROHdTCpJStTIPayPGHDIcMGEA4AjGXEq461xJSFQJYF1XkApd0vR5Ys0qyy
+bcnNHiDj9fV+6+8/WXH8yX2vu0n3CUTqAqXJys1aabBKP3tpLoZWmIxYGW/zWcTbuShYOJaAaEnO
+kpOrgWjmJrcbkr/H+lVxu4jb32vMaq/JtdxojsGFly1pE7LX4qRv2N4LewVpfD/VjWcTCf0c9b4n
+M+vbgh4/PrgGKPlx9C/431r//L37ZsZ070A0wEV5VhD6G6hJCySo4/oVriazduEMfqI9X2Vc9wSp
++YgXA5EhDCCIGXkHhD0AHSyJKXGzKS/6IQegfw8GYKb2Dg2UUJ40898Dh0sBaZ88o6OgSyzWXz/4
+jf/0vz5+8jK9B8RZrKgs4VaOx4qp2jxm5XS1Z01auByodCDPr/qEhVsSdOqSlT0gYmoNIBybJ7yz
+wp+3EfkQPx73eUufV/eLXpqEFqC5RItATbBJq8WNVZe9jHhWspcq2UP8uNT4817lmh+CEbHa8gqq
+LTGDnseKVvL7wp65naoF5H5i6uJEWGDwCjJsI5drgOh2o7IvgpCHHrLOxJkGjjGZlt2SoIS2HY/x
+EJS5hZmXArLEheRJTXnQG6mrF2bxowL0JyuQP7mPYQK3kOkv7gGRw59iY5PqSrnWHjbEiv06ktSk
+2yjRwWf3DfKMcaKmEmj1nDRrvhCITT/dclKJRBlWhHNzRk1bTXLZQrn6R39lu9quT6ECZM69Og1J
+nQKpcSlI9yDbHkd2kr3KfzkOGIufOLQreyEhtSW5m1T/4a//x//58ZMCo7LiF/d5t0mTAtA/HIdY
+kUKsSGOsGJIWLATz6CfWHkLwIFucqAdWml10ARCdq1MKNg9NQWgAbBCz7MZDFLW09DLgUmvoLSNq
+wBxByYl9TU5KDroW0x4B0osDfQ2/No4QLrNgq+2Xn4/5HhKadB/y3Mm0Cs6Go8aKMVnWxfe0z4oZ
+Vv0hKyY/uAB0Dn44cWisbchtickciAnvZ9elBqoZCBGAqfid0pIPA1r3v0SYTRPenxNDoDsBpbOp
+J/+WHl8GyO1OYXwBqI0mfKhA/tgtobk1O6b7ACKCqmulmto5jJqAld4zrEi62Cq1BtlOnm1pAAcL
+SDr7Zg+I1AExsCHyMYAwAtBcIQ+C/X8NafF/AOcOnMwISsic2VkSAMkHgAy2j8Y4icEiM7mOxj47
+O1ZXY2PHm8p1umWcOJNoy4tP3E9/He2c2u/Nw6q75RJW1IOXWwIxyLPFiaf4Ntu3HUBHyJxgMzF0
+SxRmSj0IG6qoqW2Q6ZRAxNffIUxEA93BuR0jqEpZaOD3DYBkVxneY8i4rKION7D4EVdKulxTmyeE
+XiTX+PG7v3YjQKabx4lziaapRNu3keLaFAFfsT6SzrNil7Q0hp7Ls10lzUXqY8S28Cu5uYjpuN1E
+J82aWs2xAZAVbCcwxJm7S0poeqvujsBMKpvGuoElQbY5uUrMJVt9yDNyHdStS2Z84BVVQ/x3HxyM
+l8aJTNMegVGipV0nxord41WiZ0x2yIon9xnn8ozsB7Gmy1STrLCOuslcYUMom0Ma7QBMELwmss4P
+jnGh5j/eGaLvsQKU7bnAVrJJaxWH/ksrj3tNPsaQ1lwc7ziTawxzzrCjGeK3YMd0c3nez6JHiebL
+EhestlSTqA34PMeKlj2nTp6ptzAYJGqIEfW5kgd1NYYNbNhAmNrsvPKQUzHj6+Xk19UL/l5uTy1O
+nDGsgaGN/mvITOBvhhgSkw9IRrBBk02JpPUJxGTm/tkx3Vqeo0TTmSwayhmdRCfrH8RhhsCK3MYw
+FN7cY0WzemLSwoRfFsZFfxgbklknIHD6nhIxZDJeJw4gNPCdoEzox8bbhziM26uxp16Sx70BlJaK
+eM0bypfcGo4DIA2pEJWQL8sFuRbNUBKQB7Jj7vqQUuvB/OBX/+jt2DHdnBU7o3sAaZdF065EMw92
+TmBXDoC7MytSTBeHrDlIcwMiBoip0WoAYasTQ2UazDoPDCGhEYgVmRooW7uGNQ/DGD8AJMaQIalp
+CU2Q68CO1X3YZcd4eijMM7Jk5lf/w//4+F7BeE3S0k9TQH9qz+imHYnuE5eZRHtYoPhAVqRjVoTx
+3iDPIZHhMNsRgWgYOqXW8ZIogpBC4mu+0zxmNISkvqUCQBl8T3/S84CsRVRoSonnhGfsKBN2rK+L
+ChWkervy47eR63RzVtyxdEbgxnhxlkX3z9tLNEfZxzSnfjipXSo7rEjAirggu/sWWXePRCkHWQ5s
+CN278Xcv1AwtY63q0hJs7EuzL9+rwJL+2Ca93JKR+rHEPyPKNWTX7UQBO5rVQ5BZQ+0chxdEqa73
+/eCu7JhuGSuO8WL7CvaWDg7I5pElPYs+lOiYuCCBOnBdSiesCMyDct8swmSPZVhtEIFoXeWtqav3
+wwlLfIovCRdNhszRwdk/4EU5WOrrTQCZWpEFylCNHftjjcwb2NFDKhr61IfTFqXaate/e1/MeG2s
+CD0n9t3s4kXAHcaLoNRudB9JNCYuPElcmLvFeh0rEjCdsyIUnkPRgoIR7ltzIBA52JAhv+FW1Rsb
+G2F1IyEwu8ZdAu9xAKQnNQRF+raXTWln6pMZJpqyo/uOE6k2JGbvSR2kevt5/St3YMd0ywya561p
+g0oniTdI37Lfx4vwZjGLhj6rQaJr9ZBjebFn3xkrgnw3eQ6lQZ0+IQMQo6neTaHgsRkipUQg283r
+DviA7d8gsfLxfTUi9qYHu1fqp1LVY8eT2SrzzPqMVPePT3Fl453YMd0HK86SGExeFD1BXvMF8eKQ
+RXfBIncRgCAi+nmJWHCdsGIcVg+Oc/2WcCIeGDEhJtlrudaZ0wPSumuwi4yL2Z1aC1jqWBIilGbe
+d7zESHuMFZrUVtcmDtvTjK2WNZGZSXU4p54oBr9s++P1r/z769gx3SpWnCQvtJu8dLKc4gdt8SJF
+mWiZChjd3GLSvj/tKHGJsePIirBqFisOKs8c1o1EHW+OZAIQtmy9GYSIxBRHTFrpMOz0AeUeP/mY
+NKXYDhGSGWRHzKx3pdpYbpZVU3/MeDhXavX8zq2Y8Y6x4uhpn2LcFj5N/7UU3T5XcH0yxXjR5AKN
+7j6LRntoKtG4j8a4UQuuHGjap6x4CoPow5YfAMSh5xG6y/ratMaZINNgQeK67FjGbOtXFDZhUWKg
+SBbIrLmx455Ub91Oe1k1xo3IktKvrGD64O9fETumm7HiWHkJoUWbrnqcvAwTksDNZpGzMal9Q2W+
+oqJfqxL3zMAs3VMUanN2dHQzUiADPXRAhJV9AYDWG8Eux9hlphMx2lINaOr11uOoFlhrj+wYNtls
+gbBEd2JPqn1G+XE0Np6D9tfWZvY7b8uMb8uK08oLXxZqTpOXISjcuck4Ik/ixb0mjqlEM5ILh6aL
+sVWTB9Znjh4mWw+jsV2d3+J2Dkwh6LvQyR7jzoQmUBgTppiZudVDPJfqIYGZx1PVAO/uKxPC6JOY
+ifl7PRjvyoqjrXN9XMB0LsCEDSSdLdtsdm4WUE+X3M924K4sRCPIQpwpHhmNrBjn8/DQE6mgq6vP
+ErIgtnRXtsTFQNGLRrmWYPMJYR9mq3fjGBaU6u5TdjbEPG5knqngznbGkW5ff/n7l0l1uq9YcRdf
+E1vnsPKCBiw89jSLSaXVV0/dOxi0vI8XQ0+lTD6QxO6iFsaRyWeaNOdy928CHzKltm4LY0ce+tbI
+YsqwCnEDpQxmqtjq2Xjsus88iRvHRBGOY61XT89LIIs0nu6LpfqmEyUuBanZOvjNix9Q9g/QsCMp
+x+c42E2AeWcKGA8LSKPrTTOJbrGi9PFDwEy0flLyDLt6hUkX+yswe0DiMgGk8W5/zkGqURS6/pPZ
+5w3HZTgfYt1XnfkdzhHvslEiuV6m3yZx4TvelnYmDfPkm5J6gu0fyfMYcrcnQ2a+2cQS1tMunUSH
+UTwMCRICn2eApNJgUdZ4G0tC3ZhhvEOKSaxVT0IEA6uvQxHl8Dsnu+eG985Nf2cc1Td7Lvj79T/4
+3p99fC0z3jRxmX3Mo/mEe7iVjvDc1rn0CQ4OOPesAV/6tl85d44AEqN09iZYg5g/wO4K0eRufnsK
+u4Nw2PuNo43C3GKWUaqbDHcWz34Sc4WXHB7VnwfhabK4AfFfPbhM8y3uO9uA7+Ks/XqGnh7pGbPQ
+pIwZARjBg0Y8Udc+DuU+dL3trqlFscLd5PDASLJ7PDnWvOhgbu7Z43q6OyAufs2HjBkfCuOX0+LF
+Ty68d1/pw7E+ZkLzOwac2PPoj0udFHtNnvcPCR+839Fqkf0vK9/r+frgy2ekOt3W0nkvfu7GLjz5
+s6v9vCUY+NG/5cdm30fnpDo9WLz4hH7kvp53ZyNz2bmN2pTZs/cVeV7H4i4/6V0DmVx6m9zthOCm
+BM2TlOG5BpQR7qTBth+0TqBlnEDrqBSZvT8ZYsXxbvt1D7nDsbsDaGXnga+/9L0/++gQjLeUaLmf
+J7n4afOt4Cw49ZDjXO3Jv7gDAW7nZ5tJ5jZPUW8oU+zq/zJsmSEkYU9AeBsyfW2eH6Ru9DKYP1ef
+PHm744obxR5m1elBJbrb6yQfoQyhoIG33BD1VvmRbgwiDneXiT7ysPdzcyzDFrzAigVjuWIurx86
+Z4Xedl3eboozEn1fA+8skX4rjnatvkY4PripZfu2hA8jzG+v/JNN2888q9y7TF9F7zKIjrCMt85k
+Q4LVIOeedwLvg7d18OB6ohve2KbFTnQUd4x2EswN9FnZsoEyqjKwqeD+5naDoOQ7cPso9PLzJAfH
+ZnqQJFpJXYf3W7FpuiHpXXZb7cCWPedeJh/Kr+OIXBuvGhojuCUF/alyOZUrEhDf2qI9LMfHlFuy
+7U5FgeH8wRsgnRCp/NkuUplTHJxKrgK7GoS3IOE/MuKEOiGRQJMig1oJSXhm374DvoHckWx4bd4H
+5TLtOHj4BGbYgUx2mIj9w/HQiyg0GTEMv2eJgFn0gt/gPYaWTsLa9mcySF5uHUIxP6mtQtKpfRtZ
+nDUkzLrfiuqyVJm2eNH/035HVhwlGo4TvJ+aHHGLXPvESKQLI2bK04Ck4Qw8ZIEjlrudvPKuLOmx
+y/LBL3/3xx89FBjlrtnucvbZGmCWCcnZJo7cHVCZ7LMnXXYgMgU/bvjTTrjGaASgKeyYkR01JvRM
+RjHVQGigFAdlJmRGQ6PGk227IbvNk6z6Uk3fqd8EvSNHgl238Fj0cb20vBxZ0IoG0h0wDvvNieyc
+312/8dX9mN2Mb/usbTB5JCivSFialqG/DorLKNW13Ul8wpueIe4zyXLuNIlhPe56QMOCbjGMF4mt
+iwOldegTtGxtANsaIOro+W2j8VxX1bJhuG2yNSZ1IiEB6oHYs2L35ZKpRAvEEtuLbjTNPMaW0sU+
+ah8lHTBP55Tm4BzzhTZpumUm3YOOISnMkHdKy5AnMq5f0EmHyNAcIfNQIO9H4pgqRwwAQ+5JteWK
+4klMz45kMhwYEiU4t180WNQ/NaDM2QlxAsSWFTW5xQ/CZYu1TqIlgHLY561LXsb9rTFGDvccYn3e
+a1+9zAe5uUz3fpvGWmgUC36N0SrxNRfrd5Gz9MFQsE8wo44AGWRF0AZGT7BtEClDKtpLNQZxGa0/
+v/oQkJY5m6doIBNAXbMbm+wOQKyPdWYTIdjYvEUEwa8M23B0n1swrpSwVklysGzCzsIhk5Zx300/
+iNt9Um+XPQgY48mUReZvAP27PCYnMo95IMnhCNQOIHU3+o4hPRfo8kmUar9vFvSmR3b0fVJqTIgZ
+9AyQ9t4ysCBe4IfaPi4HQIR414E4Y8UWU3pq3/uLCNIMflXdOsaOTTt2WZCcKYCZMdmbJbByzI6v
+bpm18MHvgXLYD0rrzy5LBaVux9b3kOlByYU1tzPAZWPLxcJHaErMVDuTtcO4Bpy6Is7Dz/ambOiE
+BYX2H46Mu2FgvWU929tale1Fty9aWbJq6GPnfN2NppLJkqU2gemgSZnsWCRgJ4JdFQzLAERLWroM
+uhmTnT8AXx5qU4MdIAYsVA+MF/sm2nIuuqxILLaU3mtkt+dNufb8x1c3JUaadoH458REYXZ/y7he
+DTdXFFncmDCtES/UWlt8dRDiF0LYQtjqcZZwVXOM8sUoNhoz+fnaaCaVJQWSdYKEEQ1XCPKy/lsW
+tdfTzDNAOhyyaEpUEeJtYrKz6Tk4MTQC0XdDddKjJtOZMBunahBmJYAcJTqD7c1NqVxZjuJF6ePF
+YRvYhvuFzncI3T5mpOaFYQCHH1xizCi9wdwnMUdxY4KTgZuBz6Qa6xoikLuKf9sx0qonvcUKTS79
+cVL22gMd9efOGCdChdOIyGUaijDgJKlUZ72RMW7tgdiccgQxekQBtJCrSUxZ9iSaghEv7gtPnCDp
+LTIe6w7bda+/9Ad/+tGDmN6xTCbTJAYzWJa4w3cFWTY3O1RVMW4UNGAhrHO/sQbQs7KdzBIZyz7r
+8Wb0JwvbOFRz3gVkBEAEZU085v673T6AEDJxk2YEYl/5aayISZi4ndMnLr0zjhLNMjRnFHrXL7nE
+5Ed641sseZlQ/gbEr9+rTM9KaeuJ2jY4nyT3NT4EI9V9u3ryu/kmVIU1xI0cpVpUnpOGilljAgYv
+kU3SqiRXcRZ98vhtruOgVIJdrlXQNxSU9Su6paRKdkVQI/XyOHRCmIRmgIRKDtljaAAPSYadVHMX
+J0Z5Fv3VfmOKnI8JouBeme7+LBBs5plEQ7woHRN18aJAvDiupbsPZuzi8CHYyGgvsAOIoh8j6tTr
+s3FgD/cbp1Kt2SV5vINen/cPhkJYtuuzZcYS5NpjNGnxmGF1wpBlV1JDB2bFFNhxvOTGgsGYNDZc
+JAKx29/Xgeh3QssJE5wzrGhPLl3VBeNTlGiLF2VSxWI9/svEecz3ncD0WQfkE/WIcI0bT4pCaVMh
+apGCOVRfNqle6Yhs1CI7bYluaF6/8X1WDfXjmsh07Eh9wqFDIwoqKtdxSdhtI1ip4Xmus3YCQxYN
+rgMh7BQVlhRb0K/QzGPX1fTwoe+aQ2as/CIjk2XCuFCC9SSdFWUPb1bYHivGOL7Poi0HyCHTihK9
+XfOmjxdlXxle3ZM8KyDYgzcpzggJ7EknWvL1b5ZZPKZWR1KdSoZKLtXiyutlvfqa6y/b1JCNmHxx
+XvuaaO1epKwYBbkuRz1RW4gqti9NTbIDILfNxLe7J38rK5NJfUaitvcgiAYftF0JeqbiX+b1LWVC
+12cCRMIOckI/EJqIciPvEBdKYMVGvhlCgVBylK4HaEeiwc6RndL1/caMYujQuPE0iRulUpbfU4fO
+l8cuZU87sd4lqzCThXtcWYzAkxFRd0/8SowjnYmlrAJV66YaM9t9pE5Q2+Q6FRtzKwJJsvNlteby
+ZWiA1AkjbEGctMGmjSmr2Rk+fsLwY7d2wNaZO4ZAMyDmGJZk68REeW4A1ThOvIqz6BduyoqhFBWN
+7jzPopulU1mnuSmVZeVhZFpNvNgqwe7/JTPiJlItKp2iBHaaSDUa4AKJzDl29GTEJicJjkUBuV4D
+uAJI7XOIgMxVnXUuu+6CIMmGFFtwBqDsEvnyistUqFhCSxeAEBvHM/RSQN2QBiCGuNEbiQRLfxls
+cb6cFR2YuWsfE5VosdhfPDxyiZaHML37hEVs4LRJtbavWNw4k2o2qa7sqDjjqQGO5T9nx+KKbwex
+gjcpzJZU75Owp8iCKv3eLCuznOrMmzOAFDTXCxAXjTZ7UGabi6MmOx+12EkOqxXQo5Pm2HTNu+id
+HgGRQubNlmDpEV3MV2zln8aKMrBiLK1KZG1pRveQRYOV9nAyvSfVW1aYDF0TqQYuba1zYj0/XJOI
+Sq/l94EdnV8aiBSfrVMoEWtFMco1xo8TQG7CvAaGTiysqpz1VbfnW6qZI20uEwTs0EA8tlmN/S2Z
+oH0RrTxYlyCYzuwBEZwFkijPJuGbHfYmdI03V2GoCu2w4lHiQp1ES5aHY8Zdqd7iM01pT4qAHakm
+NVi9v5CDTXzAjjCbzXzHkvhAMpNQrusV6iqW+HEKyPJWs9hs9iDb+rnEhjWZHYczr4XRaNhRE2ml
+Auheb6URGWJAictdRyBCHahl3MCwObbtehIT/cSRFWd2XjDIY7sgVr0exto5K9WbpGFWXePuelpt
+35LCQvXoLlqLTrUnhc+xY9miVmu5pOzocl2Zy0ELo28IzPD6hZkA0mrLWwiQWiKqOVUApUdlDkwe
+ewB3m1MHAFLo8BYmaG2Ubh32CERUdIgTvUtnAf7O1joGVR4Oz91Y0f7OwLisDLu0MKhl78bQhYkf
+GIy8I9V2QC5JZDYgzdhRvMOhArLOiqkMuOgjUzLrxrJittelxcs9K0NDpnwESCkMWXnYZZvDUlXm
+0hFh6X8E5lGVIa7zESylNiQYCHNbJZiDj9iqNtaKRghE996L9SQtTgT7B5MWbH1AX3E/VryIFXca
+au49ZixSZgBoNdJogI+JzHl27DNr8B1FE4bClpzqR0e5Nl9oe/KlTmSXk7oRCEjNUyTZZisbQ1IZ
+NVueojpLhasDKK1bKgKzvA/Ol9SwsDMbpmgjCBsbgr0DIMlw1QjEWs1pcSL45UgiKM+9r9hl0BNW
+JGRFTFzW5/98/ecvHhSMPShrtaqaHks9zkU+WX2+7SSXHQWuYccCOPUdW5UkyPX2TJ5dd/HjFkAu
+msD0gGTlOXMwdQcz6llS9kGJzewVnCFr4XF1HnMXjQnoYwfCCRsisxnKmHog1oRl6eLEjH1NUZ69
+MZiprf0+w4rBzskUGPqz//17v/aHD90ocZjIXMGOa1yje5707EguzW1TnF6uqTUzoN3zZr3fqx1A
+liOXYhFSjXFjyeI1VpbUtg+bwKkNtT0wB3maDR4AYXQAlvdgbyuCkMKyUQFCa1mzxYgIxAyNENsX
+fYHMeiLPXs7MkM90vuJurNix4q61de/MeC6RQZvngB37zLrQV7KqHSQzM7nOdeRhoclFDaXCclIT
+mtMMkFonLKUWZliD5SxZP1YWq/kVpqw3E9mKQAvI/E/omN7rv7cVhBolUC/B1DcqQEw2tW/OATFm
+6CIH8oxJi0x8xVms2LEiCT1gbXrGjlr5KFdtdduTggFtniN2pFzjO/YGimQzjBnlWqJct/ix2j2e
+0HD1Hyvz9gypW+GZD1lcd93nTIAla/ioS0+VKUmXFzCs+OR+0RKMk5bJDLyuT7a/n6AXKHEBlFAn
+y7XtrBZqWKV5oZjY4LqdPk4cJ2VgIyis27Y0zZqUdlhRW9MehxlvwY7ecqNVmbJLwI5ca4cMGyth
+/Jgz1yc1e4laePhGLZ+koH/VltrMZJv0xRyUXl3xxSGWPrf9GXivJXrWNNHNaQrTSSiCEDNulGUr
+HS4KkjcULRxrDCZvWaK2tkagvS42JEuftCxdtcXq3tew4oOCcbR5jtkxa1HGlrewN49RiQXTvlxT
+JtybSFNSplpJsXab9Yo3CsjEFsPW10y6enSj1qWTbWVJ6kHZ2n0AmNb944XnK3K+2Ifc1kDLmCwg
+GxL0H3qTLZusTqSZXI6sl9SZTdvDDHw0k2eNI3FuWuvuB18RWfFoQdZfrZef0j2PUAabp2SxPTv2
+mfWJmkzXzddSkGvypQmjXJeNR7Qn0W6ZAZL0tUsMqTZhZpumwHUNgLaF6SaabAzSg9LtnA6Yik5c
+0nOh6S2DZ0c7IJQdNkx91UQpasFKj8dFHRAnceJMnhdt+ghJSzelzUu/aqgvec6O6f/9/m9tQPz+
+g0k1tNAvubUf4YIttljFFutJazp1udYDlSRLCOD1zGAzKR7g8mVoLdtCFtzDaqvtfov7Fr62uRjF
+GQ3ljSlxUT6UbrO4BRIWX3UXGq6zRVpt4AQ2JPgKf24d6LhAyx5Y7mrxIUw0c4k11uyBOOvBkLgU
+dVeeqfmLvTw7K66/bOT32aPJ9Og3tmAtazfL9m0p++e1Yox/aTMz7cm1N3eLePxIkNBktQ2TSb8y
+JFeG3EK68sDsRnrlty3uLF6kbuxcVhisjHxq3USBKTVTYa+SjJtIkVwxkVfAxWMIQo1u8tg1E2Ra
+ZIwPpbNvqJNmgS/sHhCx1Lh08izBr5d+fl+p+KzP/xf/5xu//u8eH4yaWee2d3R1pbVj5o0W+E4m
+zprMsK+RinK9lUaU6YruWtJjgFzBVkqCM0Cyrowy24fd9iljU4Js2wQp1hLalhW9spNR9zzkkASo
+MVk6L7hXYNhbMuYow/66KbYyhmW36gjY+ph6XDmsABhkmfsMHOJB8yj3gBhBLB4nsojg+m5fKIaV
+n/Xxb0jCCtFHB2OXzEBVJusqkgK3lsxUiSsxYNlwVAEpY/y4Ai2XnBkS5gGQ4utalPHgjbRWW40j
+gSUrJUv1ERGUpBm2grLf4sxohCetYmHn0klqvTM01TtzrJyXycez4JrukQ0J128F+ybGiDtAxNlC
+i7JcW3gre9mzybPXnvIFYHyQJCb4jmMyU6smO3Jt2XXyTIF97eaiPfwloVnhUGE5AlIwqSFRp0ZL
+gFJ7HGtDOc1YsvqICspF34vPbdr2A6S2nhi3T0uTvoCjecdxSFNbCG+xKEGGnDsQwgwgZc9WLuSx
+alPjVroAiGPCMvS94YrMiTxLW1E8/yn9Cw+VxAxyM0tmqC73XHAxD0wzsNwjY8kq129rjWuyLwDC
+pCbncKI06G/f5ty8MQ+DrA7b7uuJRTnob/SapVo48mb7XZOVBYZzY4KylM82XvA+bRJZSZpKvLrU
+54SJEvX1c7cEJjefMLAhNQ/xrkAUBWIoGWaSfvCVZ13ba5k8a9L3+Zssnz0ZmT5IZlyuNTosh0nj
+R8k10BObvRTkunYO88qQ5cuXak8K9wyJtg+1INzW/mkXjmjr1yrpyYorbJuvcDXSXXxrF46OUkHG
+tApIGvbXLi4/h1q12OCBKNHmBQ0MSKGkIzKZVost4trwEOJDWKEaRzdeAETobduLE63k6KOnNVn9
+7C+/+Zvfe3pgHJIZX9bqck2q4R4/bpKp1Rnu48crAbnUOnYtrIBse72nVmzq7zug5LiVewCmJSCL
+piq4ESRnHw0bJn+1BtSGsmFFZQdABBNYgN10UaIZGzK0gL0VEHfiRJNn8MHp0gTmweJGlGtjEV0p
+sMnRthfzbvyICc2FgKQ+qTGvKOs4kuydOWI5SR0IoN3g2hlmqXIBpQ823QFmYzjx+TSzb+Syc2z6
+OTczAOYwDUzCdAgObWXNP0TgZAnz9XsgCsSIh0DMglHrGCeWUOaCQcreePzQcWMfyNuQhyF+zDF+
+JGwedSrI8fYYQ8Is43bwqhGN8VLbHCiH2JB8XG2uwaY/GesJ3U7WG4gtLe5bBKeVtG1cDi5+v2Vm
+kLfGWAHjurxo7oK3BVYEZhjJjMdCtIsig4+IwflljBjaNMrx+rmEONGA+Pl6fj97UtbOJdl1iR9z
+XYm3ZaI/18rxyfobSdwDvIAhKamtUxtw2QeEDixJtfk2+7oWXXpqRXLc/E/Tbmqj28sSgN7JNuYM
+HWJHpcCO+WjSAym+qh7GR1MYL4IVKJf7mNjEMiI00wb75hwQBV7IEpYFgJjbKu2f/uU3f+N714Dx
+waXa5bqLH2vAm2knoaFLAEkVkOWBJ09aatKUWuzn421ZeyIVAKKzqB2UrQQUEp0q7Uxt3w9pWp2v
+6o/opVpaIhNAFLaw6zp6KI5jbqNjQmxI1I1SwekSzUfEMVdRmgkGlqv8TxIWt/Plgg0vwvqgx5Jq
+tHtyG78Wdivb5NqaQt3Y9c1/RslmOCJWQ23Wj5d4BTuXtfDsp8Ufp1LTrJcq4YtJuHihuW7DFkbe
+BJW+5H9tDJlKsktwDjsXuRRnCdZQXWzl2XPbNDMDG2Jnt729rcXs59HQPseIBEAsj1u6hEWz+L/a
+MulrEphH/7EF9Do2p2S4fUJjaXfIsMMIE2BIK3hsHqBOijhVKd4eJToIsbCkaMWFxXvArCWGF2BK
+Xzqo3/SeMbu5cHUVAvPZWnRgRAobQg7bsrXO67DfpY8bgsHegyRTYMNQVfFaM4fC8hyIWigIQMzQ
+G7m07Zy2vz/7v//mN79/FzA+ilQPrWa6hFQuAKT2EY+STbYCRmvZW2XF48isy6Fs+Xawbdpk+g6U
+ySeo7APTAsNMsPTgyjh6oXEfmyMAsrTxdD0IqYsXWdoAzwyy3E26D0XAjP2SUZoPgbgZ3XtdOrMv
+4fDzC9/4wd9Z//nPj8WQSYu3SXsIbTDdqYxyqEXdU7V86GTdgpaApBJz2nW6HiX5ssJayNbnoFrC
+q+BJfrutLvUObW5TnBiOW2VUBSYUm+H9+DSJo+O931g7jiCeArDre8TeQ0xQDCIJpBrZEBp5BUZb
+j/bNDhBzD8T6Vv98ZcV/fMl535PpR2XHLqHxDNsYcjvzWwz5KjJkEeXNh9zaWVIbGEWh26eZzs6S
+5MsYklt8DOVlk28DnI69MCZyxhQEp1hXbejG2R0hLLuNtu15cZ8V7JxxFoTObKJ+UyU1UnUOjkCS
+YgDT+ZNtc/bQ5ROAWOy2C4A4X19xSQLzFBKZkNA0fy14kDJPanw+cPb6c5fYbAVH7FfOvrxSam06
+k3emQnMsnBgR8Chzbt7g0hxN39VVINHYq0PrSRzuY77n0kqBmkyBZ5m1ide2egt9h+SJFoyuL8/x
+BpKUuOg/DxmzHhG3khCIy+glBiCul89zJTV6G2Z8GgnNGYYUZchTZchNsj2Q6xObxiGNJe0rvT3m
+TVXpLcGpjWi6nMt2xMu+yqCxZdBUZE2lvyV21TohLofiTGbVD5SJ7DfrcTQWTDaKD+TW1kZTZ9n0
+bOi1cHBuYEdZa3wIC7l2gLhd+9OV2L5/CzA+qlRfAsikgCRlyJxquxcmNjpKpcq2DbatrqXUxaxq
+W9aGuwGUbW9p2EDVzHoe9lwP4OwCxdk+j7uY7HY2HsAHsWTo7jYpZroMhNwlKb0szzJmARf8AIiG
+n8t91aMbHzuR2UtquBFQXUe9Zi02TWJIbNS2SZqVJGr5ju9gtT4iWc8C20jaeuPJYko4WLnul1W7
+c2yKmWUrM5vmLXzXSSDpJncqslsZMMH2bd6W14Gw1btjgtJ6JSMb2vvogQiVlT0gbj9/vrLiP7nm
+M5+T6SfBjj1DsibEOjea87ZjZKqAAtneGJJMtnuWDDsdrM+a64SorUFnYEryXVw92aHImDaegCTz
+iEjZAeqBtzPdviS55PLAgG8QgBMm1GMoYfPiAzbsZXkGRGn2jXRdRlez4kVWw1NiR2TI8rvPBG3W
+j914liXJBjtwZLVqA7XuLrBzJLX1pzPGNJZt67PEM0Q3o3nfXGQvfFts6a8ntZNNqN+fZQZAY0+e
+gHAqyRew4U58GBpd4MtzNStemsA8GXZEhjRjvLae1S4GjCNLL2HWJsUZS5KulxLbXMPWTmVof6gx
+pf+d3aaZMaY+f3YAcVdnbhI/aRYhIe5cEFxuQMp+BBtDzgCIjWwhJpyAEB3uIzbciQ/3gHgnVrzU
+hH1y7Ogs2RjSzXGII33tSceSfh+KEyAiU46mOcF2coMBbqyJB/a0c5wv8RkH0I3gGxgQWRBjQgJ7
+qAchVHMG7/BsfEjTtTx3YsVrrJ0nxY59LTtr7zfbeJTtm62Lom0Rl8WSVr47kU1x2mFK3643sqUD
+U2BMZH0zQ6XlTdsI+/rOHYmMSt1gW3whBCB19Wc5D0JvPpmxYQY2NLAfAPHOrHgxMyo7bkD85lMD
+5FEciSxpe17Wv1usd0KSBKa0oHHGll4KVNbUv5nmict1tcAg7fPbZRJD0owFGSs0l4KQvAmpY8M9
+Wb4JK+5WYJ5qVeYojrSMLnsnmPe+bI26pAWLKn3rn7WDvCwulwXHHqo7sSXoVslZulV3ErqtrdZT
+BU1XHtpr6UTbtvv7uQveNzyXQC+6PnuOlZZajWq7F5S75jZx3pcdvNGVjWXjzUwCbCgEDbGVa12W
+Be2fA/W888+1FZgnKddBtis4vR8Ck5uiyyDdi5rlKdmWScqUgjtbiWHE9ugNjIlb3rLVTjhOv9uP
+EZl4ZxuOyap+mSzqnzKgT4iFLegtJkQmbM8TEpRr2dBw8V+uqba8lUw/B7neS27MgonSXW2gBAdC
+N6IkTHTCQWJfjtC2cKUGTuo8Rr7yYMvBdWFwVreDUQ/A7nFiY+jkQhDCNtJ7seFN5flqmX4Oct2z
+JOGkr066y6KvXPcp9ZnXIN8/I0EJb50v0I5dn6PJeW1sqJdM2gChi/EzNFDk7hKu14X75ULwfNZl
+bgvOOglmwWluxZ6Rn9dLbWoAOfb9X3LwDV2SMzabnwfiW8vzXWX6Wch1KKlhxl2lmzDrVvku216J
+tTzmlghsbLlU89pk3CzA4CVKmw3KXQlQuJvy1NeoZdI/hkMZcysrOiMmGncZWCgs5o8WDVndusaV
+yISYJRPRpWx4M3m+s0w/N7meSbfJNzsuJEgya/adugOVUsukm5fI533Ea4+ynL/KwBfjRwqTvoRi
+K17E/1uB8KbyfGeZfm5yPZNuanIY5FvPZ8m+TcJ9YZPK+Hb5eSfnP9PstJN1nORw3SUm2GKya9L7
+M5Bffy8gwwv5+GIpnyNMMWlyvMDWwPkySb4XeX5bmX5Wcj2TbmNKlG+oa7uE2wYYJuOWUFs2bs+7
+AHvCNH+567d9GInXsd7AfrafuBDtsSAmJndkwnuR57eW6ecs10emOWbgTITWC0fJjuC8tlXMWtiy
+XFedyZBEG/iWYSJPs456AF5g0zwKEG8CxncFkDNQjsAM0dsQJ54S9/tJtzj0woOdx/hQ2gLFAXgd
+AOcMeCMQ3isQbwbGdwmQlwKTaFp25qMDfUrHh/sAbNNcBqvh9wjAe0tYbpbAvAsJzTmGMm8Pkx5f
+QKXJTy7JAOsIj/3iX2nN2haA1QtNLnUY6E6RUNqFsl+ovRfIP0SCL3mrn5snLLdOYJ59QnN10uNU
+15KfCXsGN5EvMm8O7xC2YZlQqgjdpTXoacjzzWX6XZXrq+SFme/9xe4feI8CxHsB4/sKyIvjoCPA
+TkYpP/LPgwHx3sD4Ash34udBgXivYHwB5AsQnxQYXwD5AsQnBUYA5FfWy+sXUL4A8VHB+MKSzwKE
+myX308cC4oOD8QWQL2z4pMD4AsgXID4pML7EkS9AfFJgfGHJ9zs+fJJgfAHk+82GTw6ML7L9/rLh
+kwTjCyjfTzZ80mB8ke73iw2fBRhfWPL9AeGzAOMLKN8PED4rML6A8t0G4bME4wso300QPmswTkBJ
+7wkwcVHUOwPCdwKM7xEw3zkWfKfB+A4C851mwfcGjM8UmP265PcCgO8VGA+ASY8I0NmC+PcOfO81
+GK8A6NuC9dz0hfceeC9gvB+wvoDt5efl5137+f8CDAAycB8YwjzIIQAAAABJRU5ErkJggg==" transform="matrix(0.24 0 0 0.24 12.5957 18.4722)">
+	</image>
+	<g>
+		<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="28.8564" y1="40.9219" x2="23.623" y2="50.3143">
+			<stop  offset="0" style="stop-color:#FFFFFF"/>
+			<stop  offset="1" style="stop-color:#85BEDF"/>
+		</linearGradient>
+		<path fill="url(#SVGID_3_)" d="M30.073,45.716c-0.88-0.377-2.303-1.005-2.93-1.8c-0.461-0.545-0.419-0.545-1.131-0.796
+			c-0.587-0.167-0.963-0.502-1.633-0.585c-0.502-0.043-2.51-0.545-2.386,0.166l-0.042-0.166c-0.25,0.795-0.628,1.464-1.046,2.218
+			c-0.294,0.544-0.209,0.712-0.042,1.298c0.293,1.088,0.419,1.172,1.298,1.632c2.511,1.381-0.292,5.4,1.801,6.571
+			c0.333,0.21,0.752,0.336,1.087,0.461c0.419-0.586,0.628-0.963,1.214-1.339c0.377-0.21,0.629-0.293,0.88-0.671
+			c0.333-0.417,0.209-0.837,0.418-1.255c0.293-0.586,1.088-0.42,1.549-0.838c0.586-0.544,0.627-1.256,0.879-1.883
+			c0.293-0.67,1.172-1.004,1.423-1.634C31.706,46.26,30.7,45.967,30.073,45.716z"/>
+		<path fill="#FFFFFF" d="M38.193,29.6c0,0.418-0.503,0.67-0.293,1.047c0.419-0.503,0.712-0.754,1.382-0.837
+			c-0.168-0.502-0.712-0.837-0.837-1.339c-0.126-0.377,0-0.88-0.545-0.754l0.125,0.125c-0.627-0.125-0.335,0.671-0.21,0.963
+			C37.9,29.015,38.193,29.433,38.193,29.6z"/>
+		<path fill="#FFFFFF" d="M37.188,28.763c0.032,0.048,0.063,0.11,0.095,0.181c0.024-0.057,0.049-0.116,0.073-0.181H37.188z"/>
+		<path fill="#FFFFFF" d="M37.283,28.943c-0.161,0.353-0.357,0.595-0.429,0.992C37.584,30.301,37.486,29.423,37.283,28.943z"/>
+		<path fill="#FFFFFF" d="M34.845,24.954l0.083-0.126c-0.167,0.042-0.46,0.042-0.669,0.084c-0.294,0.921,0.669,1.046,1.214,0.628
+			C36.394,24.828,35.432,24.493,34.845,24.954z"/>
+		<path fill="#FFFFFF" d="M36.519,37.218c-0.078-0.04-0.084-0.042-0.156-0.078c-0.003,0.011-0.053,0.036-0.053,0.036
+			c0.116,0.033,0.195,0.078,0.243,0.133c0.003-0.003,0.006-0.005,0.009-0.007L36.519,37.218z"/>
+		<path fill="#FFFFFF" d="M40.795,20.739c-0.065-0.071-0.138-0.145-0.216-0.222C40.646,20.6,40.72,20.671,40.795,20.739z"/>
+		<path fill="#FFFFFF" d="M42.881,25.875c0.006-0.03,0.011-0.06,0.017-0.09c-0.047,0.003-0.094,0.006-0.142,0.006L42.881,25.875z"/>
+		<path fill="#FFFFFF" d="M36.351,37.134c0.005,0.002,0.008,0.004,0.012,0.006C36.364,37.138,36.36,37.134,36.351,37.134z"/>
+		<path fill="#FFFFFF" d="M36.513,37.345c0.021,0,0.045,0,0.066,0c-0.006-0.013-0.017-0.024-0.026-0.036
+			C36.527,37.325,36.464,37.351,36.513,37.345z"/>
+		<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="23.6543" y1="28.6533" x2="14.1899" y2="39.6524">
+			<stop  offset="0" style="stop-color:#FFFFFF"/>
+			<stop  offset="1" style="stop-color:#85BEDF"/>
+		</linearGradient>
+		<path fill="url(#SVGID_4_)" d="M21.116,42.576l0.167,0.167c0.125-0.125-0.629-0.502-0.796-0.711
+			c-0.335-0.503-0.041-0.879,0.042-1.548c-0.377,0.04-0.754,0.208-1.174,0.208c0.128-0.251,0.797-1.004,0.546-1.298
+			c-0.335-0.292-1.214,0.796-1.592,0.796c-0.209-0.712-0.418-1.926,0.127-2.512c0.335-0.376,1.13-0.628,1.591-0.46
+			c0.627,0.209,0.585,0.628,0.711,1.172c0.545-0.586,0.293-1.507,0.628-2.135c0.209-0.418,0.755-0.46,0.796-0.962l-0.085,0.084
+			c0.671-0.67,1.258-1.381,2.01-1.967c0.628-0.502,1.506-1.005,1.926-1.675c-0.544-0.083-1.048-0.042-0.587-0.711
+			c0.419-0.67,1.467-0.209,1.591-0.837c0.127-0.586-0.836-1.256-1.004-1.759c-0.168-0.417-0.335-0.962-0.42-1.423
+			c-0.208,0.21-0.334,0.502-0.543,0.712c-0.335-0.585-0.085-0.837-0.795-0.712c-0.419,0.042-0.837,0.335-0.963,0.753
+			c-0.166,0.503,0.167,1.047,0,1.55c-0.125,0.418-0.587,1.045-0.963,1.213c-0.125-0.459,0.251-0.921,0.126-1.381
+			c-0.712,0.042-0.921-0.335-1.466-0.669l0.168-0.084c-0.251,0.167-0.628-0.418-0.921-0.586c0.502-0.669,1.214-1.172,1.758-1.8
+			c0.419,0.795,1.089-1.13,1.424-1.465c0.25-0.293,1.173-0.585,1.424-0.167c0.291,0.502-0.419,1.046-0.67,1.382
+			c0.459,0,0.961,0.083,1.338,0.334c0.378-0.292,0.879-0.753,1.089-1.214c-0.335-0.208-0.629-0.418-0.879-0.712
+			c0.25-0.501,0.194-1.154-0.325-1.045c0.084-0.051,0.162-0.108,0.242-0.168c-0.964-0.293-1.298,0.335-1.09-0.837
+			c0.084-0.544,0.21-0.879,0.67-1.381l-0.125-0.042c0.251-0.251,0.46-0.586,0.628-0.879c-0.042,0-0.168,0-0.21,0
+			c0.042-0.183,0.003-0.333-0.098-0.456c-7.169,2.409-12.423,8.983-12.896,16.845c1.2-0.378,1.926,1.715,2.32,2.697
+			c-0.127-0.46-0.209-0.962-0.419-1.38c0.586,0.67,1.256,1.046,1.34,1.967c0.085,0.586-0.167,0.545,0.502,0.795
+			c0.503,0.168,1.047,0.125,1.507,0.336C18.688,40.944,20.11,42.785,21.116,42.576z"/>
+		<path fill="#FFFFFF" d="M33.84,22.024c0.083-0.167,0.754-0.292,0.964-0.335c-0.043-0.668-0.336-1.381-0.127-1.967
+			c0.101-0.301,0.337-0.69,0.607-0.974c-0.321-0.066-0.644-0.123-0.971-0.172l-0.351,0.044l0.33-0.047
+			c-0.922-0.138-1.866-0.21-2.828-0.21c-1.273,0-2.517,0.126-3.719,0.365c-0.143,0.358-0.353,0.826-0.353,0.826l0.112-0.017
+			c-0.407,0.688-1.621,0.729-1.661,1.565c0.629,0.083,1.299-0.168,1.926-0.042c0.503,0.795,0.711,1.423,0.252,2.302
+			c0.292,0.335,0.668,0.043,1.005,0.084c-0.086,0.711-0.754,1.255-0.461,2.051c0.083,0.293,0.292,0.962,0.418,1.213
+			c0.251,0.377,0.378,0.293,0.838,0.461c0.46-0.879,0.375-2.008,1.339-2.511c0.629-0.293,1.382-0.335,1.925-0.671
+			c0.377-0.25,1.047-0.752,1.047-1.255C34.133,22.443,33.714,22.359,33.84,22.024z"/>
+		<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="41.2637" y1="32.9487" x2="46.0094" y2="47.4588">
+			<stop  offset="0" style="stop-color:#FFFFFF"/>
+			<stop  offset="1" style="stop-color:#85BEDF"/>
+		</linearGradient>
+		<path fill="url(#SVGID_5_)" d="M41.232,21.067c0.021,0.026,0.04,0.052,0.058,0.078c-0.067-0.057-0.138-0.111-0.203-0.165
+			c-0.052-0.03-0.104-0.062-0.154-0.092c0.442,0.503,0.608,0.906,0.608,1.721c-0.251-0.084-0.459-0.167-0.668-0.292
+			c-0.253,0.879-0.378,1.548,0.082,2.385c-0.123,0.409-0.482,0.938-0.383,1.39c-0.238,0.473-0.488,1.238-0.369,1.708
+			c1.004-0.837,0.92,0.042,1.59,0.586c0.208-0.376,0.376-0.795,0.628-1.171c0.125-0.168,0.377-0.042,0.419-0.419
+			c0-0.292-0.378-0.335-0.419-0.543c-0.083-0.419,0.21-2.177,0.712-2.302c-0.08,0.598-0.124,1.233-0.235,1.835
+			c0.152-0.013,0.305-0.041,0.455-0.071c0.003,0.257-0.189,0.646,0.062,0.923c0.441,0.484,1.11-0.089,1.565,0.366
+			c-0.224,0.369-0.342,0.184-0.666,0.251c-0.36,0.075-0.4,0.236-0.543,0.62c-0.158-0.378-0.533-0.796-0.807-0.243
+			c-0.194,0.394,0.052,1.048-0.344,1.332c-0.335,0.239-1.232,0.334-1.489-0.034c-0.243-0.35-0.028-0.883-0.334-1.209
+			c-0.063,0.342-0.269,0.658-0.228,1.001c0.036,0.318,0.303,0.561,0.17,0.874c-0.272,0-0.617,0.02-0.819,0.186
+			c-0.167,0.135-0.171,0.391-0.428,0.493c-0.227,0.089-0.582-0.045-0.767,0.163c-0.091,0.101-0.11,0.48-0.162,0.622
+			c-0.233,0.029-0.521,0.057-0.729,0.144c0.095,0.507,0.824,0.659,0.777,1.246c-0.028,0.359-0.169,0.348-0.504,0.295
+			c-0.361-0.058-0.765-0.082-1.122-0.154c-0.013,0.745,0.426,1.229,0.041,1.983c0.132,0.061,0.247-0.039,0.361,0.01
+			c0.088,0.037,0.162,0.147,0.218,0.169c0.228,0.09,0.404,0.137,0.67,0.092c0.28-0.048,0.396-0.13,0.547-0.342
+			c0.054-0.077-0.016-0.214,0.068-0.307c0.08-0.086,0.214-0.075,0.307-0.148c0.365-0.282,0.346-0.97,0.719-1.213
+			c0.062-0.039,0.465-0.025,0.62-0.083c0.221-0.082,0.337-0.053,0.495-0.214c0.124,0.476,0.399,0.861,0.76,1.21
+			c0.359,0.349,0.818,0.713,0.046,0.845c0.247,0.33,0.323,0.449,0.614,0.067c0.215-0.283,0.339-0.564,0.602-0.788
+			c-0.479-0.45-0.898-1.005-1.243-1.582c0.501-0.494,1.635,1.117,1.656,1.541c0.024,0.464-0.232,0.661,0.241,0.877
+			c0.641,0.293,0.413-0.452,0.436-0.917c0.384,0.212,0.77-0.176,1.125-0.046c0.182,0.065,0.213,0.283,0.334,0.411
+			c0.192,0.206,0.123,0.16,0.333,0.22c0.425,0.122,0.624,0.003,0.756,0.543c0.08,0.329,0.191,0.762,0.053,1.088
+			c-0.206,0.483-0.866,1.12-1.344,1.29c-0.493,0.176-0.941-0.228-1.384-0.413c-0.709-0.296-1.421-0.555-2.112-0.93
+			c-0.679-0.366-0.541-0.11-1.042,0.146c-0.53,0.271-1.057,0.682-1.624,0.87c-0.762,0.254-1.834,0.379-2.659,0.377
+			c0.192,0.31-0.392,0.864-0.562,1.171c-0.672,1.047-1.047,1.633-0.713,2.889c0.168,0.628,0.378,1.172,0.713,1.716
+			c0.167,0.251,0.292,0.628,0.585,0.796c0.376,0.293,0.336,0.125,0.838-0.043c0.544-0.167,1.465-0.292,2.051-0.125
+			c0.208,0.043,0.293,0.251,0.501,0.293c0.085,0.042,0.671,0.084,0.712,0.125c0,0,0,0,0.043,0c0.126,0.545-0.168,0.963-0.168,1.466
+			c-0.042,0.545,0.084,0.46,0.294,0.963c0.376,0.879,0.082,1.968-0.21,2.805c-0.336,0.963-0.084,1.631,0,2.637
+			c0.047,0.563,0.345,1.089,0.53,1.611c2.281-1.364,4.252-3.192,5.782-5.357c-0.259-0.639-0.451-1.269-0.16-1.779
+			c0.628-1.13,2.009-1.632,2.302-2.972c0.085-0.461,0.043-0.921,0.21-1.339c0.11-0.369,0.351-0.551,0.654-0.668
+			c0.304-1.347,0.465-2.748,0.465-4.187C50.446,30.435,46.753,24.387,41.232,21.067z M43.3,25.54
+			c0.023,0.025,0.037,0.056,0.045,0.089L43.3,25.54z"/>
+	</g>
+	<circle fill="none" stroke="#1996CE" stroke-width="1.5" stroke-miterlimit="10" cx="31.464" cy="37.341" r="19.373"/>
+</g>
+<g>
+	<g>
+		<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="70.3066" y1="90.6387" x2="36.8256" y2="52.0069">
+			<stop  offset="0" style="stop-color:#E6BA21"/>
+			<stop  offset="0.546" style="stop-color:#E6BA21"/>
+			<stop  offset="0.5592" style="stop-color:#E8BF38"/>
+			<stop  offset="0.5886" style="stop-color:#EBC964"/>
+			<stop  offset="0.6206" style="stop-color:#EED287"/>
+			<stop  offset="0.6545" style="stop-color:#F0DBA3"/>
+			<stop  offset="0.6907" style="stop-color:#F2E3BC"/>
+			<stop  offset="0.73" style="stop-color:#F3E9D0"/>
+			<stop  offset="0.7735" style="stop-color:#F4EEE0"/>
+			<stop  offset="0.8237" style="stop-color:#F4F2EC"/>
+			<stop  offset="0.8862" style="stop-color:#F5F4F3"/>
+			<stop  offset="1" style="stop-color:#F5F5F5"/>
+		</linearGradient>
+		<polygon fill="url(#SVGID_6_)" points="75.831,57.282 57.784,54.66 49.714,38.308 41.643,54.66 23.597,57.282 36.654,70.012 
+			33.573,87.986 49.714,79.499 65.854,87.986 62.772,70.012 		"/>
+		<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="54.0166" y1="83.1514" x2="47.28" y2="44.9463">
+			<stop  offset="0" style="stop-color:#E6BA21"/>
+			<stop  offset="0.362" style="stop-color:#F7D709"/>
+			<stop  offset="0.8834" style="stop-color:#FCEE35"/>
+		</linearGradient>
+		<polygon fill="url(#SVGID_7_)" points="69.301,58.748 55.767,56.782 49.714,44.518 43.66,56.782 30.127,58.748 39.92,68.296 
+			37.608,81.775 49.714,75.411 61.819,81.775 59.508,68.296 		"/>
+	</g>
+	<path fill="none" stroke="#9B7F2E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
+		M40.24,54.864c0.771-0.111,1.685-0.775,2.029-1.475l6.816-13.812c0.345-0.699,0.909-0.699,1.255,0l6.815,13.812
+		c0.346,0.699,1.259,1.363,2.03,1.475l15.242,2.215c0.771,0.112,0.945,0.649,0.388,1.192L63.787,69.022
+		c-0.559,0.544-0.907,1.617-0.775,2.386l2.604,15.181c0.131,0.769-0.325,1.101-1.016,0.737l-13.632-7.167
+		c-0.689-0.363-1.818-0.363-2.509,0l-13.631,7.167c-0.69,0.363-1.146,0.031-1.016-0.737l2.604-15.181
+		c0.131-0.769-0.218-1.842-0.775-2.386L24.611,58.271c-0.558-0.543-0.383-1.08,0.388-1.192L40.24,54.864z"/>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/roundeRrectangle.svg b/Sankore-3.1/resources/images/roundeRrectangle.svg
new file mode 100644
index 0000000..bea8c42
--- /dev/null
+++ b/Sankore-3.1/resources/images/roundeRrectangle.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="26px" height="26px" viewBox="0 0 26 26" style="enable-background:new 0 0 26 26;" xml:space="preserve">
+
+<circle style="fill:#CCCCCC;" cx="13" cy="13" r="13"/>
+<circle style="fill:#999999;" cx="13" cy="13" r="11"/>
+<rect rx="2" ry="2" x="4" y="9" style="fill:#FFFFFF;" width="18" height="8"/>
+</svg>
diff --git a/Sankore-3.1/resources/images/teacher_close.png b/Sankore-3.1/resources/images/teacher_close.png
index bee2ea0..4f2baea 100644
Binary files a/Sankore-3.1/resources/images/teacher_close.png and b/Sankore-3.1/resources/images/teacher_close.png differ
diff --git a/Sankore-3.1/resources/images/teacher_close_disabled.png b/Sankore-3.1/resources/images/teacher_close_disabled.png
deleted file mode 100644
index 8f3c988..0000000
Binary files a/Sankore-3.1/resources/images/teacher_close_disabled.png and /dev/null differ
diff --git a/Sankore-3.1/resources/images/teacher_open.png b/Sankore-3.1/resources/images/teacher_open.png
index 17469cc..4f2baea 100644
Binary files a/Sankore-3.1/resources/images/teacher_open.png and b/Sankore-3.1/resources/images/teacher_open.png differ
diff --git a/Sankore-3.1/resources/images/teacher_open_disabled.png b/Sankore-3.1/resources/images/teacher_open_disabled.png
deleted file mode 100644
index 99e78cd..0000000
Binary files a/Sankore-3.1/resources/images/teacher_open_disabled.png and /dev/null differ
diff --git a/Sankore-3.1/resources/images/toolbar/bookmark.png b/Sankore-3.1/resources/images/toolbar/bookmark.png
new file mode 100644
index 0000000..ffb920f
Binary files /dev/null and b/Sankore-3.1/resources/images/toolbar/bookmark.png differ
diff --git a/Sankore-3.1/resources/images/toolbar/bookmark.svg b/Sankore-3.1/resources/images/toolbar/bookmark.svg
new file mode 100644
index 0000000..a53f1b6
--- /dev/null
+++ b/Sankore-3.1/resources/images/toolbar/bookmark.svg
@@ -0,0 +1,377 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="96px" height="96px" viewBox="-20.294 -11.062 96 96" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	
+		<image width="158" height="158" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKMAAACjCAYAAADmbK6AAAAACXBIWXMAAC4jAAAuIwF4pT92AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANV5JREFUeNrsfU2zbclxVWadp+Hr
+ocNBMGGAuhsPCBkQYcJfzDE/A0YQEJJagB1CWJIdMhJ2wIj/wRRkSzjkADxE7daEiQcEw/ZMeruS
+vasys1ZW1d7nnPvO/XrvXun0u/d8n73XWStzZVYW0cvPy8/Lz8vPy8/Lz8vPE/3hl0NQf375uz9+
+vf7z8fa7rEeFefuXywF6pQeK/YAxLXpbYqGsv6+/4pHdO7af//hffvnTlyP+Akb60u//6Qa6j7ZP
+vuFFAcflOqJ/RaxgLDc3MBL5I9arVzBWtPEGxu05CMDIx2D8NDH/Xg/Q//4v/t6nL2B8D37+9grA
+9YN+pCDZQPd1KpCiBkakvfW6tP5y0mNUbpoA0MHXAS/Njm59ub0D/ul663eAWD//0T9//8D5ToLx
+l77zo9fryf2IFTDrvxsQv16k11HRQIhM2EC43a/eO6//PQJgsiPZA47Hg310wEUvBZxE3zFg/vA9
+AeY7A8Zf+vaPXovK7yqDH27slxRkXHFWoWWSuuFqB4RU7+ss6JSJAOTGeIhAA5y4Wk8Y8zwY/e8N
+mOv7+vb2e37HgcnvAgg13vtwBdcnG4ZOCr7UqApgCZKsQHrVg5DrA3sWNAYsD+PhAHKCv8WTGgms
+GdA2OxPl9vVB67/ZY9H6oFzknL+9/v35D95BUPIzB+GHCsRPNANeAQFA5BasFXAAG27XYmJSHgQg
+HFhQn465MZ+Bz4FXkMSczmhzeRM9K3KH0jxhSxEpmbvIp+vLfHvD7Pr353/yz/7upy9gfISfv/nt
+H75eT/aHr4g3EH6NGtPxqcZ0lbhAlnfY0BMTiwkhgR5YEKwdiDk78NkdJEaNzJcfbHHcxasKWHuA
+VnBu8WVhy//2zNny2YDxb/zuD7ek5MNX62U9+Z+cwEApjMgc4sP6a7xPYMMKxc0nZIwJZyBECbbn
+TiP4GEHXq/F22+nM8d4es8go5DyCVAycAMyfiEr4cwUlPwcQbnLM24Xpa1/QmHAGxOQcaOgbZdl+
+z5rLoCSnCQirsQ0sOAEggqWGCMQW75HAEx2hDEEpMYZM638QpPYwBKbkBsotrpRnCEp+uiD8E40J
+S2b8tQ0EKyvyqzNAdCObzbapLPYKYsMU8uhjECaiIPMsHACoj3fwdbZOfbMBkPuHXAxd8W4OQzFw
+rvdb4G4GTNkyHWPLCspP/usziiefHBj/+jf/WOW4gPCrxkanwog1MTkCIjGH+FAtm0GWezZklOQO
+hEz+zPsA5Ia3vvhilHbi8zKdpceig8uuLPfYA2Y2tqwJ+QbEb21e5XMAJT81IK7//OP1jH71laYX
+PRAtaz6dAeIGr1c1EdnIrDAkynIak5MaF1pS3YGQDgCY9JoZ6Hjm3PCIQu6AG5IZBSkDVQqNwDRi
+RFDmyrYbEL/21AHJTwOEJsnyxe2gbWd/BdsKuLcDIsaHCdKWjg09+EtEHhMm4QGEPQPaHwP4ujqM
+s64cHHWIE0UoKDOhfHcMiowpEtnSQLnJ9xpTfrp+wG+taH2yLMlPBIi/VSW5mjGnEtet8WEnzaLJ
+SyK3b3aBaBnMGVkuIE0QY2JMWBOgBkIGQ4c0O+7Ah3I/0CObG757NqQ5OtKxJAK0meDOmNKCy8qW
+wJQEMWUB5RNlyUcF419bgbi+gd9iBWLaGEzhtbHiF9TEtjAsKYjQ0CYE0gEQZ7KMbMhWeSFrIfNX
+aLUbZUlMRrizdPz5pbLx9lxZfctLyoHZcQnet4JUgBozAFNaEiNewOHKlPpAgURnk+4nyZKPAsZf
+/Ld/vIHwi+tZ3Cybr1YWEsY4ccyc6/VvA8QhSfGKSwOiS/I5EHpKBLKu4Ds5ZrYQod7vdHDQ+zhx
+sSRJidJAar53YTiJ9s4MlBpQlvtiolMAWW97UizJjwFEqmz4leRE5fLsQJxlzgZEr6ywWS7MX3Dn
+JR0BsTwvPtZiQ2NDDpY4BxAyyD1PACjFVtLXQLd7POg8YUWZGY4CYEwVgw7MBTXbPHB8jNSsWv0f
+ycCS+QnK9oOC8Re/8YPX68nZ4sOvqI9X2rR25DmW+ZTNBCFT099y8r+gyipMFwHRgGWJjQAb2v9P
+HgNGEFpcOQVgS21GV5Ev0Ok5W3qy0gNzsTsoWyIoMyQ6ClJnyewKrrL9BAD5YGD8hRWI64v9o40R
+GcC3yfNJ5fk0kedUM2FlwpaySCzxleejAyBiooLx4UyWE1YUDZAAwnQAwLGXsQFZLjwhHvjBg+QA
+mBsOEZRZonznyJIbG46yXQH5ra1N7QePBEp+KCASALHEUCq4xoqz7LmPE725SxnTgMjqI6pPOAWi
+PZezHMiyRwuRDVtWTRMQ9gzYgU86mebjYy9TgpRQepFezyE/cVBmvWe2NjRFLrKkxZJZWtlHAVmN
+cpGvPUYpkR8UiA4K66KmkLRo3bmT53pbHyd6wmKU2RrB6JQuAKKBjffZsBjuEgJJNx9TLPi1sktc
+gzBEjLvGjswNb0yiGzgllAgFyFSkJTfLEUseAVLkJ+ufnzw0IPkhgEgARGTFo6RlV571SkxYSoAJ
+lZWU2DJY7mPEXSB29o7d5wTXaUd4s705OIwBa13bWHTAz9SmAzZl6AAXQcaEjFvgtgzSDSwZY0mF
+5FMBJD8YEAdWZE9M+qSlz557eU4gz7M4MfEdgOhflJolC7fkiHdASOC1gyepmGMaqzLzEHGWxEgH
+UoHSnyBPNo8HbaACymIRaT0wsCTK9hMCJN83EAmAOGPFPmkRlefEMXvu5Fkzjv048WQm+WWMGGSZ
+NCt/NSQxXGPBUPAZATiWDaM+H/mMaOm06jP2M7asuAclKzUaS2aLJbNm3ncE5ML8yUN0k/ODAHGH
+Fc8lLYauQ3mexIm1tk0c1sGklqxMgdjL8oQNhwwbQDgAMJYRrzrWElMWAlkWVOcBlHa/HFmySLPK
+tiU3e4CM19f7rb//ZMXxJ/e97ibdJxCpC5QmKzdrpcEq/eyluRhaYTJiZbzNZxFv56Jg4VgCoiU5
+S06uBqKZm9xuSP4e61fF7SJuf68xq70m13KjOQYXXrakTchei5O+YXsv7BWk8f1UN55NJPRz1Pue
+zKxvC3r8+OAaoOTH0b/gf2v983fumxnTvQPRABflWUHob6AmLZCgjutXuJrM2oUz+In2fJVx3ROk
+5iNeDESGMIAgZuQdEPYAdLAkpsTNprzohxyA/j0YgJnaOzRQQnnSzH8PHC4FpH3yjI6CLrFYf/3g
+N/7T//r4ycv0HhBnsaKyhFs5HiumavOYldPVnjVp4XKg0oE8v+oTFm5J0KlLVvaAiKk1gHBsnvDO
+Cn/eRuRD/Hjc5y19Xt0vemkSWoDmEi0CNcEmrRY3Vl32MuJZyV6qZA/x41Ljz3uVa34IRsRqyyuo
+tsQMeh4rWsnvC3vmdqoWkPuJqYsTYYHBK8iwjVyuAaLbjcq+CEIeesg6E2caOMZkWnZLghLadjzG
+Q1DmFmZeCsgSF5InNeVBb6SuXpjFjwrQn6xA/uQ+hgncQqa/uAdEDn+KjU2qK+Vae9gQK/brSFKT
+bqNEB5/dN8gzxomaSqDVc9Ks+UIgNv10y0klEmVYEc7NGTVtNcllC+XqH/2V7Wq7PoUKkDn36jQk
+dQqkxqUg3YNsexzZSfYq/+U4YCx+4tCu7IWE1JbkblL9B7/+H//nx08KjMqKX9zn3SZNCkD/cBxi
+RQqxIo2xYkhasBDMo59YewjBg2xxoh5YaXbRBUB0rk4p2Dw0BaEBsEHMshsPUdTS0suAS62ht4yo
+AXMEJSf2NTkpOehaTHsESC8O9DX82jhCuMyCrbZffj7me0ho0n3IcyfTKjgbjhorxmRZF9/TPitm
+WPWHrJj84ALQOfjhxKGxtiG3JSZzICa8n12XGqhmIEQApuJ3Sks+DGjd/xJhNk14f04Mge4ElM6m
+nvxbenwZILc7hfEFoDaa8KEC+WO3hObW7Mj3AUT0Fi9NXIZqC8SKs44c/VaHpMVOonTZc+rixGKc
+g31jfWU9EKkDYmBDnCDlf27PIdD53f8yiEYoAXYZjTc1SCu0eGZTV1pJbWET0TiwuoUYR5r53Rpu
+1zeoLTx1aICVDbfYsMWPWZ/Pq9hZ2840mVlq7Pmp3DB+TLeME6dHm8jjtDj9dbRzar83D6vulktY
+UU94bgnEIM8WJ57i22zfdgAdIXOCzYRALMxUKRJY0GxJjRq8tN4YNSUQ8fV3CBPRQLenKbE1VKUs
+NPD7WiyR7LVEI5gdhozLKupwA4sfcaWkyzW1eULoRXKNH7/7azdiyHTzOHEu0TSVaC3BtSARhjWo
+r1gfSUOsSLoENdmygS5paQw9l2e7Shq79TFiW/iV3FzEdNxuopNmTa3m2ADICrYTGOLM3SUlNL1V
+d0dgJpVNY3sva1F7fy180IFVM0CqD3lGrnFhWZ/M+MArqob4bz84GC+NE5mmPQJjxUXadWKs2D1e
+E5cZkx2y4sl9xlahkUmc6IzX1JpcmnlYR92ymcKGUDaHNNoBmCB4TWSxCMe4UPMf7wzR91gByvZc
+YCvZpLWKQ/+llce9Jh9jSGsujnfEdrhk9hqoyRl2NEP8FuyYbi7P+1n0KNF8WeKCsWI1idqAz3Os
+aNlz6uSZeguDQaKGGFGfK3nqUDP7wIYNhKnNzisPOZW4tl5Ofl294O/l9tRi3xnDGhja6L+GzAT+
+ZgLfP2HywRjScpDrokTS+gRiMnP/7JhuLc9RoulMFg3ljE6ik/UP4jBDYEVuYxgKb+6xolk9EmrO
+TPhlYVz0h7EhmXUCAqfvKVFDSosHIwgNfCcoE/qx8fYhDuP2auypl+RxbwCl5cZe84byJRMkZFiI
+SqEW5ATQy7VohSIBeSA75q4PKbUE7INf/aO3Y8d0c1bsjO4BpGB0t0FdM4lmHuycwK4cAHdnVqSQ
+uYxZc5DmBkQMEFOj1QDCVieGyjSYdR4YQkIjECsyNVC2dg1zEmCMHwASY8iQ1LSEJsh1YMfakLzL
+jvH0UJhnZMnMr/7h//j4XsF4TdLST1NAf2rP6KYdie4Tl5lEe1ig+EBWpGNWBHMG5DkkMhxmOyIQ
+DUOn1DpeEkUQUkh8NfPYiRkNIalvqQBQBt/Tn/Q8IFntptSdmpBdd+woE3asr4sKFaR6u/Ljt5Hr
+dHNW3LF0RuDGeHGWRffP20s0R9nHNKd+OKldKjusSMCKuCC7+xZZd49EKQdZDmwI3bvxdy/UDC1j
+rerSEmzsS7Mv36vAkv7YJr3ckpH6saTZqIRhhwO7nShgR7N6CDJrqJ3j8IIo1fW+H9yVHdMtY8Ux
+Xmxfwd7SwQHZPLKkZ9GHEh0TFyRQB65L6YQVgXlQ7ptFmOyxDKsNIhCtq7w1dUFregfAlnFLuGgy
+ZI4Ozv4BL8rBUl9vAsjUiixQhmrs2B9rZN7Ajh5S0dCnPpy2KNVWu/7t+2LGa2NF6Dmx72YXLwLu
+MF4EpXaj+0iiMXHhSeLC3C3W61iRgOmcFaHwDFU0xqw5UduaA4HIwYYM+Q23qt7Y2AirGwmB2TXu
+EniPAyA9qSEo0re9bEo7U5/MMNGUHd13nEi1ITF7T+og1dvP61+5AzumW2bQPC8zDiqdJN4gfct+
+Hy/Cm8UsGvqsBomuPRWwYGqyVcaUFUG+mzyH0qCWG2UAYjTVuykUPDZDpJQIZLt53QEfsP0bJFY+
+vq9GxN70YPdK/VSqeux4Mltlnlmfker+8SmubLwTO6b7YMVZEjOUazt/MV8QLw5ZdBcschcBCCKi
+n5cIGfSMFeOwenCc67eEE/HAiAkxaTGcVV88eYGOnrYkAcuDmpy0iRfIkhChNPO+4yVG2mOs0KS2
+ujZx2J5mbLWsicxMqsM59UQx+GXbH69/5T9cx47pVrHiJHmh3eSlk+UUP2iLFynKRMtUwOjmFpP2
+/WlHiUuMHUdWhFWzWHFQeeawbiTqeHMkE4CwZevNIEQkpjhi0kqHYacPKPf4ycekKYX+HA7JDLIj
+Zta7Um0sN8uqqT9mPJwrtXr+za2Y8Y6x4uhpn2LcFj5N/7UU3T5XcH0yxXjR5AKN7j6LRntoKtG4
+j8a4UQuuHGjap6x4CoPow5YfAMSh5xG6y/ratMaZINNgQeK67FjGbOtXFDZhUWKgSBbIrLmx455U
+bz2ke1k1xo3IktKvrGD64O9fETumm7HiWHkJoUWbrnqcvAwTksDNZpGzMal9Q2XeHdevVYl7ZmCW
+7ikKtTk7OroZKZCBHjogwsq+AEDrjWCX42aD1zg14VINaOr11uOoFlhrj+wYNtlsgbBEd2JPqn1G
++fn2Qx6CUM2s+Qp2TPfEitPKC1/YWzlLXoagcOcm44g8iRf3mjimEs1ILhyaLpA9qVsZDWtiKbIY
+mSRT8s7ZZufAFIK+C53sMe5MaAKFMWGKmZlbPcRzqR4SmHk8VQ3w7r4yIYw+iZmYv9eD8a6sONo6
+18cFTOcCTNhA0tmyzWbnZgH1dMn9bAfuykI0gizEmeKR0ciKcT4PDz2RCrq6+iwhC2JLd2VLXAwU
+vWiUawk2nxD2YbZ6N45hQanuPmVnQ8zjRuaZCu5sZxzp9vWXv3+ZVKf7ihV38TWxdQ4rL2jAwmNP
+s5hUWn311L2DQcv7eDH0VMrkA0nsLmphHJl8pklzLnf/Qtc5p9TWbWHsyEPfGllMGVYhbqCUwUwV
+Wz0bj133mSdx45gownGs9erpeQlkkcbTfbFU33SixKUgNVsHv3nxA8r+ARp2JOX4HAe7CTDvTAHj
+YQFpdL1pJtEtVpQ+fgiYidZPSp5hV68w6WJ/W0bRAbL1mcdErdufc5BqFIWu/2T2ecNxGc6HWPdV
+Z36Hc8S7bJRIrpfpt0lc+I63pZ1Jwzz5pqSeYPtH8jyG3O3JkJlvNrGE9bRLJ9FhFA9DgoTA5xkg
+qTRYlDXexpJQN2YY75BiEmvVkxDBwOrrUEQ5/M7J7rnhvXPT3xlH9c2eC/5+/Q++92cfX8uMN01c
+Zh/zaD7hHm6lIzy3dS59goMDzj1rwJe+7VfOnSOAxCidvQnWIOYPsLtCNLmb357C7iAc9n7jaKMw
+t5hllOomw53Fs5/EXOElh0f150F4mixuQPzXDy7TfIv7zjbguzhrv56hp0d6xiw0KWNGAEbwoBFP
+1LWPQ7kPXW+7a2pRrHA3OTwwkuweT441LzqYm3v2uJ7uDoiLX/MhY8aHwvjltHjxkwvv3Vf6cKyP
+mdD8jgEn9jz641InxV6T5/1Dwgfvd7RaZP/Lyvd6vj748hmpTre1dN6Ln7uxC0/+7Go/bwkGfvRv
++bHZ99E5qU4PFi8+oR+5r+fd2chcdm6jNmX27H1FntexuMtPetdAJpfeJnc7IbgpQfMkZXiuAWWE
+O2mw7QetE2gZJ9DC+IjZ+5MhVhzvtl/3kDscuzuAVnYe+PpL3/uzjw7BeEuJlvt5koufNt8KzoJT
+DznO1Z78izsQ4HZ+tplkbvMUbdZInT4iJLZjkAjs+wd7HYiMgJFJzCozKpUOq0exgOxfnW9wNuVM
+Vp0eVKK7vU7yEcoQChp4yw1Rb5Uf6cYg4nB3megjD3s/N8cybMELrFgwlivm8vqhc1bobdfl7aY4
+I9H3NfDOEum34mjX6muE44ObWrZvS/gwwvz2yj/ZtP3Ms8q9y/RV9C6D6AjLeOtMNiRYDXLueSfw
+PnhbBw9mG6dkXrtNi53oKO4Y7SSYG+izsmUDZVRlYFPB/c3tBkHJd+D2Uejl50kOjs30IEm0kroO
+77di03RD0rvsttqBLXvOvUw+lF/HEbk2bis0RnBLCvpT5XIqVyQgvrVFe1iOj9EhXW2yFzCcP3gD
+pBMilT/bRSpzioNTyVVgV4PwFiT8R0acUCckEmhSZFArIQnP7Nt3wDeQO5INr837oFymHQcPn8AM
+O5DJDhOxfzgeehGFJiOG4fcsETCLXvAbvMfQ0klY2/5MBsnLrUMo5ie1VUg6tW8ji7OGhDaiTnVZ
+qkxbvOj/ab8jK44SDccJ3k9NjrhFrn1iJNKFETPlaUDScAYessARy91OXnlXlvTYZfngl7/7448e
+Coxy12x3OftsDTDLhORsE0fuDqhM9tmTLjsQmYIfN/xpJ1xjNALQFHbMyI7iMw2pMR2C0EApDspM
+yIyGRo0n23ZDdpsnWfWlmr5Tvwl6R44Eu27hsejjeml5ObKgFQ2kO2Ac9psT2Tm/u37jq/sxuxnf
+9lnbYPJIUF6RsDQtQ38dFJdRqmu7k/iENz1D3GeS5dxpEsN63PWAhgXdYhgvElsXB0rr0Cdo2doA
+tjVA1NHz20bjua6qZcNw22RrTOpEQgLUA7Fnxe7LJVOJFoglthfdaJp5jC2li33UPko6YJ7OKc3B
+OeYLbdJ0y0y6Bx1DUpgh75SWIU9kXL+gkw6RoTlC5qFA3o/EMVWOGACG3JNqyxXFk5ieHclkODAk
+SnBuv2iwqH9qQJmzE+IEiC0ranKLH4TLxNlOoiWActjnrUtexv2tMUYO9xxifd5rX73MB7m5TPd+
+m8ZaaBQLfo3RKvE1F+t3kbP0wVCwTzCjjgAZZEXQBkZPsG0QKUMq2ks1BnEZrT+/+hCQljmbp2gg
+E0Bdsxub7A5ArI91ZhMh2NicBH3KlnBLPBb4uQXjSglrlSQHyybsLBwyaRn33fSDuN0n9XbZg4Ax
+nkxZZP4G0L/LY3Ii85gHkhyOQO0AUnej7xjSc4Eun0Sp9vtmQW96ZEffJ0XnXEMGPQOkvbcMLIgX
++KG2j8sBECHedSDOWLHFlJ7a9/4igjSDX1W3jrFj045dFiRnCmBmTPZmCawcs+OrW2YtfPB7oBz2
+g9L6s8tSQanbsfU9ZHpQcmHN7Qxw2dhysfARmhIz1c5k7TCuAaeuiPPws70pGzphQaH9hyPjbhhY
+b1nP9rZWZXvR7YtWlqwa+tg5X3ejqWSyZKlNYDpoUiY7FgnYiWBXBcMyANGSli6DbsZk5w/Al4fa
+1GAHiAEL1QPjxb6JtpyLLisSiy2l9xrZ7XlTrj3/8dVNiZGmXSD+OTFRmN3fMq5Xw80VRRY3Jkxr
+xAu11hZfHYT4hRC2ELZ6nCVc1RyjfDGKjcZMfr42mkllSYFknSBhRMMVgrys/5ZF7fU08wyQDocs
+mhJVhHibmOxseg5ODI1A9N1QnfSoyXQmzMapGoRZCSBHic5ge3NTKleWo3hR+nhx2Aa24X6h8x1C
+t48ZqXlhGMDhB5cYM0pvMPdJzFHcmOBk4GbgM6nGuoYI5K7i33aMtOpJb7FCk0t/nJS99kBH/bkz
+xolQ4TQicpmGIgw4SSrVWW9kjFt7IDanHEGMHlEALeRqElOWPYmmYMSL+8ITJ0h6i4zHusN23esv
+/f6ffvQgpncsk8k0icEMliXu8F1Bls3NDlVVjBsFDVgI69xvrAH0rGwns0Qm7KFCjP5kYRuHas67
+gIwAiKCsicfcf7fbBxBCJm7SjEDsKz+NFTEJE7dz+sSld8ZRolmG5oxC7/oll5j8SG98iyUvE8rf
+gPj1e5XpWSltPVHbBueT5L7Gh2Ckum9XT34334SqsIa4kaNUi8pz0lAxa0zA4CWySVqV5CrOok8e
+v811HJRKsMu1CvqGgrJ+RbeUVMmuCGqkXh6HTgiT0AyQUMkhewwN4CHJsJNq7uLEKM+iv9pv3G1u
+hAmi4F6Z7v4sEGzmmURDvCgdE3XxokC8OK6luw9m7OLwIdjIaC+wA4iiHyPq1OuzcWAP9xunUm27
+Onm8g16f9w+GQli2620HKJIg1x6jSYvHDKsThiy7kho6MCumwI7jJTcWDMakseEiEYjd/r4ORL8T
+Wk6Y4JxhRXty6aouGJ+iRFu8KJMqFuvxXybOY77vBKbPOiCfqEeEa9x4UhRKmwpRixTMofqySfVK
+R2SjFtlpS3RD8/qN77NqqB/XRKZjR+oTDh0aUVBRuY5Lwm4bwUoNz3OdtRMYsmhwHQhhp6iwpNiC
+foVmHruupocPfdccMmPlFxmZLBPGhRKsJ+msKHt4s8L2WDHG8X0WbTlADplWlOjtmjd9vCj7yvDq
+nuRZAcEevElxRkhObVW5aMnXv1lm8ZhaHUl1KhkquVSLK6+X9eprrr9sU0M2YvLFee1rorV7kbJi
+FOS6HPVEbSGq2L40NckOgNz239vunvytbHvy1WckansPgmjwQduVoGcq/mVe31ImdH0mQCTsICf0
+A6GJKDfyDnGhBFZs5JshFAglR+l6gHYkGuwc2Sld32/MKIYOjRtPk7hRKmX5PXXofHnsUva0E+td
+sgozWbjHlcUIPBkRdffEr8Q40plYyipQtW6qMbPdR+oEtU2uU7Exy36Pyc6X1ZrLl6EBUieMsAVx
+0gabNqasZmf4+AnDj93aAVtn7hgCzYCYY1iSrRMT5bkBVOM48SrOol+4KSuGUlQ0uvM8i26WTmWd
+5qZUlpWHkWk18WKrBLv/l8yIm0i1qHSKEthpItVogAskMufY0ZMRm5wkOBYF5HoN4Aogtc8hAjJX
+dda57LoLgiQbUmzBGYCyS+TLKy5ToWIJLV0AQmwcz9BLAXVDGoAY4kZvJBIs/WWwxflyVnRg5q59
+TFSixWJ/8fDIJVoewvTuExaxgdMm1dq+YnHjTKrZpLqyo+KMpwY4lv+cHYsrvh3ECt6kMFtSvU/C
+niILqvR7s6zMcqozb84AUtBcL0BcNNrsQZltLo6a7HzUYic5rFZAj06aY9M176J3egRECpk3W4Kl
+R3QxX7GVfxorysCKsbQqkbWlGd1DFg1W2sPJ9J5Ub1lhMnRNpBq4tLXOifX8cE0iKr2W3wd2dH5p
+IFJ8tk6hRKwVxSjXGD9OALkJ8xoYOrGwqnLWV92eb6lmjrS5TBCwQwPx2GY19rdkgvZFtPJgXYJg
+OrMHRHAWSKI8m4Rvdtib0DXe7Td9ASseJS7USbRkeThm3JXqLT7TlPakCNiRalKD1fsLOdjEB+wI
+s9nMdyyJDyQzCeW6XqGuYokfp4C0jcOTj2xssq2fS2xYk9lxOPNaGI2GHTXpNj0PSQIujunYsC13
+HYEIdaCWcQPD5ti260lM9BNHVpzZecEgj+2CWPV6GGvnrFRvkoZZdY2762m1fUsKC9Wju2gtOtWe
+FD7HjmWLWq3lkrKjy3VlLgctjL4hMMPrF2YCSKstbyFAaomo5lQBlB6VOTB57AHcbU4dAEihw1uY
+oLVRunXYIxBR0SFO9C6dBfg7W+sYVHk4PHdjRfs7A+OyMuzSwqCWvRtDFyZ+YDDyjlTbAbkkkdmA
+NGNH8Q6HCsg6K6Yy4KKPTMmsG8uK2V6XFi/3rAwNmfIRIKUwZOVhl20OS1WZS0eEpf8RmEdVhrjO
+R7CU2pBgIMxtlWAOPmKr2lgrGiEQ3Xsv1pO0OBHsH0xasPUBfcX9WPEiVtxpqLn3mLFImQGg1Uij
+AT4mMufZsc+swXcUTRgKW3KqHx3l2nyh7cmXOpFdTupGICA1T5Fkm61sDEll1Gx5iuosFa4OoLRu
+qQjM8j44X1LDws5smKKNIGxsCPYOgCTDVSMQazWnxYnglyOJoDz3vmKXQU9YkZAVMXFZn//z9Z+/
+eFAw9qCs1apqeiz1OBf5ZPX5tpNcdhS4hh0L4NR3bFWSINfbM3l23cWPWwC5aALTA5KV58zB1B3M
+qGdJ2QclNrNXcIashcfVecxdNCagjx0IJ2yIzGYoY+qBWBOWpYsTM/Y1RXn2xmCmtvb7DCsGOydT
+YOjP/vfv/NofPHSjxGEicwU7rnGN7nnSsyO5NLdNcXq5ptbMgHbPm/V+r3YAWY5cikVINcaNJYvX
+WFlS2z5sAqc21PbAHORpNngAhNEBWN6Dva0IQgrLRgUIrWXNFiMiEDM0Qmxf9AUy64k8ezkzQz7T
++Yq7sWLHirvW1r0z47lEBm2eA3bsM+tCX8mqdpDMzOQ615GHhSYXNZQKy0lNaE4zQGqdsJRamGEN
+lrNk/VhZrOZXmLLeTGQrAi0g8z+hY3qv/95WEGqUQL0EU9+oADHZ1L45B8SYoYscyDMmLTLxFWex
+YseKJPSAtekZO2rlo1y11W1PCga0eY7YkXKN79gbKJLNMGaUa4ly3eLHavd4QsPVf6zM2zOkboVn
+PmRx3XWfMwGWrOGjLj1VpiRdXsCw4pP7RUswTlomM/C6Ptn+foJeoMQFUEKdLNe2s1qoYZXmhWJi
+g+t2+jhxnJSBjaCwbtvSNGtS2mFFbU17HGa8BTt6y41WZcouATtyrR0ybKyE8WPOXJ/U7CVq4eEb
+tXySgv5VW2ozk23SF3NQenXFF4dY+tz2Z+C9luhZ00Q3pylMJ6EIQsy4UZatdLgoSN5QtHCsMZi8
+ZYna2hqB9rrYkCx90rJ01Rare1/Dig8KxtHmOWbHrEUZW97C3jxGJRZM+3JNmXBvIk1JmWolxdpt
+1iveKCATWwxbXzPp6tGNWpdOtpUlqQdla/cBYFr3jxeer8j5Yh9yWwMtY7KAbEjQf+hNtmyyOpFm
+cjmyXlJnNm0PM/DRTJ41jsS5aa27H3xFZMWjBVl/tV5+Svc8QhlsnpLF9uzYZ9YnajJdN19LQa7J
+lyaMcl02HtGeRLtlBkjS1y4xpNqEmW2aAtc1ANoWpptosjFID0q3czpgKjpxSc+FprcMnh3tgFB2
+2DD1VROlqAUrPR4XdUCcxIkzeV606SMkLd2UNi/9qqG+5Dk7pv/3u/9wA+L3H0yqoYV+ya39CBds
+scUqtlhPWtOpy7UeqCRZQgCvZwabSfEAly9Da9kWsuAeVltt91vct/C1zcUozmgob0yJi/KhdJvF
+LZCw+Kq70HCdLdJqAyewIcFX+HPrQMcFWvbAcleLD2GimUussWYPxFkPhsSlqLvyTM1f7OXZWXH9
+ZSO/zx5Npke/sQVrWbtZtm9L2T+vFWP8S5uZaU+uvblbxONHgoQmq22YTPqVIbky5BbSlQdmN9Ir
+v21xZ/EidWPnssJgZeRT6yYKTKmZCnuVZNxEiuSKibwCLh5DEGp0k8eumSDTImN8KJ19Q500C3xh
+94CIpcalk2cJfr308/tKxWd9/r/4P9/49X//+GDUzDq3vaOrK60dM2+0wHcycdZkhn2NVJTrrTSi
+TFd015IeA+QKtlISnAGSdWWU2T7stk8ZmxJk2yZIsZbQtqzolZ2MuuchhyRAjcnSecG9AsPekjFH
+GfbXTbGVMSy7VUfA1sfU48phBcAgy9xn4BAPmke5B8QIYvE4kUUE13f7QjGs/KyPf0MSVog+Ohi7
+ZAaqMllXkRS4tWSmSlyJAcuGowpIGePHFWi55MyQMA+AFF/XoowHb6S12mocCSxZKVmqj4igJM2w
+FZT9FmdGIzxpFQs7l05S652hqd6ZY+W8TD6eBdd0j2xIuH4r2DcxRtwBIs4WWpTl2sJb2cueTZ69
+9pQvAOODJDHBdxyTmVo12ZFry66TZwrsazcX7eEvCc0KhwrLEZCCSQ2JOjVaApTa41gbymnGktVH
+VFAu+l58btO2HyC19cS4fVqa9AUczTuOQ5raQniLRQky5NyBEGYAKXu2ciGPVZsat9IFQBwTlqHv
+DVdkTuRZ2ori+U/pX3ioJGaQm1kyQ3W554KLeWCageUeGUtWuX5ba1yTfQEQJjU5hxOlQX/7Nufm
+jXkYZHXYdl9PLMpBf6PXLNXCkTfb75qsLDCcGxOUpXy28YL3aZPIStJU4tWlPidMlKivn7slMLn5
+hIENqXmIdwWiKBBDyTCT9IOvPOvaXsvkWZO+z99k+ezJyPRBMuNyrdFhOUwaP0qugZ7Y7KUg17Vz
+mFeGLF++VHtSuGdItH2oBeG29k+7cERbv1ZJT1ZcYdt8hauR7uJbu3B0lAoyplVA0rC/dnH5OdSq
+xQYPRIk2L2hgQAolHZHJtFpsEdeGhxAfwgrVOLrxAiBCb9tenGglRx89rcnqZ3/5zd/83tMD45DM
++LJWl2tSDff4cZNMrc5wHz9eCcil1rFrYQVk2+s9tWJTf98BJcet3AMwLQFZNFXBjSA5+2jYMPmr
+NaA2lA0rKjsAIpjAAuymixLN2JChBeytgLgTJ5o8gw9OlyYwDxY3olwbi+hKgU2Otr2Yd+NHTGgu
+BCT1SY15RVnHkWTvzBHLSepAAO0G184wS5ULKH2w6Q4wG8OJz6eZfSOXnWPTz7mZATCHaWASpkNw
+aCtr/iECJ0uYr98DUSBGPARiFoxaxzixhDIXDFL2xuOHjhv7QN6GPAzxY47xI2HzqFNBjrfHGBJm
+GbeDV41ojJfa5kA5xIbk42pzDTb9yVhP6Hay3kBsaXHfIjitpG3jcnDx+y0zg7w1xgoY1+VFcxe8
+LbAiMMNIZjwWol0UGXxEDM4vY8TQplGO188lxIkGxM/X8/vZk7J2LsmuS/yY60q8LRP9uVaOT9bf
+SOIe4AUMSUltndqAyz4gdGBJqs232de16NJTK5Lj5n+adlMb3V6WAPROtjFn6BA7KgV2zEeTHkjx
+VfUwPprCeBGsQLncx8QmlhGhmTbYN+eAKPBClrAsAMTcVmn/9C+/+RvfuwaMDy7VLtdd/FgD3kw7
+CQ1dAkiqgCwPPHnSUpOm1GI/H2/L2hOpABCdRe2gbCWgkOhUaWdq+35I0+p8VX9EL9XSEpkAorCF
+XdfRQ3EccxsdE2JDom6UCk6XaD4ijrmK0kwwsFzlf5KwuJ0vF2x4EdYHPZZUo92T2/i1sFvZJtfW
+FOrGrm/+M0o2wxGxGmqzfrzEK9i5rIVnPy3+OJWaZr1UCV9MwsULzXUbtjDyJqj0Jf9rY8hUkl2C
+c9i5yKU4S7CG6mIrz57bppkZ2BA7u+3tbS1mP4+G9jlGJABiedzSJSyaxf/Vlklfk8A8+o8toNex
+OSXD7RMaS7tDhh1GmABDWsFj8wB1UsSpSvH2KNFBiIUlRSsuLN4DZi0xvABT+tJB/ab3jNnNhaur
+EJjP1qIDI1LYEHLYlq11Xof9Ln3cEAz2HiSZAhuGqorXmjkUludA1EJBAGKG3silbee0/f3Z//13
+v/n9u4DxUaR6aDXTJaRyASC1j3iUbLIVMFrL3iorHkdmXQ5ly7eDbdMm03egTD5BZR+YFhhmgqUH
+V8bRC4372BwBkKWNp+tBSF28yNIGeGaQ5W7SfSgCZuyXjNJ8CMTN6N7r0pl9CYefX/jGD/7O+s9/
+fiyGTFq8TdpDaIPpTmWUQy3qnqrlQyfrFrQEJJWY067T9SjJlxXWQrY+B9USXgVP8tttdal3aHOb
+4sRw3CqjKjCh2Azvx6dJHB3v/cbacQTxFIBd3yP2HmKCYhBJINXIhtDIKzDaerRvdoCYeyDWt/rn
+Kyv+k0vO+55MPyo7dgmNZ9jGkNuZ32LIV5EhiyhvPuTWzpLawCgK3T7NdHaWJF/GkNziYygvm3wb
+4HTshTGRM6YgOMW6akM3zu4IYdlttG3Pi/usYOeMsyB0ZhP1myqpkapzcASSFAOYzp9sm7OHLp8A
+xGK3XQDE+fqKSxKYp5DIhISm+WvBg5R5UuPzgbPXn7vEZis4Yr9y9uWVUmvTmbwzFZpj4cSIgEeZ
+c/MGl+Zo+q6uAonGXh1aT+JwH/M9l1YK1GQKPMusTby21VvoOyRPtGB0fXmON5CkxEX/eciY9Yi4
+lYRAXEYvMQBxvXyeK6nR2zDj00hozjCkKEOeKkNuku2BXJ/YNA5pLGlf6e0xb6pKbwlObUTT5Vy2
+I172VQaNLYOmImsq/S2xq9YJcTkUZzKrfqBMZL9Zj6OxYLJRfCC3tjaaOsumZ0OvhYNzAzvKWuND
+WMi1A8Tt2p+uxPb9W4DxUaX6EkAmBSQpQ+ZU270wsdFRKlW2bbBtdS2lLmZV27I23A2gbHtLwwaq
+ZtbzsOd6AGcXKM72edzFZLez8QA+iCVDd7dJMdNlIOQuSelleZYxC7jgB0A0/Fzuqx7d+NiJzF5S
+w42A6jrqNWuxaRJDYqO2TdKsJFHLd3wHq/URyXoW2EbS1htPFlPCwcp1v6zanWNTzCxbmdk0b+G7
+TgJJN7lTkd3KgAm2b/O2vA6Erd4dE5TWKxnZ0N5HD0SorOwBcfv585UV/+k1n/mcTD8JduwZkjUh
+1rnRnLcdI1MFFMj2xpBkst2zZNjpYH3WXCdEbQ06A1OS7+LqyQ5FxrTxBCSZR0TKDlAPvJ3p9iXJ
+JZcHBnyDAJwwoR5DCZsXH7BhL8szIEqzb6TrMrqaFS+yGp4SOyJDlt99JmizfuzGsyxJNtiBI6tV
+G6h1d4GdI6mtP50xprFsW58lniG6Gc375iJ74dtiS389qZ1sQv3+LDMAGnvyBIRTSb6ADXfiw9Do
+Al+eq1nx0gTmybAjMqQZ47X1rHYxYBxZegmzNinOWJJ0vZTY5hq2dipD+0ONKf3v7DbNjDH1+bMD
+iLs6c5P4SbMICXHnguByA1L2I9gYcgZAbGQLMeEEhOhwH7HhTny4B8Q7seKlJuyTY0dnycaQbo5D
+HOlrTzqW9PtQnAARmXI0zQm2kxsMcGNNPLCnneN8ic84gG4E38CAyIIYExLYQz0IoZozeIdn40Oa
+ruW5EyteY+08KXbsa9lZe7/ZxqNs32xdFG2LuCyWtPLdiWyK0w5T+na9kS0dmAJjIuubGSotb9pG
+2Nd37khkVOoG2+ILIQCpqz/LeRB688mMDTOwoYH9AIh3ZsWLmVHZcQPiN58aII/iSGRJ2/Oy/t1i
+vROSJDClBY0ztvRSoLKm/s00T1yuqwUGaZ/fLpMYkmYsyFihuRSE5E1IHRvuyfJNWHG3AvNUqzJH
+caRldNk7wbz3ZWvUJS1YVOlb/6wd5GVxuSw49lDdiS1Bt0rO0q26k9BtbbWeKmi68tBeSyfatt3f
+z13wvuG5BHrR9dlzrLTUalTbvaDcNbeJ877s4I2ubCwbb2YSYEMhaIitXOuyLGj/HKjnnX+urcA8
+SbkOsl3B6f0QmNwUXQbpXtQsT8m2TFKmFNzZSgwjtkdvYEzc8patdsJx+t1+jMjEO9twTFb1y2RR
+/5QBfUIsbEFvMSEyYXuekKBcy4aGi/9yTbXlrWT6Ocj1XnJjFkyU7moDJTgQuhElYaITDhL7coS2
+hSs1cFLnMfKVB1sOrguDs7odjHoAdo8TG0MnF4IQtpHeiw1vKs9Xy/RzkOueJQknfXXSXRZ95bpP
+qc+8Bvn+GQlKeOt8gXbs+hxNzmtjQ71k0gYIXYyfoYEid5dwvS7cLxeC57Muc1tw1kkwC05zK/aM
+/LxealMDyLHv/5KDb+iSnLHZ/DwQ31qe7yrTz0KuQ0kNM+4q3YRZt8p32fZKrOUxt0RgY8ulmtcm
+42YBBi9R2mxQ7kqAwt2Up75GLZP+MRzKmFtZ0Rkx0bjLwEJhMX+0aMjq1jWuRCbELJmILmXDm8nz
+nWX6ucn1TLpNvtlxIUGSWbPv1B2olFom3bxEPu8jXnuU5fxVBr4YP1KY9CUUW/Ei/t8KhDeV5zvL
+9HOT65l0U5PDIN96Pkv2bRLuC5tUxrfLzzs5/5lmp52s4ySH6y4xwRaTXZPen4H8+nsBGV7IxxdL
++RxhikmT4wW2Bs6XSfK9yPPbyvSzkuuZdBtTonxDXdsl3DbAMBm3hNqycXveBdgTpvnLXb/tw0i8
+jvUG9rP9xIVojwUxMbkjE96LPL+1TD9nuT4yzTEDZyK0XjhKdgTnta1i1sKW5brqTIYk2sC3DBN5
+mnXUA/ACm+ZRgHgTML4rgJyBcgRmiN6GOPGUuN9PusWhFx7sPMaH0hYoDsDrADhnwBuB8F6BeDMw
+vkuAvBSYRNOyMx8d6FM6PtwHYJvmMlgNv0cA3lvCcrME5l1IaM4xlHl7mPT4AipNfnJJBlhHeOwX
+/0pr1rYArF5ocqnDQHeKhNIulP1C7b1A/iESfMlb/dw8Ybl1AvPsE5qrkx6nupb8TNgzuIl8kXlz
+eIewDcuEUkXoLq1BT0Oeby7T76pcXyUvzHzvL3b/wHsUIN4LGN9XQF4cBx0BdjJK+ZF/HgyI9wbG
+F0C+Ez8PCsR7BeMLIF+A+KTA+ALIFyA+KTACIL+yXl6/gPIFiI8KxheWfBYg3Cy5nz4WEB8cjC+A
+fGHDJwXGF0C+APFJgfEljnwB4pMC4wtLvt/x4ZME4wsg3282fHJgfJHt95cNnyQYX0D5frLhkwbj
+i3S/X2z4LMD4wpLvDwifBRhfQPl+gPBZgfEFlO82CJ8lGF9A+W6C8FmDcQJKek+AiYui3hkQvhNg
+fI+A+c6x4DsNxncQmO80C743YHymwOzXJb8XAHyvwHgATHpEgM4WxL934HuvwXgFQN8WrOemL7z3
+wHsB4/2A9QVsLz8vP+/az/8XYABUc31ZqsG2bgAAAABJRU5ErkJggg==" transform="matrix(0.24 0 0 0.24 1.2539 1.2534)">
+	</image>
+	<g>
+		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="17.5146" y1="23.7031" x2="12.2812" y2="33.0956">
+			<stop  offset="0" style="stop-color:#FFFFFF"/>
+			<stop  offset="1" style="stop-color:#85BEDF"/>
+		</linearGradient>
+		<path fill="url(#SVGID_1_)" d="M18.731,28.497c-0.88-0.377-2.303-1.005-2.93-1.8c-0.461-0.544-0.419-0.544-1.131-0.795
+			c-0.587-0.167-0.963-0.502-1.633-0.585c-0.502-0.042-2.51-0.544-2.386,0.167l-0.042-0.167c-0.25,0.795-0.628,1.465-1.046,2.218
+			c-0.294,0.543-0.209,0.712-0.042,1.298c0.293,1.088,0.419,1.172,1.298,1.632c2.511,1.381-0.292,5.4,1.801,6.571
+			c0.333,0.21,0.752,0.336,1.087,0.461c0.419-0.586,0.628-0.963,1.214-1.339c0.377-0.21,0.629-0.293,0.88-0.671
+			c0.333-0.417,0.209-0.837,0.418-1.255c0.293-0.586,1.088-0.42,1.549-0.838c0.586-0.544,0.627-1.256,0.879-1.883
+			c0.293-0.67,1.172-1.004,1.423-1.634C20.364,29.041,19.358,28.748,18.731,28.497z"/>
+		<path fill="#FFFFFF" d="M26.852,12.381c0,0.418-0.503,0.67-0.293,1.047c0.419-0.503,0.712-0.754,1.382-0.837
+			c-0.168-0.502-0.712-0.837-0.837-1.339c-0.126-0.377,0-0.88-0.545-0.754l0.125,0.125c-0.627-0.125-0.335,0.671-0.21,0.963
+			C26.559,11.796,26.852,12.214,26.852,12.381z"/>
+		<path fill="#FFFFFF" d="M25.847,11.544c0.032,0.048,0.063,0.11,0.095,0.181c0.024-0.057,0.049-0.116,0.073-0.181H25.847z"/>
+		<path fill="#FFFFFF" d="M25.941,11.725c-0.161,0.353-0.357,0.595-0.429,0.992C26.242,13.082,26.145,12.204,25.941,11.725z"/>
+		<path fill="#FFFFFF" d="M23.503,7.735l0.083-0.126c-0.167,0.042-0.46,0.042-0.669,0.084c-0.294,0.921,0.669,1.046,1.214,0.628
+			C25.052,7.609,24.09,7.274,23.503,7.735z"/>
+		<path fill="#FFFFFF" d="M25.177,20c-0.078-0.04-0.084-0.042-0.156-0.078c-0.003,0.011-0.053,0.036-0.053,0.036
+			c0.116,0.033,0.195,0.078,0.243,0.133c0.003-0.003,0.006-0.005,0.009-0.007L25.177,20z"/>
+		<path fill="#FFFFFF" d="M29.453,3.521c-0.065-0.071-0.138-0.145-0.216-0.222C29.305,3.381,29.378,3.452,29.453,3.521z"/>
+		<path fill="#FFFFFF" d="M31.539,8.656c0.006-0.03,0.011-0.06,0.017-0.09c-0.047,0.003-0.094,0.006-0.142,0.006L31.539,8.656z"/>
+		<path fill="#FFFFFF" d="M25.009,19.916c0.005,0.002,0.008,0.004,0.012,0.006C25.022,19.919,25.019,19.916,25.009,19.916z"/>
+		<path fill="#FFFFFF" d="M25.171,20.126c0.021,0,0.045,0,0.066,0c-0.006-0.013-0.017-0.024-0.026-0.036
+			C25.186,20.106,25.122,20.132,25.171,20.126z"/>
+		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="12.3125" y1="11.4346" x2="2.8481" y2="22.4337">
+			<stop  offset="0" style="stop-color:#FFFFFF"/>
+			<stop  offset="1" style="stop-color:#85BEDF"/>
+		</linearGradient>
+		<path fill="url(#SVGID_2_)" d="M9.774,25.357l0.167,0.167c0.125-0.125-0.629-0.502-0.796-0.711
+			c-0.335-0.502-0.041-0.879,0.042-1.548c-0.377,0.041-0.754,0.209-1.174,0.209c0.128-0.251,0.797-1.005,0.546-1.298
+			c-0.335-0.292-1.214,0.796-1.592,0.796C6.759,22.26,6.55,21.045,7.095,20.46c0.335-0.376,1.13-0.628,1.591-0.46
+			c0.627,0.209,0.585,0.628,0.711,1.172c0.545-0.585,0.293-1.506,0.628-2.135c0.209-0.418,0.755-0.46,0.796-0.962l-0.085,0.084
+			c0.671-0.67,1.258-1.381,2.01-1.967c0.628-0.502,1.506-1.005,1.926-1.675c-0.544-0.083-1.048-0.042-0.587-0.711
+			c0.419-0.67,1.467-0.209,1.591-0.837c0.127-0.586-0.836-1.256-1.004-1.759c-0.168-0.417-0.335-0.962-0.42-1.423
+			c-0.208,0.21-0.334,0.502-0.543,0.712c-0.335-0.585-0.085-0.837-0.795-0.712c-0.419,0.042-0.837,0.335-0.963,0.753
+			c-0.166,0.503,0.167,1.047,0,1.55c-0.125,0.418-0.587,1.045-0.963,1.213c-0.125-0.459,0.251-0.921,0.126-1.381
+			c-0.712,0.042-0.921-0.335-1.466-0.669l0.168-0.084c-0.251,0.167-0.628-0.418-0.921-0.586c0.502-0.669,1.214-1.172,1.758-1.8
+			c0.419,0.795,1.089-1.13,1.424-1.465c0.25-0.293,1.173-0.585,1.424-0.167c0.291,0.502-0.419,1.046-0.67,1.382
+			c0.459,0,0.961,0.083,1.338,0.334c0.378-0.292,0.879-0.753,1.089-1.214c-0.335-0.208-0.629-0.418-0.879-0.712
+			c0.25-0.501,0.194-1.154-0.325-1.045c0.084-0.051,0.162-0.108,0.242-0.168c-0.964-0.293-1.298,0.335-1.09-0.837
+			c0.084-0.544,0.21-0.879,0.67-1.381L13.75,3.466c0.251-0.251,0.46-0.586,0.628-0.879c-0.042,0-0.168,0-0.21,0
+			c0.042-0.183,0.003-0.333-0.098-0.456C6.901,4.54,1.647,11.114,1.175,18.976c1.2-0.378,1.926,1.715,2.32,2.697
+			c-0.127-0.46-0.209-0.962-0.419-1.38c0.586,0.67,1.256,1.046,1.34,1.967c0.085,0.586-0.167,0.545,0.502,0.795
+			c0.503,0.168,1.047,0.125,1.507,0.335C7.346,23.725,8.769,25.566,9.774,25.357z"/>
+		<path fill="#FFFFFF" d="M22.498,4.805c0.083-0.167,0.754-0.292,0.964-0.335c-0.043-0.668-0.336-1.381-0.127-1.967
+			c0.101-0.301,0.337-0.69,0.607-0.974c-0.321-0.066-0.644-0.123-0.971-0.172l-0.351,0.044l0.33-0.047
+			c-0.922-0.138-1.866-0.21-2.828-0.21c-1.273,0-2.517,0.126-3.719,0.365c-0.143,0.358-0.353,0.826-0.353,0.826l0.112-0.017
+			c-0.407,0.688-1.621,0.729-1.661,1.565c0.629,0.083,1.299-0.168,1.926-0.042c0.503,0.795,0.711,1.423,0.252,2.302
+			c0.292,0.335,0.668,0.043,1.005,0.084c-0.086,0.711-0.754,1.255-0.461,2.051c0.083,0.293,0.292,0.962,0.418,1.213
+			c0.251,0.377,0.378,0.293,0.838,0.461c0.46-0.879,0.375-2.008,1.339-2.511c0.629-0.293,1.382-0.335,1.925-0.671
+			c0.377-0.25,1.047-0.752,1.047-1.255C22.791,5.224,22.372,5.14,22.498,4.805z"/>
+		<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="29.9219" y1="15.73" x2="34.6676" y2="30.2401">
+			<stop  offset="0" style="stop-color:#FFFFFF"/>
+			<stop  offset="1" style="stop-color:#85BEDF"/>
+		</linearGradient>
+		<path fill="url(#SVGID_3_)" d="M29.891,3.848c0.021,0.026,0.04,0.052,0.058,0.078c-0.067-0.057-0.138-0.111-0.203-0.165
+			c-0.052-0.03-0.104-0.062-0.154-0.092c0.442,0.503,0.608,0.906,0.608,1.721c-0.251-0.084-0.459-0.167-0.668-0.292
+			c-0.253,0.879-0.378,1.548,0.082,2.385c-0.123,0.409-0.482,0.938-0.383,1.39c-0.238,0.473-0.488,1.238-0.369,1.708
+			c1.004-0.837,0.92,0.042,1.59,0.586c0.208-0.376,0.376-0.795,0.628-1.171c0.125-0.168,0.377-0.042,0.419-0.419
+			c0-0.292-0.378-0.335-0.419-0.543c-0.083-0.419,0.21-2.177,0.712-2.302c-0.08,0.598-0.124,1.233-0.235,1.835
+			c0.152-0.013,0.305-0.041,0.455-0.071c0.003,0.257-0.189,0.646,0.062,0.923c0.441,0.484,1.11-0.089,1.565,0.366
+			c-0.224,0.369-0.342,0.184-0.666,0.251c-0.36,0.075-0.4,0.236-0.543,0.62c-0.158-0.378-0.533-0.796-0.807-0.243
+			c-0.194,0.394,0.052,1.048-0.344,1.332c-0.335,0.239-1.232,0.334-1.489-0.034c-0.243-0.35-0.028-0.883-0.334-1.209
+			c-0.063,0.342-0.269,0.658-0.228,1.001c0.036,0.318,0.303,0.561,0.17,0.874c-0.272,0-0.617,0.02-0.819,0.186
+			c-0.167,0.135-0.171,0.391-0.428,0.493c-0.227,0.089-0.582-0.045-0.767,0.163c-0.091,0.101-0.11,0.48-0.162,0.622
+			c-0.233,0.029-0.521,0.057-0.729,0.144c0.095,0.507,0.824,0.659,0.777,1.246c-0.028,0.359-0.169,0.348-0.504,0.295
+			c-0.361-0.058-0.765-0.082-1.122-0.154c-0.013,0.745,0.426,1.229,0.041,1.983c0.132,0.061,0.247-0.039,0.361,0.01
+			c0.088,0.037,0.162,0.147,0.218,0.169c0.228,0.09,0.404,0.137,0.67,0.092c0.28-0.048,0.396-0.13,0.547-0.342
+			c0.054-0.077-0.016-0.214,0.068-0.307c0.08-0.086,0.214-0.075,0.307-0.148c0.365-0.282,0.346-0.97,0.719-1.213
+			c0.062-0.039,0.465-0.025,0.62-0.083c0.221-0.082,0.337-0.053,0.495-0.214c0.124,0.476,0.399,0.861,0.76,1.21
+			c0.359,0.349,0.818,0.713,0.046,0.845c0.247,0.33,0.323,0.449,0.614,0.067c0.215-0.283,0.339-0.564,0.602-0.788
+			c-0.479-0.45-0.898-1.005-1.243-1.582c0.501-0.494,1.635,1.117,1.656,1.541c0.024,0.464-0.232,0.661,0.241,0.877
+			c0.641,0.293,0.413-0.452,0.436-0.917c0.384,0.212,0.77-0.176,1.125-0.046c0.182,0.065,0.213,0.283,0.334,0.411
+			c0.192,0.206,0.123,0.16,0.333,0.22c0.425,0.122,0.624,0.003,0.756,0.543c0.08,0.329,0.191,0.762,0.053,1.088
+			c-0.206,0.483-0.866,1.12-1.344,1.29c-0.493,0.176-0.941-0.228-1.384-0.413c-0.709-0.296-1.421-0.555-2.112-0.93
+			c-0.679-0.366-0.541-0.11-1.042,0.146c-0.53,0.271-1.057,0.682-1.624,0.87c-0.762,0.254-1.834,0.379-2.659,0.377
+			c0.192,0.31-0.392,0.865-0.562,1.171c-0.672,1.046-1.047,1.632-0.713,2.888c0.168,0.628,0.378,1.172,0.713,1.716
+			c0.167,0.251,0.292,0.628,0.585,0.795c0.376,0.293,0.336,0.126,0.838-0.042c0.544-0.168,1.465-0.292,2.051-0.125
+			c0.208,0.042,0.293,0.251,0.501,0.293c0.085,0.042,0.671,0.083,0.712,0.125c0,0,0,0,0.043,0c0.126,0.544-0.168,0.963-0.168,1.465
+			c-0.042,0.545,0.084,0.46,0.294,0.963c0.376,0.879,0.082,1.968-0.21,2.805c-0.336,0.963-0.084,1.631,0,2.637
+			c0.047,0.563,0.345,1.089,0.53,1.611c2.281-1.364,4.252-3.192,5.782-5.357c-0.259-0.639-0.451-1.269-0.16-1.779
+			c0.628-1.13,2.009-1.632,2.302-2.972c0.085-0.461,0.043-0.921,0.21-1.339c0.11-0.368,0.351-0.55,0.654-0.667
+			c0.304-1.347,0.465-2.749,0.465-4.187C39.104,13.216,35.411,7.168,29.891,3.848z M31.958,8.321
+			c0.023,0.025,0.037,0.056,0.045,0.089L31.958,8.321z"/>
+	</g>
+	<circle fill="none" stroke="#1996CE" stroke-width="1.5" stroke-miterlimit="10" cx="20.123" cy="20.122" r="19.373"/>
+</g>
+<g>
+	<g>
+		<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="49.9648" y1="70.4199" x2="16.4838" y2="31.7881">
+			<stop  offset="0" style="stop-color:#E6BA21"/>
+			<stop  offset="0.546" style="stop-color:#E6BA21"/>
+			<stop  offset="0.5592" style="stop-color:#E8BF38"/>
+			<stop  offset="0.5886" style="stop-color:#EBC964"/>
+			<stop  offset="0.6206" style="stop-color:#EED287"/>
+			<stop  offset="0.6545" style="stop-color:#F0DBA3"/>
+			<stop  offset="0.6907" style="stop-color:#F2E3BC"/>
+			<stop  offset="0.73" style="stop-color:#F3E9D0"/>
+			<stop  offset="0.7735" style="stop-color:#F4EEE0"/>
+			<stop  offset="0.8237" style="stop-color:#F4F2EC"/>
+			<stop  offset="0.8862" style="stop-color:#F5F4F3"/>
+			<stop  offset="1" style="stop-color:#F5F5F5"/>
+		</linearGradient>
+		<polygon fill="url(#SVGID_4_)" points="55.489,37.063 37.442,34.441 29.372,18.089 21.301,34.441 3.255,37.063 16.312,49.793 
+			13.231,67.768 29.372,59.28 45.513,67.768 42.431,49.793 		"/>
+		<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="33.6748" y1="62.9326" x2="26.9382" y2="24.7276">
+			<stop  offset="0" style="stop-color:#E6BA21"/>
+			<stop  offset="0.362" style="stop-color:#F7D709"/>
+			<stop  offset="0.8834" style="stop-color:#FCEE35"/>
+		</linearGradient>
+		<polygon fill="url(#SVGID_5_)" points="48.959,38.529 35.425,36.563 29.372,24.299 23.318,36.563 9.785,38.529 19.578,48.077 
+			17.267,61.557 29.372,55.192 41.478,61.557 39.166,48.077 		"/>
+	</g>
+	<path fill="none" stroke="#9B7F2E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
+		M19.898,34.646c0.771-0.111,1.685-0.775,2.029-1.475l6.816-13.811c0.345-0.699,0.909-0.699,1.255,0l6.815,13.811
+		c0.346,0.699,1.259,1.363,2.03,1.475l15.242,2.215c0.771,0.112,0.945,0.649,0.388,1.192L43.445,48.804
+		c-0.559,0.544-0.907,1.617-0.775,2.386l2.604,15.181c0.131,0.769-0.325,1.101-1.016,0.737L30.626,59.94
+		c-0.689-0.363-1.818-0.363-2.509,0l-13.631,7.167c-0.69,0.363-1.146,0.031-1.016-0.737l2.604-15.181
+		c0.131-0.769-0.218-1.842-0.775-2.386L4.27,38.053c-0.558-0.543-0.383-1.08,0.388-1.192L19.898,34.646z"/>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/trapFlashPalette/downloadToBoard.svg b/Sankore-3.1/resources/images/trapFlashPalette/downloadToBoard.svg
new file mode 100644
index 0000000..77282ee
--- /dev/null
+++ b/Sankore-3.1/resources/images/trapFlashPalette/downloadToBoard.svg
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="96px" height="96px" viewBox="-7.28 -5.76 96 96" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<g>
+		<path fill="#FFFFFF" d="M81.87,64.199c0,2.75-2.25,5-5,5H5.75c-2.75,0-5-2.25-5-5V11.435c0-2.75,2.25-5,5-5h71.12
+			c2.75,0,5,2.25,5,5V64.199z"/>
+		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="41.3105" y1="9.5728" x2="41.3105" y2="66.061">
+			<stop  offset="0" style="stop-color:#F0F1F2"/>
+			<stop  offset="1" style="stop-color:#FAFDFD"/>
+		</linearGradient>
+		<path fill="url(#SVGID_1_)" d="M79.031,61.561c0,2.475-2.093,4.5-4.65,4.5H8.239c-2.558,0-4.65-2.025-4.65-4.5V14.073
+			c0-2.475,2.092-4.5,4.65-4.5h66.142c2.558,0,4.65,2.025,4.65,4.5V61.561z"/>
+	</g>
+	<path fill="none" stroke="#A2A9AD" stroke-width="1.5" stroke-miterlimit="10" d="M81.87,64.199c0,2.75-2.25,5-5,5H5.75
+		c-2.75,0-5-2.25-5-5V11.435c0-2.75,2.25-5,5-5h71.12c2.75,0,5,2.25,5,5V64.199z"/>
+</g>
+<g id="XMLID_1_">
+	<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="54.4434" y1="0.75" x2="54.4434" y2="49.9298">
+		<stop  offset="0" style="stop-color:#F6B93C"/>
+		<stop  offset="0.0341" style="stop-color:#F6B53A"/>
+		<stop  offset="0.2023" style="stop-color:#F3A633"/>
+		<stop  offset="0.393" style="stop-color:#F29C2E"/>
+		<stop  offset="0.6231" style="stop-color:#F1962B"/>
+		<stop  offset="1" style="stop-color:#F0942A"/>
+	</linearGradient>
+	<path fill="url(#SVGID_2_)" d="M63.11,26.083V0.75H45.776v25.333h-8.349l14.984,22.933c0.908,1.188,3.064,1.25,4.062,0
+		l14.985-22.933H63.11z"/>
+	<g>
+		<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="54.4434" y1="0.75" x2="54.4434" y2="49.9296">
+			<stop  offset="0" style="stop-color:#F9DB47"/>
+			<stop  offset="0.0261" style="stop-color:#F8D244"/>
+			<stop  offset="0.083" style="stop-color:#F6C33E"/>
+			<stop  offset="0.1499" style="stop-color:#F5B63A"/>
+			<stop  offset="0.2322" style="stop-color:#F3AE37"/>
+			<stop  offset="0.3465" style="stop-color:#F3A936"/>
+			<stop  offset="0.6503" style="stop-color:#F3A735"/>
+			<stop  offset="1" style="stop-color:#F0942A"/>
+		</linearGradient>
+		<path fill="url(#SVGID_3_)" d="M54.439,49.929c-0.832,0-1.59-0.342-2.027-0.913L38.438,27.63c-0.2-0.307-0.217-0.7-0.041-1.023
+			c0.174-0.323,0.512-0.524,0.879-0.524h6.501V1.75c0-0.552,0.448-1,1-1H62.11c0.552,0,1,0.448,1,1v24.333h6.501
+			c0.367,0,0.704,0.201,0.879,0.524c0.175,0.323,0.158,0.716-0.043,1.023L56.474,49.016c-0.02,0.03-0.041,0.06-0.063,0.087
+			C55.992,49.613,55.236,49.929,54.439,49.929z M54.046,47.856c0.022,0,0.171,0.073,0.394,0.073l0,0c0.2,0,0.355-0.059,0.42-0.099
+			l12.903-19.747H63.11c-1.103,0-2-0.897-2-2V2.75H47.776v23.333c0,1.103-0.897,2-2,2h-4.653l12.921,19.778
+			C54.042,47.858,54.043,47.856,54.046,47.856z"/>
+	</g>
+	<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
+		M63.11,26.083V0.75H45.776v25.333h-8.349l14.984,22.933c0.908,1.188,3.064,1.25,4.062,0l14.985-22.933H63.11z"/>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/trapFlashPalette/downloadToLibrary.svg b/Sankore-3.1/resources/images/trapFlashPalette/downloadToLibrary.svg
new file mode 100644
index 0000000..1c057cd
--- /dev/null
+++ b/Sankore-3.1/resources/images/trapFlashPalette/downloadToLibrary.svg
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="96px" height="96px" viewBox="-7.055 -5.91 96 96" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g id="XMLID_3_">
+	<path fill="none" stroke="#010101" stroke-miterlimit="10" d="M0.75,67.974"/>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="38.2178" y1="73.8208" x2="38.2178" y2="4.8208">
+		<stop  offset="0" style="stop-color:#B7B6B7"/>
+		<stop  offset="1" style="stop-color:#D9D9DE"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M75.687,21.14v-5.114c0-1.247-1.021-2.268-2.268-2.268h-42.67V7.821c0-1.657-1.344-3-3-3H3.75
+		c-1.657,0-3,1.343-3,3v60c0,3.313,1.116,6,2.772,6c1.657,0,2.657-2.682,3.228-6l5.71-44.432c0.159-1.237,1.31-2.249,2.557-2.249
+		H75.687"/>
+	<path fill="none" stroke="#010101" stroke-miterlimit="10" d="M0.75,67.974"/>
+	<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="45.7812" y1="73.855" x2="45.7812" y2="21.1055">
+		<stop  offset="0" style="stop-color:#ECECED"/>
+		<stop  offset="1" style="stop-color:#FFFFFF"/>
+	</linearGradient>
+	<path fill="url(#SVGID_2_)" d="M3.493,73.774c1.657,0.001,2.66-2.679,3.235-5.997l5.76-44.425c0.161-1.237,1.312-2.248,2.559-2.246
+		l71.136,0.08c1.246,0.001,2.079,1.006,1.851,2.232L80.143,65.63c-0.229,1.226-0.789,3.18-1.244,4.341c0,0-1.522,3.886-3.18,3.884
+		l-71.45-0.08L3.493,73.774z"/>
+	<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="47.1133" y1="73.8208" x2="47.1133" y2="23.7784">
+		<stop  offset="0" style="stop-color:#C7C8CC"/>
+		<stop  offset="0.0179" style="stop-color:#C9CACE"/>
+		<stop  offset="0.1426" style="stop-color:#D5D5DA"/>
+		<stop  offset="0.2577" style="stop-color:#D9D9DE"/>
+		<stop  offset="1" style="stop-color:#E6E5E9"/>
+	</linearGradient>
+	<path fill="url(#SVGID_3_)" d="M6.184,73.821c1.605,0,2.574-2.547,3.126-5.699l5.53-42.207c0.154-1.175,1.268-2.136,2.476-2.136
+		h68.896c1.208,0,2.016,0.953,1.795,2.118l-7.596,40.108c-0.22,1.164-0.761,3.021-1.2,4.124c0,0-1.47,3.692-3.075,3.692H6.935H6.184
+		z"/>
+	<g>
+		<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="3.6626" y1="47.4746" x2="75.8658" y2="47.4746">
+			<stop  offset="0" style="stop-color:#838584"/>
+			<stop  offset="0.0097" style="stop-color:#898C8B"/>
+			<stop  offset="0.0381" style="stop-color:#9A9B9C"/>
+			<stop  offset="0.0717" style="stop-color:#A6A8A9"/>
+			<stop  offset="0.115" style="stop-color:#AFB0B1"/>
+			<stop  offset="0.2025" style="stop-color:#B1B3B4"/>
+			<stop  offset="0.4903" style="stop-color:#AEB0B1"/>
+			<stop  offset="0.6804" style="stop-color:#A5A6A7"/>
+			<stop  offset="0.8418" style="stop-color:#969898"/>
+			<stop  offset="0.987" style="stop-color:#848786"/>
+			<stop  offset="1" style="stop-color:#838584"/>
+		</linearGradient>
+		<path fill="url(#SVGID_4_)" d="M3.663,73.12c0.725-0.28,1.739-1.882,2.349-5.425l5.705-44.401c0.209-1.628,1.659-2.903,3.3-2.903
+			h60.849v1.5H15.017c-0.871,0-1.701,0.73-1.813,1.594l-5.71,44.433c-0.735,4.274-1.954,6.455-3.722,6.642L3.663,73.12z"/>
+	</g>
+	<path fill="none" stroke="#838584" stroke-width="1.5" stroke-miterlimit="10" d="M75.687,21.14v-5.114
+		c0-1.247-1.021-2.268-2.268-2.268h-42.67V7.821c0-1.657-1.344-3-3-3H3.75c-1.657,0-3,1.343-3,3v60c0,3.313,1.116,6,2.772,6"/>
+	<path fill="none" stroke="#838584" stroke-width="1.5" stroke-miterlimit="10" d="M75.819,21.14h10.332
+		c1.248,0,2.082,1.003,1.854,2.229l-7.842,42.223c-0.228,1.226-0.785,3.18-1.239,4.342c0,0-1.519,3.887-3.175,3.887H3.522"/>
+</g>
+<g id="XMLID_2_">
+	<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="35.6309" y1="62.228" x2="35.6309" y2="50.5562">
+		<stop  offset="0" style="stop-color:#85A53D"/>
+		<stop  offset="0.1032" style="stop-color:#8FB03D"/>
+		<stop  offset="0.2503" style="stop-color:#98BA3C"/>
+		<stop  offset="0.4552" style="stop-color:#9DC13B"/>
+		<stop  offset="1" style="stop-color:#9FC23B"/>
+	</linearGradient>
+	<path fill="url(#SVGID_5_)" stroke="#788A38" stroke-width="1.2678" stroke-miterlimit="10" d="M40.537,50.663l-4.773,2.913h-4.665
+		c-0.438,0-0.797,0.359-0.797,0.797v3.819c0,0.438,0.359,0.796,0.797,0.796h4.41l5.028,3.133c0.232,0.2,0.423,0.112,0.423-0.193
+		v-11.07C40.96,50.55,40.77,50.463,40.537,50.663z"/>
+	<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="52.8154" y1="34.9531" x2="52.8154" y2="46.6948">
+		<stop  offset="0" style="stop-color:#98DAF1"/>
+		<stop  offset="0.1935" style="stop-color:#92D4EC"/>
+		<stop  offset="0.4607" style="stop-color:#80C9E2"/>
+		<stop  offset="0.7694" style="stop-color:#62B9D2"/>
+		<stop  offset="1" style="stop-color:#42ACC6"/>
+	</linearGradient>
+	
+		<polygon fill="url(#SVGID_6_)" stroke="#1C8DC0" stroke-width="1.2678" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
+		57.814,40.824 47.817,34.953 47.817,46.695 	"/>
+	<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="52.0361" y1="49.1548" x2="52.0361" y2="62.2188">
+		<stop  offset="0" style="stop-color:#F9DB47"/>
+		<stop  offset="0.1048" style="stop-color:#F7CA43"/>
+		<stop  offset="0.2764" style="stop-color:#F4B13D"/>
+		<stop  offset="0.4512" style="stop-color:#F29E39"/>
+		<stop  offset="0.6283" style="stop-color:#F19136"/>
+		<stop  offset="0.8093" style="stop-color:#F08934"/>
+		<stop  offset="1" style="stop-color:#F08734"/>
+	</linearGradient>
+	
+		<polygon fill="url(#SVGID_7_)" stroke="#CD5728" stroke-width="1.2678" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
+		52.035,49.155 54.158,53.456 58.904,54.145 55.47,57.492 56.28,62.218 52.035,59.988 47.791,62.218 48.602,57.492 45.167,54.145 
+		49.913,53.456 	"/>
+	<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="36.1279" y1="35.4639" x2="36.1279" y2="47.4238">
+		<stop  offset="0" style="stop-color:#F9DB47"/>
+		<stop  offset="0.1863" style="stop-color:#F8D344"/>
+		<stop  offset="0.6991" style="stop-color:#F7C03E"/>
+		<stop  offset="1" style="stop-color:#F6B93C"/>
+	</linearGradient>
+	
+		<polygon fill="url(#SVGID_8_)" stroke="#A36C33" stroke-width="1.2678" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
+		42.316,38.029 42.316,47.424 29.94,47.424 29.94,35.464 35.4,35.464 36.614,38.055 	"/>
+</g>
+<g id="XMLID_1_">
+	<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="61.0449" y1="0.75" x2="61.0449" y2="49.9298">
+		<stop  offset="0" style="stop-color:#F6B93C"/>
+		<stop  offset="0.0341" style="stop-color:#F6B53A"/>
+		<stop  offset="0.2023" style="stop-color:#F3A633"/>
+		<stop  offset="0.393" style="stop-color:#F29C2E"/>
+		<stop  offset="0.6231" style="stop-color:#F1962B"/>
+		<stop  offset="1" style="stop-color:#F0942A"/>
+	</linearGradient>
+	<path fill="url(#SVGID_9_)" d="M69.712,26.083V0.75H52.378v25.333h-8.349l14.984,22.932c0.908,1.188,3.064,1.25,4.062,0
+		l14.985-22.932H69.712z"/>
+	<g>
+		<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="61.0449" y1="0.75" x2="61.0449" y2="49.9296">
+			<stop  offset="0" style="stop-color:#F9DB47"/>
+			<stop  offset="0.0261" style="stop-color:#F8D244"/>
+			<stop  offset="0.083" style="stop-color:#F6C33E"/>
+			<stop  offset="0.1499" style="stop-color:#F5B63A"/>
+			<stop  offset="0.2322" style="stop-color:#F3AE37"/>
+			<stop  offset="0.3465" style="stop-color:#F3A936"/>
+			<stop  offset="0.6503" style="stop-color:#F3A735"/>
+			<stop  offset="1" style="stop-color:#F0942A"/>
+		</linearGradient>
+		<path fill="url(#SVGID_10_)" d="M61.041,49.929c-0.832,0-1.59-0.342-2.027-0.914L45.039,27.63c-0.2-0.307-0.217-0.7-0.041-1.023
+			c0.174-0.323,0.512-0.524,0.879-0.524h6.501V1.75c0-0.552,0.448-1,1-1h15.334c0.552,0,1,0.448,1,1v24.333h6.501
+			c0.367,0,0.704,0.201,0.879,0.524c0.175,0.323,0.158,0.716-0.043,1.023L63.075,49.016c-0.02,0.03-0.041,0.06-0.063,0.087
+			C62.594,49.613,61.838,49.929,61.041,49.929z M60.647,47.856c0.022,0,0.171,0.073,0.394,0.073l0,0c0.2,0,0.355-0.06,0.42-0.099
+			l12.903-19.748h-4.652c-1.103,0-2-0.897-2-2V2.75H54.378v23.333c0,1.103-0.897,2-2,2h-4.653l12.921,19.778
+			C60.644,47.858,60.645,47.856,60.647,47.856z"/>
+	</g>
+	<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
+		M69.712,26.083V0.75H52.378v25.333h-8.349l14.984,22.932c0.908,1.188,3.064,1.25,4.062,0l14.985-22.932H69.712z"/>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/trapFlashPalette/linkToBoard.svg b/Sankore-3.1/resources/images/trapFlashPalette/linkToBoard.svg
new file mode 100644
index 0000000..23e9442
--- /dev/null
+++ b/Sankore-3.1/resources/images/trapFlashPalette/linkToBoard.svg
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="96px" height="96px" viewBox="-7.218 -11.262 96 96" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<g>
+		<path fill="#FFFFFF" d="M81.87,58.514c0,2.75-2.25,5-5,5H5.75c-2.75,0-5-2.25-5-5V5.75c0-2.75,2.25-5,5-5h71.12c2.75,0,5,2.25,5,5
+			V58.514z"/>
+		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="41.3105" y1="3.8882" x2="41.3105" y2="60.3764">
+			<stop  offset="0" style="stop-color:#F0F1F2"/>
+			<stop  offset="1" style="stop-color:#FAFDFD"/>
+		</linearGradient>
+		<path fill="url(#SVGID_1_)" d="M79.031,55.876c0,2.475-2.093,4.5-4.65,4.5H8.239c-2.558,0-4.65-2.025-4.65-4.5V8.388
+			c0-2.475,2.092-4.5,4.65-4.5h66.142c2.558,0,4.65,2.025,4.65,4.5V55.876z"/>
+	</g>
+	<path fill="none" stroke="#A2A9AD" stroke-width="1.5" stroke-miterlimit="10" d="M81.87,58.514c0,2.75-2.25,5-5,5H5.75
+		c-2.75,0-5-2.25-5-5V5.75c0-2.75,2.25-5,5-5h71.12c2.75,0,5,2.25,5,5V58.514z"/>
+</g>
+<g id="XMLID_1_">
+	<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="23.2871" y1="42.9937" x2="15.3499" y2="70.2779">
+		<stop  offset="0" style="stop-color:#F6B93C"/>
+		<stop  offset="0.0341" style="stop-color:#F6B53A"/>
+		<stop  offset="0.2023" style="stop-color:#F3A633"/>
+		<stop  offset="0.393" style="stop-color:#F29C2E"/>
+		<stop  offset="0.6231" style="stop-color:#F1962B"/>
+		<stop  offset="1" style="stop-color:#F0942A"/>
+	</linearGradient>
+	<path fill="url(#SVGID_2_)" d="M25.27,53.328l8.522,8.555V36.997L9.024,37.022l7.428,7.456
+		c-4.562,5.018-20.488,25.244,6.841,37.215C23.293,81.693,7.942,66.969,25.27,53.328z"/>
+	<g>
+		<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="25.1035" y1="42.8003" x2="-0.5385" y2="93.2574">
+			<stop  offset="0" style="stop-color:#F9DB47"/>
+			<stop  offset="0.0261" style="stop-color:#F8D244"/>
+			<stop  offset="0.083" style="stop-color:#F6C33E"/>
+			<stop  offset="0.1499" style="stop-color:#F5B63A"/>
+			<stop  offset="0.2322" style="stop-color:#F3AE37"/>
+			<stop  offset="0.3465" style="stop-color:#F3A936"/>
+			<stop  offset="0.6503" style="stop-color:#F3A735"/>
+			<stop  offset="1" style="stop-color:#F0942A"/>
+		</linearGradient>
+		<path fill="url(#SVGID_3_)" d="M23.885,82.616l-3.636-2.05c-6.476-3.653-11.159-9.02-12.222-14.005
+			c-1.997-9.371,5.227-18.565,8.425-22.083l-7.427-7.456l24.767-0.025v24.885l-8.522-8.554c-5.218,4.107-7.987,8.725-8.231,13.722
+			c-0.24,4.913,3.354,10.315,4.535,12.092L23.885,82.616z M13.764,38.946l4.104,4.121c0.754,0.754,0.782,1.966,0.064,2.756
+			c-2.991,3.29-9.754,11.856-7.949,20.321c0.744,3.49,3.565,7.238,7.646,10.323c-1.384-2.638-2.755-6.122-2.59-9.516
+			c0.273-5.602,3.299-10.713,8.993-15.195c0.767-0.607,1.962-0.536,2.655,0.162l5.104,5.122V38.949L13.764,38.946z"/>
+	</g>
+	<path fill="#7B5020" d="M25.599,69.64"/>
+	<g>
+		<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M24.493,53.958
+			c0.251-0.211,0.51-0.421,0.776-0.631l0.706,0.708"/>
+		
+			<line fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="2.0151,4.0302" x1="28.82" y1="56.891" x2="31.664" y2="59.746"/>
+		<polyline fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" points="
+			33.087,61.174 33.792,61.882 33.792,60.882 		"/>
+		
+			<line fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="2.0805,4.161" x1="33.792" y1="56.721" x2="33.792" y2="40.078"/>
+		<polyline fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" points="
+			33.792,37.997 33.792,36.997 32.792,36.998 		"/>
+		
+			<line fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="2.0698,4.1396" x1="28.652" y1="37.001" x2="12.094" y2="37.02"/>
+		<polyline fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" points="
+			10.024,37.021 9.024,37.022 9.73,37.731 		"/>
+		
+			<line fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.7047,3.4095" x1="12.137" y1="40.146" x2="14.543" y2="42.562"/>
+		<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M15.746,43.769
+			l0.706,0.709c-0.2,0.219-0.422,0.469-0.661,0.745"/>
+		
+			<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.9484,3.8969" d="
+			M13.38,48.279c-5.443,7.579-12.15,22.213,7.243,32.15"/>
+		<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M22.381,81.284
+			c0.298,0.137,0.603,0.274,0.912,0.409c0,0-0.265-0.253-0.684-0.724"/>
+		
+			<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.8156,3.6312" d="
+			M20.407,78.087c-3.192-4.87-6.734-13.974,2.724-22.919"/>
+	</g>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/trapFlashPalette/linkToLibrary.svg b/Sankore-3.1/resources/images/trapFlashPalette/linkToLibrary.svg
new file mode 100644
index 0000000..81e87ee
--- /dev/null
+++ b/Sankore-3.1/resources/images/trapFlashPalette/linkToLibrary.svg
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="96px" height="96px" viewBox="-1.492 -9.981 96 96" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g id="XMLID_2_">
+	<path fill="none" stroke="#010101" stroke-miterlimit="10" d="M6.313,63.903"/>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="43.7812" y1="69.7495" x2="43.7812" y2="0.7495">
+		<stop  offset="0" style="stop-color:#B7B6B7"/>
+		<stop  offset="1" style="stop-color:#D9D9DE"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M81.25,17.069v-5.114c0-1.247-1.021-2.268-2.268-2.268h-42.67V3.75c0-1.657-1.344-3-3-3H9.313
+		c-1.657,0-3,1.343-3,3v60c0,3.313,1.116,6,2.772,6c1.657,0,2.657-2.682,3.228-6l5.71-44.432c0.159-1.237,1.31-2.249,2.556-2.249
+		H81.25"/>
+	<path fill="none" stroke="#010101" stroke-miterlimit="10" d="M6.313,63.903"/>
+	<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="51.3447" y1="69.7837" x2="51.3447" y2="17.0342">
+		<stop  offset="0" style="stop-color:#ECECED"/>
+		<stop  offset="1" style="stop-color:#FFFFFF"/>
+	</linearGradient>
+	<path fill="url(#SVGID_2_)" d="M9.056,69.703c1.657,0.001,2.66-2.679,3.235-5.997l5.76-44.425c0.161-1.237,1.312-2.248,2.56-2.246
+		l71.136,0.08c1.246,0.001,2.079,1.006,1.851,2.232l-7.891,42.213c-0.229,1.226-0.789,3.18-1.244,4.341c0,0-1.522,3.886-3.18,3.884
+		l-71.45-0.08L9.056,69.703z"/>
+	<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="52.6768" y1="69.7495" x2="52.6768" y2="19.7071">
+		<stop  offset="0" style="stop-color:#C7C8CC"/>
+		<stop  offset="0.0179" style="stop-color:#C9CACE"/>
+		<stop  offset="0.1426" style="stop-color:#D5D5DA"/>
+		<stop  offset="0.2577" style="stop-color:#D9D9DE"/>
+		<stop  offset="1" style="stop-color:#E6E5E9"/>
+	</linearGradient>
+	<path fill="url(#SVGID_3_)" d="M11.747,69.75c1.605,0,2.574-2.547,3.126-5.699l5.531-42.207c0.153-1.175,1.268-2.136,2.476-2.136
+		h68.896c1.208,0,2.016,0.953,1.795,2.118l-7.596,40.108c-0.22,1.164-0.761,3.021-1.2,4.124c0,0-1.47,3.692-3.075,3.692H12.499
+		H11.747z"/>
+	<g>
+		<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="9.2261" y1="43.4028" x2="81.4293" y2="43.4028">
+			<stop  offset="0" style="stop-color:#838584"/>
+			<stop  offset="0.0097" style="stop-color:#898C8B"/>
+			<stop  offset="0.0381" style="stop-color:#9A9B9C"/>
+			<stop  offset="0.0717" style="stop-color:#A6A8A9"/>
+			<stop  offset="0.115" style="stop-color:#AFB0B1"/>
+			<stop  offset="0.2025" style="stop-color:#B1B3B4"/>
+			<stop  offset="0.4903" style="stop-color:#AEB0B1"/>
+			<stop  offset="0.6804" style="stop-color:#A5A6A7"/>
+			<stop  offset="0.8418" style="stop-color:#969898"/>
+			<stop  offset="0.987" style="stop-color:#848786"/>
+			<stop  offset="1" style="stop-color:#838584"/>
+		</linearGradient>
+		<path fill="url(#SVGID_4_)" d="M9.226,69.048c0.725-0.28,1.739-1.882,2.349-5.425l5.705-44.401c0.209-1.628,1.659-2.903,3.3-2.903
+			h60.85v1.5H20.58c-0.871,0-1.7,0.73-1.812,1.594l-5.71,44.433c-0.735,4.274-1.954,6.455-3.722,6.642L9.226,69.048z"/>
+	</g>
+	<path fill="none" stroke="#838584" stroke-width="1.5" stroke-miterlimit="10" d="M81.25,17.069v-5.114
+		c0-1.247-1.021-2.268-2.268-2.268h-42.67V3.75c0-1.657-1.344-3-3-3H9.313c-1.657,0-3,1.343-3,3v60c0,3.313,1.116,6,2.772,6"/>
+	<path fill="none" stroke="#838584" stroke-width="1.5" stroke-miterlimit="10" d="M81.383,17.069h10.332
+		c1.248,0,2.082,1.003,1.854,2.229l-7.842,42.223c-0.228,1.226-0.785,3.18-1.239,4.342c0,0-1.519,3.887-3.175,3.887H9.086"/>
+</g>
+<g id="XMLID_1_">
+	<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="44.1943" y1="57.1567" x2="44.1943" y2="45.4849">
+		<stop  offset="0" style="stop-color:#85A53D"/>
+		<stop  offset="0.1032" style="stop-color:#8FB03D"/>
+		<stop  offset="0.2503" style="stop-color:#98BA3C"/>
+		<stop  offset="0.4552" style="stop-color:#9DC13B"/>
+		<stop  offset="1" style="stop-color:#9FC23B"/>
+	</linearGradient>
+	<path fill="url(#SVGID_5_)" stroke="#788A38" stroke-width="1.2678" stroke-miterlimit="10" d="M49.101,45.591l-4.773,2.913h-4.665
+		c-0.438,0-0.797,0.359-0.797,0.797v3.819c0,0.438,0.359,0.796,0.797,0.796h4.41l5.028,3.133c0.232,0.2,0.423,0.112,0.423-0.193
+		v-11.07C49.523,45.479,49.333,45.392,49.101,45.591z"/>
+	<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="61.3789" y1="29.8818" x2="61.3789" y2="41.624">
+		<stop  offset="0" style="stop-color:#98DAF1"/>
+		<stop  offset="0.1935" style="stop-color:#92D4EC"/>
+		<stop  offset="0.4607" style="stop-color:#80C9E2"/>
+		<stop  offset="0.7694" style="stop-color:#62B9D2"/>
+		<stop  offset="1" style="stop-color:#42ACC6"/>
+	</linearGradient>
+	
+		<polygon fill="url(#SVGID_6_)" stroke="#1C8DC0" stroke-width="1.2678" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
+		66.378,35.752 56.381,29.882 56.381,41.624 	"/>
+	<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="60.5996" y1="44.0835" x2="60.5996" y2="57.147">
+		<stop  offset="0" style="stop-color:#F9DB47"/>
+		<stop  offset="0.1048" style="stop-color:#F7CA43"/>
+		<stop  offset="0.2764" style="stop-color:#F4B13D"/>
+		<stop  offset="0.4512" style="stop-color:#F29E39"/>
+		<stop  offset="0.6283" style="stop-color:#F19136"/>
+		<stop  offset="0.8093" style="stop-color:#F08934"/>
+		<stop  offset="1" style="stop-color:#F08734"/>
+	</linearGradient>
+	
+		<polygon fill="url(#SVGID_7_)" stroke="#CD5728" stroke-width="1.2678" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
+		60.599,44.083 62.722,48.384 67.468,49.074 64.033,52.42 64.844,57.147 60.599,54.917 56.354,57.147 57.165,52.42 53.73,49.074 
+		58.477,48.384 	"/>
+	<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="44.6914" y1="30.3926" x2="44.6914" y2="42.3525">
+		<stop  offset="0" style="stop-color:#F9DB47"/>
+		<stop  offset="0.1863" style="stop-color:#F8D344"/>
+		<stop  offset="0.6991" style="stop-color:#F7C03E"/>
+		<stop  offset="1" style="stop-color:#F6B93C"/>
+	</linearGradient>
+	
+		<polygon fill="url(#SVGID_8_)" stroke="#A36C33" stroke-width="1.2678" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
+		50.88,32.958 50.88,42.352 38.504,42.352 38.504,30.393 43.964,30.393 45.178,32.984 	"/>
+</g>
+<g>
+	<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="16.3496" y1="44.6929" x2="8.4124" y2="71.9771">
+		<stop  offset="0" style="stop-color:#F6B93C"/>
+		<stop  offset="0.0341" style="stop-color:#F6B53A"/>
+		<stop  offset="0.2023" style="stop-color:#F3A633"/>
+		<stop  offset="0.393" style="stop-color:#F29C2E"/>
+		<stop  offset="0.6231" style="stop-color:#F1962B"/>
+		<stop  offset="1" style="stop-color:#F0942A"/>
+	</linearGradient>
+	<path fill="url(#SVGID_9_)" d="M18.332,55.027l8.522,8.555V38.696L2.087,38.721l7.428,7.456
+		c-4.562,5.018-20.488,25.244,6.841,37.215C16.355,83.392,1.005,68.668,18.332,55.027z"/>
+	<g>
+		<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="18.166" y1="44.4995" x2="-7.476" y2="94.9566">
+			<stop  offset="0" style="stop-color:#F9DB47"/>
+			<stop  offset="0.0261" style="stop-color:#F8D244"/>
+			<stop  offset="0.083" style="stop-color:#F6C33E"/>
+			<stop  offset="0.1499" style="stop-color:#F5B63A"/>
+			<stop  offset="0.2322" style="stop-color:#F3AE37"/>
+			<stop  offset="0.3465" style="stop-color:#F3A936"/>
+			<stop  offset="0.6503" style="stop-color:#F3A735"/>
+			<stop  offset="1" style="stop-color:#F0942A"/>
+		</linearGradient>
+		<path fill="url(#SVGID_10_)" d="M16.947,84.315l-3.636-2.05C6.836,78.612,2.152,73.246,1.09,68.26
+			c-1.997-9.371,5.227-18.565,8.425-22.083l-7.427-7.456l24.767-0.025v24.885l-8.522-8.554c-5.218,4.107-7.987,8.725-8.231,13.722
+			c-0.24,4.913,3.354,10.315,4.535,12.092L16.947,84.315z M6.826,40.645l4.104,4.121c0.754,0.754,0.782,1.966,0.064,2.756
+			c-2.991,3.29-9.754,11.856-7.949,20.321c0.744,3.49,3.565,7.238,7.646,10.323c-1.384-2.638-2.755-6.122-2.59-9.516
+			c0.273-5.602,3.299-10.713,8.993-15.195c0.767-0.607,1.962-0.536,2.655,0.162l5.104,5.122V40.648L6.826,40.645z"/>
+	</g>
+	<path fill="#7B5020" d="M18.661,71.339"/>
+	<g>
+		<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M17.556,55.658
+			c0.251-0.211,0.51-0.421,0.776-0.631l0.705,0.708"/>
+		
+			<line fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="2.0151,4.0302" x1="21.883" y1="58.59" x2="24.727" y2="61.445"/>
+		<polyline fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" points="
+			26.149,62.874 26.854,63.582 26.854,62.582 		"/>
+		
+			<line fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="2.0805,4.161" x1="26.854" y1="58.42" x2="26.854" y2="41.777"/>
+		<polyline fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" points="
+			26.854,39.696 26.854,38.696 25.854,38.697 		"/>
+		
+			<line fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="2.0698,4.1396" x1="21.715" y1="38.701" x2="5.157" y2="38.719"/>
+		<polyline fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" points="3.087,38.72 
+			2.087,38.721 2.792,39.43 		"/>
+		
+			<line fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.7047,3.4095" x1="5.199" y1="41.845" x2="7.605" y2="44.261"/>
+		<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M8.809,45.468
+			l0.706,0.709c-0.2,0.219-0.422,0.469-0.661,0.745"/>
+		
+			<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.9484,3.8969" d="
+			M6.443,49.978C1,57.557-5.707,72.191,13.686,82.128"/>
+		<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M15.443,82.983
+			c0.298,0.137,0.603,0.274,0.912,0.409c0,0-0.265-0.253-0.684-0.724"/>
+		
+			<path fill="none" stroke="#7B5020" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.8156,3.6312" d="
+			M13.47,79.787c-3.192-4.87-6.735-13.974,2.723-22.919"/>
+	</g>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/trapFlashPalette/trappedFlashIcon.svg b/Sankore-3.1/resources/images/trapFlashPalette/trappedFlashIcon.svg
new file mode 100644
index 0000000..47c3682
--- /dev/null
+++ b/Sankore-3.1/resources/images/trapFlashPalette/trappedFlashIcon.svg
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="96px" height="96px" viewBox="-4.421 -6.49 96 96" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<path fill="#FFFFFF" d="M72.67,25.439c0.164-0.836,0.255-1.698,0.255-2.582c0-7.365-5.971-13.335-13.336-13.335
+		c-3.489,0-6.655,1.352-9.032,3.545C47.807,5.87,40.856,0.75,32.693,0.75c-10.568,0-19.137,8.568-19.137,19.137
+		c0,1.841,0.274,3.615,0.759,5.299C6.574,26.699,0.75,33.223,0.75,41.042c0,8.94,7.611,16.186,17,16.186h50.457
+		c9.389,0,16.999-7.246,16.999-16.186C85.205,33.576,79.889,27.308,72.67,25.439z"/>
+	<path fill="#FFFFFF" d="M72.67,25.439c0.164-0.836,0.255-1.698,0.255-2.582c0-7.365-5.971-13.335-13.336-13.335
+		c-3.489,0-6.655,1.352-9.032,3.545C47.807,5.87,40.856,0.75,32.693,0.75c-10.568,0-19.137,8.568-19.137,19.137
+		c0,1.841,0.274,3.615,0.759,5.299C6.574,26.699,0.75,33.223,0.75,41.042c0,8.94,7.611,16.186,17,16.186h50.457
+		c9.389,0,16.999-7.246,16.999-16.186C85.205,33.576,79.889,27.308,72.67,25.439z"/>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="42.9775" y1="54.2275" x2="42.9775" y2="3.7499">
+		<stop  offset="0" style="stop-color:#F0F1F2"/>
+		<stop  offset="1" style="stop-color:#FAFDFD"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M17.75,54.228c-7.719,0-14-5.915-14-13.186c0-6.22,4.686-11.649,11.141-12.911
+		c0.823-0.161,1.546-0.664,1.984-1.379c0.438-0.715,0.556-1.588,0.324-2.395c-0.426-1.479-0.642-2.983-0.642-4.469
+		c0-8.898,7.239-16.137,16.137-16.137c6.635,0,12.687,4.174,15.062,10.388c0.354,0.931,1.147,1.623,2.118,1.85
+		c0.222,0.052,0.452,0.079,0.684,0.079c0.757,0,1.479-0.283,2.034-0.795c1.922-1.773,4.407-2.75,6.998-2.75
+		c5.699,0,10.336,4.636,10.336,10.335c0,0.661-0.066,1.335-0.199,2.004c-0.305,1.556,0.658,3.085,2.192,3.482
+		c6.058,1.568,10.287,6.79,10.287,12.698c0,7.271-6.279,13.186-13.999,13.186H17.75z"/>
+	<path fill="none" stroke="#A2A9AD" stroke-width="1.5" stroke-miterlimit="10" d="M72.67,25.439
+		c0.164-0.836,0.255-1.698,0.255-2.582c0-7.365-5.971-13.335-13.336-13.335c-3.489,0-6.655,1.352-9.032,3.545
+		C47.807,5.87,40.856,0.75,32.693,0.75c-10.568,0-19.137,8.568-19.137,19.137c0,1.841,0.274,3.615,0.759,5.299
+		C6.574,26.699,0.75,33.223,0.75,41.042c0,8.94,7.611,16.186,17,16.186h50.457c9.389,0,16.999-7.246,16.999-16.186
+		C85.205,33.576,79.889,27.308,72.67,25.439z"/>
+</g>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="42.4053" y1="80.4297" x2="42.4053" y2="34.0259">
+	<stop  offset="0" style="stop-color:#D35F5F"/>
+	<stop  offset="1" style="stop-color:#F26C6C"/>
+</linearGradient>
+<path fill="url(#SVGID_2_)" d="M47.944,38.504c-5.871,4.961-8.402,13.21-10.088,17.365c-2.314,5.706-3.652,8.683-6.531,12.155
+	c-2.758,3.326-8.27,3.143-8.27,3.143v9.249c0,0,7.938,0.497,13.809-4.465c4.607-3.893,7.154-9.802,8.854-14.178h11.104v-9.177
+	h-7.277c1.123-2.306,2.273-4.154,3.941-6.166c2.758-3.326,8.27-3.142,8.27-3.142v-9.25C61.755,34.039,53.815,33.542,47.944,38.504z"
+	/>
+<path fill="#C22026" d="M47.944,41.504c-4.393,4.975-7.402,13.21-9.088,17.365c-2.314,5.706-3.969,9.389-7.531,12.155
+	c-2.934,2.277-8.27,2.143-8.27,2.143v7.249c0,0,7.938,0.497,13.809-4.465c4.607-3.893,7.154-9.802,8.854-14.178h11.104v-9.177
+	h-7.277c1.123-2.306,2.273-4.154,3.941-6.166c2.758-3.326,8.27-3.142,8.27-3.142v-7.25C61.755,36.039,53.188,35.565,47.944,41.504z"
+	/>
+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="22.6064" y1="57.2451" x2="61.3057" y2="57.2451">
+	<stop  offset="0" style="stop-color:#D71F26"/>
+	<stop  offset="1" style="stop-color:#EE2A27"/>
+</linearGradient>
+<path fill="url(#SVGID_3_)" d="M47.497,41.504c-4.393,4.975-7.402,13.21-9.088,17.365c-2.316,5.706-3.969,9.389-7.533,12.155
+	c-2.934,2.277-8.27,2.143-8.27,2.143v5.249c0,0,8.219,0.811,13.811-4.465c4.201-3.964,6.152-9.802,7.852-14.178h12.105v-7.177
+	l-9.279,1.593c0.68-2.641,2.627-6.734,4.381-8.674c4.096-4.533,9.83-4.227,9.83-4.227v-5.25
+	C61.306,36.039,52.741,35.565,47.497,41.504z"/>
+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="44.0947" y1="53.3936" x2="53.8213" y2="53.3936">
+	<stop  offset="0" style="stop-color:#D35F5F"/>
+	<stop  offset="1" style="stop-color:#F26C6C"/>
+</linearGradient>
+<polygon fill="url(#SVGID_4_)" points="53.821,54.189 44.095,54.189 46.544,52.597 53.821,52.597 "/>
+<path fill="none" stroke="#7E1416" stroke-linejoin="round" stroke-miterlimit="10" d="M47.944,38.504
+	c-5.871,4.961-8.402,13.21-10.088,17.365c-2.314,5.706-3.652,8.683-6.531,12.155c-2.758,3.326-8.27,3.143-8.27,3.143v9.249
+	c0,0,7.938,0.497,13.809-4.465c4.607-3.893,7.154-9.802,8.854-14.178h11.104v-9.177h-7.277c1.123-2.306,2.273-4.154,3.941-6.166
+	c2.758-3.326,8.27-3.142,8.27-3.142v-9.25C61.755,34.039,53.815,33.542,47.944,38.504z"/>
+</svg>
diff --git a/Sankore-3.1/resources/images/trapFlashPalette/trappedIcon.svg b/Sankore-3.1/resources/images/trapFlashPalette/trappedIcon.svg
new file mode 100644
index 0000000..bc76ebe
--- /dev/null
+++ b/Sankore-3.1/resources/images/trapFlashPalette/trappedIcon.svg
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+
+<svg
+   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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.2"
+   x="0px"
+   y="0px"
+   width="96px"
+   height="96px"
+   viewBox="-4.421 -6.49 96 96"
+   overflow="visible"
+   xml:space="preserve"
+   id="svg2"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="trappedIcon.svg"><metadata
+   id="metadata48"><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 /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="640"
+   inkscape:window-height="480"
+   id="namedview46"
+   showgrid="false"
+   inkscape:zoom="2.4583333"
+   inkscape:cx="47.999999"
+   inkscape:cy="47.999999"
+   inkscape:window-x="0"
+   inkscape:window-y="27"
+   inkscape:window-maximized="0"
+   inkscape:current-layer="svg2" />
+<defs
+   id="defs4">
+<linearGradient
+   id="SVGID_2_-6"
+   gradientUnits="userSpaceOnUse"
+   x1="23.2871"
+   y1="42.993698"
+   x2="15.3499"
+   y2="70.277901"><stop
+     offset="0"
+     style="stop-color:#F6B93C"
+     id="stop23" /><stop
+     offset="0.0341"
+     style="stop-color:#F6B53A"
+     id="stop25" /><stop
+     offset="0.2023"
+     style="stop-color:#F3A633"
+     id="stop27" /><stop
+     offset="0.393"
+     style="stop-color:#F29C2E"
+     id="stop29" /><stop
+     offset="0.6231"
+     style="stop-color:#F1962B"
+     id="stop31-5" /><stop
+     offset="1"
+     style="stop-color:#F0942A"
+     id="stop33-2" /></linearGradient><linearGradient
+   id="SVGID_3_-2"
+   gradientUnits="userSpaceOnUse"
+   x1="25.1035"
+   y1="42.800301"
+   x2="-0.53850001"
+   y2="93.257401"><stop
+     offset="0"
+     style="stop-color:#F9DB47"
+     id="stop40-9" /><stop
+     offset="0.0261"
+     style="stop-color:#F8D244"
+     id="stop42" /><stop
+     offset="0.083"
+     style="stop-color:#F6C33E"
+     id="stop44" /><stop
+     offset="0.1499"
+     style="stop-color:#F5B63A"
+     id="stop46" /><stop
+     offset="0.2322"
+     style="stop-color:#F3AE37"
+     id="stop48" /><stop
+     offset="0.3465"
+     style="stop-color:#F3A936"
+     id="stop50" /><stop
+     offset="0.6503"
+     style="stop-color:#F3A735"
+     id="stop52" /><stop
+     offset="1"
+     style="stop-color:#F0942A"
+     id="stop54" /></linearGradient></defs>
+<g
+   id="g6">
+	<path
+   fill="#FFFFFF"
+   d="M72.67,25.439c0.164-0.836,0.255-1.698,0.255-2.582c0-7.365-5.971-13.335-13.336-13.335   c-3.489,0-6.655,1.352-9.032,3.545C47.807,5.87,40.856,0.75,32.693,0.75c-10.568,0-19.137,8.568-19.137,19.137   c0,1.841,0.274,3.615,0.759,5.299C6.574,26.699,0.75,33.223,0.75,41.042c0,8.94,7.611,16.186,17,16.186h50.457   c9.389,0,16.999-7.246,16.999-16.186C85.205,33.576,79.889,27.308,72.67,25.439z"
+   id="path8" />
+	<path
+   fill="#FFFFFF"
+   d="M72.67,25.439c0.164-0.836,0.255-1.698,0.255-2.582c0-7.365-5.971-13.335-13.336-13.335   c-3.489,0-6.655,1.352-9.032,3.545C47.807,5.87,40.856,0.75,32.693,0.75c-10.568,0-19.137,8.568-19.137,19.137   c0,1.841,0.274,3.615,0.759,5.299C6.574,26.699,0.75,33.223,0.75,41.042c0,8.94,7.611,16.186,17,16.186h50.457   c9.389,0,16.999-7.246,16.999-16.186C85.205,33.576,79.889,27.308,72.67,25.439z"
+   id="path10" />
+	<linearGradient
+   id="SVGID_1_"
+   gradientUnits="userSpaceOnUse"
+   x1="42.9775"
+   y1="54.2275"
+   x2="42.9775"
+   y2="3.7499">
+		<stop
+   offset="0"
+   style="stop-color:#F0F1F2"
+   id="stop13" />
+		<stop
+   offset="1"
+   style="stop-color:#FAFDFD"
+   id="stop15" />
+	</linearGradient>
+	<path
+   fill="url(#SVGID_1_)"
+   d="M17.75,54.228c-7.719,0-14-5.915-14-13.186c0-6.22,4.686-11.649,11.141-12.911   c0.823-0.161,1.546-0.664,1.984-1.379c0.438-0.715,0.556-1.588,0.324-2.395c-0.426-1.479-0.642-2.983-0.642-4.469   c0-8.898,7.239-16.137,16.137-16.137c6.635,0,12.687,4.174,15.062,10.388c0.354,0.931,1.147,1.623,2.118,1.85   c0.222,0.052,0.452,0.079,0.684,0.079c0.757,0,1.479-0.283,2.034-0.795c1.922-1.773,4.407-2.75,6.998-2.75   c5.699,0,10.336,4.636,10.336,10.335c0,0.661-0.066,1.335-0.199,2.004c-0.305,1.556,0.658,3.085,2.192,3.482   c6.058,1.568,10.287,6.79,10.287,12.698c0,7.271-6.279,13.186-13.999,13.186H17.75z"
+   id="path17" />
+	<path
+   fill="none"
+   stroke="#A2A9AD"
+   stroke-width="1.5"
+   stroke-miterlimit="10"
+   d="M72.67,25.439   c0.164-0.836,0.255-1.698,0.255-2.582c0-7.365-5.971-13.335-13.336-13.335c-3.489,0-6.655,1.352-9.032,3.545   C47.807,5.87,40.856,0.75,32.693,0.75c-10.568,0-19.137,8.568-19.137,19.137c0,1.841,0.274,3.615,0.759,5.299   C6.574,26.699,0.75,33.223,0.75,41.042c0,8.94,7.611,16.186,17,16.186h50.457c9.389,0,16.999-7.246,16.999-16.186   C85.205,33.576,79.889,27.308,72.67,25.439z"
+   id="path19" />
+</g>
+<linearGradient
+   id="SVGID_2_"
+   gradientUnits="userSpaceOnUse"
+   x1="42.4053"
+   y1="80.4297"
+   x2="42.4053"
+   y2="34.0259">
+	<stop
+   offset="0"
+   style="stop-color:#D35F5F"
+   id="stop22" />
+	<stop
+   offset="1"
+   style="stop-color:#F26C6C"
+   id="stop24" />
+</linearGradient>
+
+
+<linearGradient
+   id="SVGID_3_"
+   gradientUnits="userSpaceOnUse"
+   x1="22.6064"
+   y1="57.2451"
+   x2="61.3057"
+   y2="57.2451">
+	<stop
+   offset="0"
+   style="stop-color:#D71F26"
+   id="stop31" />
+	<stop
+   offset="1"
+   style="stop-color:#EE2A27"
+   id="stop33" />
+</linearGradient>
+
+<linearGradient
+   id="SVGID_4_"
+   gradientUnits="userSpaceOnUse"
+   x1="44.0947"
+   y1="53.3936"
+   x2="53.8213"
+   y2="53.3936">
+	<stop
+   offset="0"
+   style="stop-color:#D35F5F"
+   id="stop38" />
+	<stop
+   offset="1"
+   style="stop-color:#F26C6C"
+   id="stop40" />
+</linearGradient>
+
+
+<g
+   transform="translate(16.73785,-10.599466)"
+   id="XMLID_1_"><linearGradient
+     id="linearGradient3092"
+     gradientUnits="userSpaceOnUse"
+     x1="23.2871"
+     y1="42.993698"
+     x2="15.3499"
+     y2="70.277901"><stop
+       offset="0"
+       style="stop-color:#F6B93C"
+       id="stop3094" /><stop
+       offset="0.0341"
+       style="stop-color:#F6B53A"
+       id="stop3096" /><stop
+       offset="0.2023"
+       style="stop-color:#F3A633"
+       id="stop3098" /><stop
+       offset="0.393"
+       style="stop-color:#F29C2E"
+       id="stop3100" /><stop
+       offset="0.6231"
+       style="stop-color:#F1962B"
+       id="stop3102" /><stop
+       offset="1"
+       style="stop-color:#F0942A"
+       id="stop3104" /></linearGradient><path
+     style="fill:url(#SVGID_2_-6)"
+     inkscape:connector-curvature="0"
+     d="m 25.27,53.328 8.522,8.555 V 36.997 l -24.768,0.025 7.428,7.456 c -4.562,5.018 -20.488,25.244 6.841,37.215 0,0 -15.351,-14.724 1.977,-28.365 z"
+     id="path35" /><g
+     id="g37"><linearGradient
+       id="linearGradient3108"
+       gradientUnits="userSpaceOnUse"
+       x1="25.1035"
+       y1="42.800301"
+       x2="-0.53850001"
+       y2="93.257401"><stop
+         offset="0"
+         style="stop-color:#F9DB47"
+         id="stop3110" /><stop
+         offset="0.0261"
+         style="stop-color:#F8D244"
+         id="stop3112" /><stop
+         offset="0.083"
+         style="stop-color:#F6C33E"
+         id="stop3114" /><stop
+         offset="0.1499"
+         style="stop-color:#F5B63A"
+         id="stop3116" /><stop
+         offset="0.2322"
+         style="stop-color:#F3AE37"
+         id="stop3118" /><stop
+         offset="0.3465"
+         style="stop-color:#F3A936"
+         id="stop3120" /><stop
+         offset="0.6503"
+         style="stop-color:#F3A735"
+         id="stop3122" /><stop
+         offset="1"
+         style="stop-color:#F0942A"
+         id="stop3124" /></linearGradient><path
+       style="fill:url(#SVGID_3_-2)"
+       inkscape:connector-curvature="0"
+       d="m 23.885,82.616 -3.636,-2.05 C 13.773,76.913 9.09,71.546 8.027,66.561 6.03,57.19 13.254,47.996 16.452,44.478 L 9.025,37.022 33.792,36.997 V 61.882 L 25.27,53.328 c -5.218,4.107 -7.987,8.725 -8.231,13.722 -0.24,4.913 3.354,10.315 4.535,12.092 l 2.311,3.474 z m -10.121,-43.67 4.104,4.121 c 0.754,0.754 0.782,1.966 0.064,2.756 -2.991,3.29 -9.754,11.856 -7.949,20.321 0.744,3.49 3.565,7.238 7.646,10.323 -1.384,-2.638 -2.755,-6.122 -2.59,-9.516 0.273,-5.602 3.299,-10.713 8.993,-15.195 0.767,-0.607 1.962,-0.536 2.655,0.162 l 5.104,5.122 V 38.949 L 13.764,38.946 z"
+       id="path56" /></g><path
+     style="fill:#7b5020"
+     inkscape:connector-curvature="0"
+     d="M 25.599,69.64"
+     id="path58" /><g
+     id="g60"><path
+       style="fill:none;stroke:#7b5020;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round"
+       inkscape:connector-curvature="0"
+       d="m 24.493,53.958 c 0.251,-0.211 0.51,-0.421 0.776,-0.631 l 0.706,0.708"
+       id="path62" /><line
+       style="fill:none;stroke:#7b5020;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.0151, 4.0302"
+       x1="28.82"
+       y1="56.890999"
+       x2="31.664"
+       y2="59.745998"
+       id="line64" /><polyline
+       style="fill:none;stroke:#7b5020;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round"
+       points="    33.087,61.174 33.792,61.882 33.792,60.882   "
+       id="polyline66" /><line
+       style="fill:none;stroke:#7b5020;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.0805, 4.161"
+       x1="33.792"
+       y1="56.721001"
+       x2="33.792"
+       y2="40.077999"
+       id="line68" /><polyline
+       style="fill:none;stroke:#7b5020;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round"
+       points="    33.792,37.997 33.792,36.997 32.792,36.998   "
+       id="polyline70" /><line
+       style="fill:none;stroke:#7b5020;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.0698, 4.1396"
+       x1="28.652"
+       y1="37.000999"
+       x2="12.094"
+       y2="37.02"
+       id="line72" /><polyline
+       style="fill:none;stroke:#7b5020;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round"
+       points="    10.024,37.021 9.024,37.022 9.73,37.731   "
+       id="polyline74" /><line
+       style="fill:none;stroke:#7b5020;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1.7047, 3.4095"
+       x1="12.137"
+       y1="40.146"
+       x2="14.543"
+       y2="42.562"
+       id="line76" /><path
+       style="fill:none;stroke:#7b5020;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round"
+       inkscape:connector-curvature="0"
+       d="m 15.746,43.769 0.706,0.709 c -0.2,0.219 -0.422,0.469 -0.661,0.745"
+       id="path78" /><path
+       style="fill:none;stroke:#7b5020;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1.9484, 3.8969"
+       inkscape:connector-curvature="0"
+       d="M 13.38,48.279 C 7.937,55.858 1.23,70.492 20.623,80.429"
+       id="path80" /><path
+       style="fill:none;stroke:#7b5020;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round"
+       inkscape:connector-curvature="0"
+       d="m 22.381,81.284 c 0.298,0.137 0.603,0.274 0.912,0.409 0,0 -0.265,-0.253 -0.684,-0.724"
+       id="path82" /><path
+       style="fill:none;stroke:#7b5020;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1.8156, 3.6312"
+       inkscape:connector-curvature="0"
+       d="M 20.407,78.087 C 17.215,73.217 13.673,64.113 23.131,55.168"
+       id="path84" /></g></g></svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/images/trapFlashPalette/trappedSoundIcon.svg b/Sankore-3.1/resources/images/trapFlashPalette/trappedSoundIcon.svg
new file mode 100644
index 0000000..37279ee
--- /dev/null
+++ b/Sankore-3.1/resources/images/trapFlashPalette/trappedSoundIcon.svg
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="96px" height="96px" viewBox="-5.11 -6.49 96 96" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<path fill="#FFFFFF" d="M72.67,25.439c0.164-0.836,0.255-1.698,0.255-2.582c0-7.365-5.971-13.335-13.336-13.335
+		c-3.489,0-6.655,1.352-9.032,3.545C47.807,5.87,40.856,0.75,32.693,0.75c-10.568,0-19.137,8.568-19.137,19.137
+		c0,1.841,0.274,3.615,0.759,5.299C6.574,26.699,0.75,33.223,0.75,41.042c0,8.94,7.611,16.186,17,16.186h50.456
+		c9.389,0,16.999-7.246,16.999-16.186C85.205,33.576,79.889,27.308,72.67,25.439z"/>
+	<path fill="#FFFFFF" d="M72.67,25.439c0.164-0.836,0.255-1.698,0.255-2.582c0-7.365-5.971-13.335-13.336-13.335
+		c-3.489,0-6.655,1.352-9.032,3.545C47.807,5.87,40.856,0.75,32.693,0.75c-10.568,0-19.137,8.568-19.137,19.137
+		c0,1.841,0.274,3.615,0.759,5.299C6.574,26.699,0.75,33.223,0.75,41.042c0,8.94,7.611,16.186,17,16.186h50.456
+		c9.389,0,16.999-7.246,16.999-16.186C85.205,33.576,79.889,27.308,72.67,25.439z"/>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="42.9775" y1="54.2275" x2="42.9775" y2="3.7499">
+		<stop  offset="0" style="stop-color:#F0F1F2"/>
+		<stop  offset="1" style="stop-color:#FAFDFD"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M17.75,54.228c-7.72,0-14-5.915-14-13.186c0-6.22,4.686-11.649,11.141-12.911
+		c0.823-0.161,1.546-0.664,1.984-1.379c0.438-0.715,0.556-1.588,0.324-2.395c-0.426-1.479-0.642-2.983-0.642-4.469
+		c0-8.898,7.239-16.137,16.137-16.137c6.635,0,12.687,4.174,15.062,10.388c0.354,0.931,1.147,1.623,2.118,1.85
+		c0.222,0.052,0.452,0.079,0.684,0.079c0.757,0,1.479-0.283,2.034-0.795c1.922-1.773,4.407-2.75,6.998-2.75
+		c5.699,0,10.336,4.636,10.336,10.335c0,0.661-0.066,1.335-0.199,2.004c-0.305,1.556,0.658,3.085,2.192,3.482
+		c6.058,1.568,10.287,6.79,10.287,12.698c0,7.271-6.279,13.186-13.999,13.186H17.75z"/>
+	<path fill="none" stroke="#A2A9AD" stroke-width="1.5" stroke-miterlimit="10" d="M72.67,25.439
+		c0.164-0.836,0.255-1.698,0.255-2.582c0-7.365-5.971-13.335-13.336-13.335c-3.489,0-6.655,1.352-9.032,3.545
+		C47.807,5.87,40.856,0.75,32.693,0.75c-10.568,0-19.137,8.568-19.137,19.137c0,1.841,0.274,3.615,0.759,5.299
+		C6.574,26.699,0.75,33.223,0.75,41.042c0,8.94,7.611,16.186,17,16.186h50.456c9.389,0,16.999-7.246,16.999-16.186
+		C85.205,33.576,79.889,27.308,72.67,25.439z"/>
+</g>
+<path fill="#9FC23B" d="M38.995,39.879l-10.863,9.332h-7.948c-1.404,0-2.553,1.147-2.553,2.551v12.236
+	c0,1.403,1.148,2.551,2.553,2.551h7.13l11.682,10.034c0.744,0.641,1.354,0.36,1.354-0.622V40.501
+	C40.35,39.519,39.739,39.239,38.995,39.879z"/>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="28.9902" y1="76.9268" x2="28.9902" y2="39.5361">
+	<stop  offset="0" style="stop-color:#85A53D"/>
+	<stop  offset="0.1032" style="stop-color:#8FB03D"/>
+	<stop  offset="0.2503" style="stop-color:#98BA3C"/>
+	<stop  offset="0.4552" style="stop-color:#9DC13B"/>
+	<stop  offset="1" style="stop-color:#9FC23B"/>
+</linearGradient>
+<path fill="url(#SVGID_2_)" d="M38.995,39.879l-10.863,9.332h-7.948c-1.404,0-2.553,1.147-2.553,2.551v12.236
+	c0,1.403,1.148,2.551,2.553,2.551h7.13l11.682,10.034c0.744,0.641,1.354,0.36,1.354-0.622V40.501
+	C40.35,39.519,39.739,39.239,38.995,39.879z"/>
+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="56.1475" y1="57.8145" x2="71.4873" y2="57.8145">
+	<stop  offset="0" style="stop-color:#85A53D"/>
+	<stop  offset="0.1032" style="stop-color:#8FB03D"/>
+	<stop  offset="0.2503" style="stop-color:#98BA3C"/>
+	<stop  offset="0.4552" style="stop-color:#9DC13B"/>
+	<stop  offset="1" style="stop-color:#9FC23B"/>
+</linearGradient>
+<path fill="url(#SVGID_3_)" d="M61.233,32.554c-0.187-0.189-0.44-0.296-0.706-0.297c-0.312-0.015-0.521,0.102-0.709,0.289
+	l-2.846,2.811c-0.393,0.388-0.396,1.021-0.009,1.414c5.496,5.566,8.523,12.937,8.523,20.753c0,8.082-3.208,15.631-9.034,21.254
+	c-0.397,0.383-0.409,1.016-0.025,1.414l2.777,2.877c0.185,0.191,0.437,0.301,0.702,0.307c0.006,0,0.012,0,0.018,0
+	c0.259,0,0.508-0.102,0.694-0.281c7.009-6.764,10.868-15.844,10.868-25.57C71.487,48.117,67.846,39.249,61.233,32.554z"/>
+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="49.0898" y1="57.7285" x2="61.3213" y2="57.7285">
+	<stop  offset="0" style="stop-color:#85A53D"/>
+	<stop  offset="0.1032" style="stop-color:#8FB03D"/>
+	<stop  offset="0.2503" style="stop-color:#98BA3C"/>
+	<stop  offset="0.4552" style="stop-color:#9DC13B"/>
+	<stop  offset="1" style="stop-color:#9FC23B"/>
+</linearGradient>
+<path fill="url(#SVGID_4_)" d="M54.001,39.696c-0.187-0.189-0.44-0.296-0.706-0.297c-0.225-0.011-0.52,0.102-0.709,0.289
+	l-2.846,2.811c-0.393,0.388-0.396,1.021-0.009,1.414c3.604,3.651,5.59,8.485,5.59,13.611c0,5.302-2.104,10.252-5.926,13.939
+	c-0.19,0.184-0.301,0.437-0.306,0.702c-0.005,0.265,0.097,0.521,0.28,0.712l2.777,2.878c0.185,0.19,0.437,0.301,0.702,0.306
+	c0.006,0,0.012,0,0.018,0c0.259,0,0.508-0.101,0.694-0.28c5.004-4.829,7.76-11.312,7.76-18.257
+	C61.321,50.808,58.722,44.476,54.001,39.696z"/>
+<path fill="#ECF3D3" d="M20.086,66.11V53.874c0-1.403,1.191-2.551,2.647-2.551h7.35l10.354-8.56l0.146-1.567
+	c0-0.982,0.512-1.591-0.986-0.951l-11.271,9.332h-7.523c-1.457,0-2.647,1.148-2.647,2.551v12.236c0,1.208,0.886,2.223,2.06,2.482
+	C20.139,66.611,20.086,66.368,20.086,66.11z"/>
+<polygon fill="#ECF3D3" points="51.15,45.608 55.576,41.448 53.325,39.083 49.204,42.937 "/>
+<polygon fill="#ECF3D3" points="58.668,38.357 63.094,34.198 60.843,31.832 56.722,35.686 "/>
+<path fill="#819F3D" d="M39.195,73.69L27.514,63.656h-7.131c-0.102,0-0.198-0.019-0.297-0.03v2.913
+	c0.033,0.001,0.063,0.01,0.098,0.01h7.13l11.682,10.034c0.744,0.641,1.354,0.36,1.354-0.622v-2.145
+	C40.111,74.128,39.684,74.11,39.195,73.69z"/>
+<polyline fill="#819F3D" points="50.805,70.099 55.006,73.94 52.867,76.06 48.66,72.063 50.805,70.099 "/>
+<polyline fill="#819F3D" points="57.865,77.427 62.066,81.269 59.928,83.388 55.721,79.392 57.865,77.427 "/>
+<path fill="none" stroke="#788A38" stroke-width="1.5" stroke-miterlimit="10" d="M38.995,39.879l-10.863,9.332h-7.948
+	c-1.404,0-2.553,1.147-2.553,2.551v12.236c0,1.403,1.148,2.551,2.553,2.551h7.13l11.682,10.034c0.744,0.641,1.354,0.36,1.354-0.622
+	V40.501C40.35,39.519,39.739,39.239,38.995,39.879z"/>
+<path fill="none" stroke="#788A38" stroke-width="1.5" stroke-miterlimit="10" d="M61.233,32.554
+	c-0.187-0.189-0.44-0.296-0.706-0.297c-0.312-0.015-0.521,0.102-0.709,0.289l-2.846,2.811c-0.393,0.388-0.396,1.021-0.009,1.414
+	c5.496,5.566,8.523,12.937,8.523,20.753c0,8.082-3.208,15.631-9.034,21.254c-0.397,0.383-0.409,1.016-0.025,1.414l2.777,2.877
+	c0.185,0.191,0.437,0.301,0.702,0.307c0.006,0,0.012,0,0.018,0c0.259,0,0.508-0.102,0.694-0.281
+	c7.009-6.764,10.868-15.844,10.868-25.57C71.487,48.117,67.846,39.249,61.233,32.554z"/>
+<path fill="none" stroke="#788A38" stroke-width="1.5" stroke-miterlimit="10" d="M54.001,39.696
+	c-0.187-0.189-0.44-0.296-0.706-0.297c-0.225-0.011-0.52,0.102-0.709,0.289l-2.846,2.811c-0.393,0.388-0.396,1.021-0.009,1.414
+	c3.604,3.651,5.59,8.485,5.59,13.611c0,5.302-2.104,10.252-5.926,13.939c-0.19,0.184-0.301,0.437-0.306,0.702
+	c-0.005,0.265,0.097,0.521,0.28,0.712l2.777,2.878c0.185,0.19,0.437,0.301,0.702,0.306c0.006,0,0.012,0,0.018,0
+	c0.259,0,0.508-0.101,0.694-0.28c5.004-4.829,7.76-11.312,7.76-18.257C61.321,50.808,58.722,44.476,54.001,39.696z"/>
+</svg>
diff --git a/Sankore-3.1/resources/images/trapFlashPalette/trappedVideoIcon.svg b/Sankore-3.1/resources/images/trapFlashPalette/trappedVideoIcon.svg
new file mode 100644
index 0000000..c73bc40
--- /dev/null
+++ b/Sankore-3.1/resources/images/trapFlashPalette/trappedVideoIcon.svg
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="96px" height="96px" viewBox="-4.801 -6.49 96 96" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<path fill="#FFFFFF" d="M72.67,25.439c0.164-0.836,0.255-1.698,0.255-2.582c0-7.365-5.971-13.335-13.336-13.335
+		c-3.489,0-6.655,1.352-9.032,3.545C47.807,5.87,40.856,0.75,32.693,0.75c-10.568,0-19.137,8.568-19.137,19.137
+		c0,1.841,0.274,3.615,0.759,5.299C6.574,26.699,0.75,33.223,0.75,41.042c0,8.94,7.611,16.186,17,16.186h50.457
+		c9.388,0,16.999-7.246,16.999-16.186C85.205,33.576,79.889,27.308,72.67,25.439z"/>
+	<path fill="#FFFFFF" d="M72.67,25.439c0.164-0.836,0.255-1.698,0.255-2.582c0-7.365-5.971-13.335-13.336-13.335
+		c-3.489,0-6.655,1.352-9.032,3.545C47.807,5.87,40.856,0.75,32.693,0.75c-10.568,0-19.137,8.568-19.137,19.137
+		c0,1.841,0.274,3.615,0.759,5.299C6.574,26.699,0.75,33.223,0.75,41.042c0,8.94,7.611,16.186,17,16.186h50.457
+		c9.388,0,16.999-7.246,16.999-16.186C85.205,33.576,79.889,27.308,72.67,25.439z"/>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="42.9775" y1="54.2275" x2="42.9775" y2="3.7499">
+		<stop  offset="0" style="stop-color:#F0F1F2"/>
+		<stop  offset="1" style="stop-color:#FAFDFD"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M17.75,54.228c-7.719,0-14-5.915-14-13.186c0-6.22,4.686-11.649,11.141-12.911
+		c0.823-0.161,1.546-0.664,1.984-1.379c0.438-0.715,0.556-1.588,0.324-2.395c-0.426-1.479-0.642-2.983-0.642-4.469
+		c0-8.898,7.239-16.137,16.137-16.137c6.635,0,12.687,4.174,15.062,10.388c0.354,0.931,1.147,1.623,2.118,1.85
+		c0.222,0.052,0.452,0.079,0.684,0.079c0.757,0,1.479-0.283,2.035-0.795c1.921-1.773,4.406-2.75,6.997-2.75
+		c5.699,0,10.336,4.636,10.336,10.335c0,0.661-0.066,1.335-0.199,2.004c-0.305,1.556,0.658,3.085,2.192,3.482
+		c6.058,1.568,10.287,6.79,10.287,12.698c0,7.271-6.279,13.186-13.999,13.186H17.75z"/>
+	<path fill="none" stroke="#A2A9AD" stroke-width="1.5" stroke-miterlimit="10" d="M72.67,25.439
+		c0.164-0.836,0.255-1.698,0.255-2.582c0-7.365-5.971-13.335-13.336-13.335c-3.489,0-6.655,1.352-9.032,3.545
+		C47.807,5.87,40.856,0.75,32.693,0.75c-10.568,0-19.137,8.568-19.137,19.137c0,1.841,0.274,3.615,0.759,5.299
+		C6.574,26.699,0.75,33.223,0.75,41.042c0,8.94,7.611,16.186,17,16.186h50.457c9.388,0,16.999-7.246,16.999-16.186
+		C85.205,33.576,79.889,27.308,72.67,25.439z"/>
+</g>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="30.8945" y1="53.2178" x2="54.2754" y2="53.2178">
+	<stop  offset="0" style="stop-color:#238FCC"/>
+	<stop  offset="1" style="stop-color:#4BA2DA"/>
+</linearGradient>
+<rect x="30.895" y="31.934" fill="url(#SVGID_2_)" width="23.381" height="42.567"/>
+<path fill="#3A3B3B" d="M22.241,31.089v46.276h41.21V31.089H22.241z M29.457,74.386h-4.236v-4.236h4.236V74.386z M29.457,67.169
+	h-4.236v-4.235h4.236V67.169z M29.457,59.953h-4.236v-4.235h4.236V59.953z M29.457,52.737h-4.236v-4.236h4.236V52.737z
+	 M29.457,45.521h-4.236v-4.236h4.236V45.521z M29.457,38.305h-4.236v-4.236h4.236V38.305z M53.199,74.386H32.465V55.718h20.734
+	V74.386z M53.199,52.737H32.465V34.069h20.734V52.737z M60.443,74.386h-4.236v-4.236h4.236V74.386z M60.443,67.169h-4.236v-4.235
+	h4.236V67.169z M60.443,59.953h-4.236v-4.235h4.236V59.953z M60.443,52.737h-4.236v-4.236h4.236V52.737z M60.443,45.521h-4.236
+	v-4.236h4.236V45.521z M60.443,38.305h-4.236v-4.236h4.236V38.305z"/>
+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="42.832" y1="48.1772" x2="42.832" y2="34.0693">
+	<stop  offset="0" style="stop-color:#F5F5F5;stop-opacity:0.3"/>
+	<stop  offset="1" style="stop-color:#F5F5F5;stop-opacity:0.7"/>
+</linearGradient>
+<path fill="url(#SVGID_3_)" d="M52.027,37.272c0.393,0,0.784,0.01,1.172,0.03v-3.233H32.465v14.108
+	C36.52,41.633,43.764,37.272,52.027,37.272z"/>
+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="42.832" y1="70.2959" x2="42.832" y2="56.1875">
+	<stop  offset="0" style="stop-color:#F5F5F5;stop-opacity:0.3"/>
+	<stop  offset="1" style="stop-color:#F5F5F5;stop-opacity:0.7"/>
+</linearGradient>
+<path fill="url(#SVGID_4_)" d="M52.027,59.391c0.393,0,0.784,0.011,1.172,0.03v-3.233H32.465v14.108
+	C36.52,63.751,43.764,59.391,52.027,59.391z"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/applications/Wikipedia.wgt/config.xml b/Sankore-3.1/resources/library/applications/Wikipedia.wgt/config.xml
index d1d4102..7619211 100644
--- a/Sankore-3.1/resources/library/applications/Wikipedia.wgt/config.xml
+++ b/Sankore-3.1/resources/library/applications/Wikipedia.wgt/config.xml
@@ -1,16 +1,18 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        identifier="http://uniboard.mnemis.com/widgets/wikipedia" 
-        version="1.2"
-        width="370"
-        height="400"
-        ub:resizable = "true">
-       
-  		<name>Wikipedia</name>
-		<author href="http://www.getuniboard.com"
-	            email="info at mnemis.com">Mnemis SA</author>
-		<description>Wikipedia, the free encyclopedia</description>
-		
-        <content src="index.html"/>
-</widget>
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        identifier="http://uniboard.mnemis.com/widgets/wikipedia" 
+        version="1.2"
+		minimum_height="260"
+		minimum_width="360"
+        width="370"
+        height="400"
+        ub:resizable = "true">
+       
+  		<name>Wikipedia</name>
+		<author href="http://www.getuniboard.com"
+	            email="info at mnemis.com">Mnemis SA</author>
+		<description>Wikipedia, the free encyclopedia</description>
+		
+        <content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/applications/Wikipedia.wgt/index.html b/Sankore-3.1/resources/library/applications/Wikipedia.wgt/index.html
index 8199627..7235060 100644
--- a/Sankore-3.1/resources/library/applications/Wikipedia.wgt/index.html
+++ b/Sankore-3.1/resources/library/applications/Wikipedia.wgt/index.html
@@ -1,380 +1,373 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> 
-    <head> 
-        <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
-        <title>Wikipedia</title> 
-
-        <link rel="stylesheet" type="text/css" href="css/master.css"/> 
-        <link rel="stylesheet" type="text/css" href="css/superfish.css"/>         
-
-        <!-- jQuery --> 
-        <script type="text/javascript" src="script/jquery.min.js"></script> 
-        <script type="text/javascript" src="script/superfish.js"></script> 
-        <script type="text/javascript" src="script/languages.js"></script> 
-
-        <script type="text/javascript"> 
-            
-            var popupFlag = false
-            var browsing = false;
-            var lang = 'en';
-            var internalChange = false;
-            var syslang = "en";
-            
-            if(window.sankore){
-                try{
-                    syslang = sankore.locale().substr(0,2);
-                    sankoreLang[syslang].search;
-                } catch(e){
-                    syslang = "en";
-                }
-            } else 
-                syslang = "en";
-            
-            var toolbar = {
-                state:"begin",
-                loading:false
-            };
-            var appHistory = {
-                list:[],
-                back:function(){
-                    if(typeof(appHistory.list[appHistory.index-1]) !== "undefined"){
-                        appHistory.index--;
-                        wikiReq(appHistory.list[appHistory.index]);
-                    }
-                },
-                forward:function(){
-                    if(typeof(appHistory.list[appHistory.index+1]) !== "undefined"){
-                        appHistory.index++;
-                        wikiReq(appHistory.list[appHistory.index]);
-                    }
-                },
-                index:-1
-            }
-
-            $(document).ready(function() {
-
-                var ubHistoryList = "";
-                var ubHistoryIndex = "";
-                
-                $("#toolbar-down").html(sankoreLang[syslang].wikipedia);
-                
-                var popupText = $("<div id='popupWordInfo' class='popupWordInfo'></div>").appendTo("body");
-
-                lang = navigator.userAgent.split(";");
-
-                lang = (navigator.language || navigator.systemLanguage || 
-                    navigator.userLanguage || 'en').substr(0, 2).toLowerCase();
-                $("#current-language").text(lang.charAt(0).toUpperCase() + lang.substr(1));
-
-                if(window.sankore){
-                    toolbar.state = loadPref("historyState", "begin");
-                    ubHistoryList = loadPref("historyList", "");
-                    ubHistoryIndex = loadPref("historyIndex", "-1");
-                }
-
-                if(ubHistoryList !== "") {
-                    appHistory.list = ubHistoryList.split(",");
-                    appHistory.index = parseInt(ubHistoryIndex);
-                    wikiReq(appHistory.list[appHistory.index]);
-                } else {
-                    wikiReq("");
-                }
-
-                $(window).resize();
-
-                $("#languages-dropdown>li>ul>li").each(function(){
-                    $(this).click(function(){
-                        languagesHandler($(this).text());
-                        $("#current-language").text(lang.charAt(0).toUpperCase() + lang.substr(1));
-                    });
-                });
-
-                $("#languages-dropdown").superfish({ 
-                    dropShadows:false,
-                    speed:1,
-                    delay:100
-                });
-
-                $("#url")
-                .change(function(){
-                    if(!toolbar.loading){
-                        browsing = false;
-                        wikiReq($("#url").val());
-                    }
-                })
-                .keypress(function (e){
-                    if(e.which == 13){
-                        $("#url").change();
-                    };
-                });
-                
-                $("#toolbar-button-search").click(function(){
-                    $("#url").trigger("change");
-                });
-                
-                $("#toolbar-button-search").mouseover(function(evt){
-                    popupFlag = true;
-                    popupText.text(sankoreLang[syslang].search)
-                    .css("top", evt.pageY + 5)
-                    .css("left", evt.pageX + 13)
-                    .css({width:"100px"})
-                    .show("fast", function(){
-                        if(!popupFlag)
-                            popupText.hide();
-                    });
-                });
-                
-                $("#toolbar-button-search, #toolbar-button-back, #toolbar-button-forward").mousemove(function(evt){
-                    popupText.css("top", evt.pageY + 5)
-                    .css("left", evt.pageX + 13);
-                });
-                
-                $("#toolbar-button-search, #toolbar-button-back, #toolbar-button-forward").mouseout(function(evt){
-                    popupFlag = false;
-                    popupText.hide();
-                });
-
-                $("#url").val(appHistory.list[appHistory.index]);
-
-                if($("#url").val().length > 0)
-                    $("#url").change();
-
-                $("#toolbar-button-back").click(function(){
-                    browsing = true;
-                    appHistory.back();
-                });
-                
-                $("#toolbar-button-back").mouseover(function(evt){
-                    popupFlag = true;
-                    popupText.text(sankoreLang[syslang].prev_word)
-                    .css("top", evt.pageY + 5)
-                    .css("left", evt.pageX + 13)
-                    .css({width:"110px"})
-                    .show("fast", function(){
-                        if(!popupFlag)
-                            popupText.hide();
-                    });
-                });
-                
-                $("#toolbar-button-forward").click(function(){
-                    browsing = true;
-                    appHistory.forward();
-                });
-
-                $("#toolbar-button-forward").mouseover(function(evt){
-                    popupFlag = true;
-                    popupText.text(sankoreLang[syslang].next_word)
-                    .css("top", evt.pageY + 5)
-                    .css("left", evt.pageX + 13)
-                    .css({width:"100px"})
-                    .show("fast", function(){
-                        if(!popupFlag)
-                            popupText.hide();
-                    });
-                });
-                
-                $("#toolbar-button-home").click(function(){
-                });
-            });
-
-            $(window).resize(function(){
-                $("#web-browser").height($(window).height() - $("#toolbar").height() - 2);
-                $("#web-browser").width($(window).width() - 2);
-
-                if($(window).width() < 370)
-                    window.resizeTo(370, $(window).height());                
-                
-                if($(window).height() < 150)
-                    window.resizeTo($(window).width(), 150);
-
-            });
-
-            function wikiReq(kword){
-
-                var textBoxInput = "";
-
-                textBoxInput = remacc(kword.replace(/ /g,'+'));	
-
-                textBoxInput = textBoxInput.replace(textBoxInput.charAt(0),textBoxInput.charAt(0).toUpperCase());          
-                if(toolbar.state == "begin"){
-                    $('#web-browser').attr('src',"");
-                    toolbar.state = "started";
-                }
-                else
-                    $('#web-browser').attr('src',"http://" + lang + ".mobile.wikipedia.org/wiki/" + textBoxInput);
-                $('#url').val(kword);
-                $('#toolbar-button-search').css("background-image", "url(images/toolbarLoading.jpg)");
-                toolbar.loading = true;
-            }
-
-            function hideLoading(){
-                $('#toolbar-button-search').css("background-image", "url(images/toolbarButtonSearch.png)");
-                toolbar.loading = false;
-
-                // History
-                if(appHistory.list[appHistory.index] !== $("#url").val() && !browsing && $("#url").val().length > 0){
-                    appHistory.list = appHistory.list.slice(0, appHistory.index+1);
-                    appHistory.list[appHistory.index+1] = $("#url").val();
-                    appHistory.index = appHistory.list.length-1;
-                }
-
-                if(window.sankore && $("#web-browser").attr("src") !== ""){
-                    savePref("historyState", "started");
-                    savePref("historyList", appHistory.list.toString());
-                    savePref("historyIndex", appHistory.index)
-                }
-            }
-
-            String.prototype.accnt = function(){
-                var cnt = 0;
-                var acnt = this;
-                acnt = acnt.split('');
-                var sec = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
-                var rep = ['A','A','A','A','A','A','a','a','a','a','a','a','O','O','O','O','O','O','O','o','o','o','o','o','o','E','E','E','E','e','e','e','e','e','C','c','D','I','I','I','I','i','i','i','i','U','U','U','U','u','u','u','u','N','n','S','s','Y','y','y','Z','z'];
-                for (var y = 0; y < acnt.length; y++)
-                    if (sec.indexOf(acnt[y]) != -1)
-                        cnt++;
-                return cnt;
-            }
-
-            String.prototype.renlacc = function(){
-                var torem = this;
-                torem = torem.split('');
-                var toremout = new Array();
-                var sec = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
-                var rep = ['A','A','A','A','A','A','a','a','a','a','a','a','O','O','O','O','O','O','O','o','o','o','o','o','o','E','E','E','E','e','e','e','e','e','C','c','D','I','I','I','I','i','i','i','i','U','U','U','U','u','u','u','u','N','n','S','s','Y','y','y','Z','z'];
-                for (var y = 0; y < torem.length; y++){
-                    if (sec.indexOf(torem[y]) != -1)
-                        toremout[y] = rep[sec.indexOf(torem[y])];
-                    else 
-                        toremout[y] = torem[y];
-                }
-                var toascout = toremout.join('');
-                document.title = toascout;
-                return toascout;
-            }
-
-            function remacc(kword){
-
-                var countarr = new Array();
-                var c = '';
-                var text=kword;
-                var textout = new Array();
-                text = text.replace(/\r/g,'');
-                text = text.split('\n');
-                var linecnt = text.length;
-                for (var x = 0; x < linecnt; x++){
-                    countarr[x] = Math.abs(text[x].accnt());
-                    textout[x] = text[x].renlacc();
-                }
-                textout = textout.join('\n');
-                return textout;
-            }
-
-            function loadPref(name, defaultValue){
-                var pref = defaultValue;
-
-                if (sankore.preference(name) !== "") {
-                    pref = sankore.preference(name);
-                };
-
-                return pref;
-            };
-
-            function savePref(name, value){
-                sankore.setPreference(name, String(value));
-            };
-
-            function languagesHandler(language){
-                switch(language){
-                    case "Deutsch":
-                        lang = 'de'
-                        break;
-                    case "English":
-                        lang = 'en'
-                        break;
-                    case "Español":
-                        lang = 'es'
-                        break;
-                    case "Français":
-                        lang = 'fr'
-                        break;
-                    case "Italiano":
-                        lang = 'it'
-                        break;
-                    case "Nederlands":
-                        lang = 'nl'
-                        break;
-                    case "Polski":
-                        lang = 'pl'
-                        break;
-                    case "Português":
-                        lang = 'pt'
-                        break;
-                    case "Русский":
-                        lang = 'ru'
-                        break;
-                    case "日本語":
-                        lang = 'ja'
-                        break;
-                }
-            };
-
-        </script> 
-    </head> 
-    <body style="overflow:hidden; margin: 0px; width:100%; height:100%; position:absolute; background:#ffffff"> 
-
-        <div id="toolbar"> 
-
-            <div class="toolbar-body"> 
-
-                <div id="toolbar-down" class="toolbar"> 
-                    Wikipedia
-                </div> <!--toolbar-down--> 
-
-            </div> <!--toolbar-body--> 
-
-            <div class="toolbar-body"> 
-
-                <div id="toolbar-up" class="toolbar"> 
-                    <div id="left-field"> 
-                        <div id="toolbar-button-back" class="button" alt="back button"></div> 
-                        <div id="toolbar-button-forward" class="button" alt="forward button"></div> 
-                    </div> 
-                    <div id="center-field" class="full"> 
-                        <input type="text" id="url" alt="url"/> 
-                        <div class="on-the-right"> 
-                            <div id="toolbar-button-search"></div> 
-                        </div> 
-                    </div> <!--center-field--> 
-                    <div id="right-field"> 
-                        <div id="toolbar-button-languages" class="button" alt="languages button"> 
-                            <ul id='languages-dropdown' class='sf-menu'> 
-                                <li class='current'><a id='current-language' class='selected' href='#a'></a> 
-                                    <ul> 
-                                        <li><a class="sf-sl-first" href="#">Deutsch</a></li> 
-                                        <li><a href="#">English</a></li> 
-                                        <li><a href="#">Español</a></li> 
-                                        <li><a href="#">Français</a></li> 
-                                        <li><a href="#">Italiano</a></li> 
-                                        <li><a href="#">Nederlands</a></li> 
-                                        <li><a href="#">Polski</a></li> 
-                                        <li><a href="#">Português</a></li> 
-                                        <li><a href="#">Русский</a></li> 
-                                        <li><a class="sf-sl-last" href="#">日本語</a></li> 
-                                    </ul> 
-                                </li> 
-                            </ul> 
-                        </div> 
-                    </div> 
-                </div> <!--toolbar-up--> 
-
-            </div> <!--toolbar-body--> 
-
-        </div> <!--toolbar--> 
-        <div id="web-canevas"> 
-            <iframe id="web-browser" name="web-browser" src="" onload="hideLoading()"></iframe> 
-        </div>
-    </body> 
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> 
+    <head> 
+        <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
+        <title>Wikipedia</title> 
+
+        <link rel="stylesheet" type="text/css" href="css/master.css"/> 
+        <link rel="stylesheet" type="text/css" href="css/superfish.css"/>         
+
+        <!-- jQuery --> 
+        <script type="text/javascript" src="script/jquery.min.js"></script> 
+        <script type="text/javascript" src="script/superfish.js"></script> 
+        <script type="text/javascript" src="script/languages.js"></script> 
+
+        <script type="text/javascript"> 
+            
+            var popupFlag = false
+            var browsing = false;
+            var lang = 'en';
+            var internalChange = false;
+            var syslang = "en";
+            
+            if(window.sankore){
+                try{
+                    syslang = sankore.locale().substr(0,2);
+                    sankoreLang[syslang].search;
+                } catch(e){
+                    syslang = "en";
+                }
+            } else 
+                syslang = "en";
+            
+            var toolbar = {
+                state:"begin",
+                loading:false
+            };
+            var appHistory = {
+                list:[],
+                back:function(){
+                    if(typeof(appHistory.list[appHistory.index-1]) !== "undefined"){
+                        appHistory.index--;
+                        wikiReq(appHistory.list[appHistory.index]);
+                    }
+                },
+                forward:function(){
+                    if(typeof(appHistory.list[appHistory.index+1]) !== "undefined"){
+                        appHistory.index++;
+                        wikiReq(appHistory.list[appHistory.index]);
+                    }
+                },
+                index:-1
+            }
+
+            $(document).ready(function() {
+
+                var ubHistoryList = "";
+                var ubHistoryIndex = "";
+                
+                $("#toolbar-down").html(sankoreLang[syslang].wikipedia);
+                
+                var popupText = $("<div id='popupWordInfo' class='popupWordInfo'></div>").appendTo("body");
+
+                lang = navigator.userAgent.split(";");
+
+                lang = (navigator.language || navigator.systemLanguage || 
+                    navigator.userLanguage || 'en').substr(0, 2).toLowerCase();
+                $("#current-language").text(lang.charAt(0).toUpperCase() + lang.substr(1));
+
+                if(window.sankore){
+                    toolbar.state = loadPref("historyState", "begin");
+                    ubHistoryList = loadPref("historyList", "");
+                    ubHistoryIndex = loadPref("historyIndex", "-1");
+                }
+
+                if(ubHistoryList !== "") {
+                    appHistory.list = ubHistoryList.split(",");
+                    appHistory.index = parseInt(ubHistoryIndex);
+                    wikiReq(appHistory.list[appHistory.index]);
+                } else {
+                    wikiReq("");
+                }
+
+                $(window).resize();
+
+                $("#languages-dropdown>li>ul>li").each(function(){
+                    $(this).click(function(){
+                        languagesHandler($(this).text());
+                        $("#current-language").text(lang.charAt(0).toUpperCase() + lang.substr(1));
+                    });
+                });
+
+                $("#languages-dropdown").superfish({ 
+                    dropShadows:false,
+                    speed:1,
+                    delay:100
+                });
+
+                $("#url")
+                .change(function(){
+                    if(!toolbar.loading){
+                        browsing = false;
+                        wikiReq($("#url").val());
+                    }
+                })
+                .keypress(function (e){
+                    if(e.which == 13){
+                        $("#url").change();
+                    };
+                });
+                
+                $("#toolbar-button-search").click(function(){
+                    $("#url").trigger("change");
+                });
+                
+                $("#toolbar-button-search").mouseover(function(evt){
+                    popupFlag = true;
+                    popupText.text(sankoreLang[syslang].search)
+                    .css("top", evt.pageY + 5)
+                    .css("left", evt.pageX + 13)
+                    .css({width:"100px"})
+                    .show("fast", function(){
+                        if(!popupFlag)
+                            popupText.hide();
+                    });
+                });
+                
+                $("#toolbar-button-search, #toolbar-button-back, #toolbar-button-forward").mousemove(function(evt){
+                    popupText.css("top", evt.pageY + 5)
+                    .css("left", evt.pageX + 13);
+                });
+                
+                $("#toolbar-button-search, #toolbar-button-back, #toolbar-button-forward").mouseout(function(evt){
+                    popupFlag = false;
+                    popupText.hide();
+                });
+
+                $("#url").val(appHistory.list[appHistory.index]);
+
+                if($("#url").val().length > 0)
+                    $("#url").change();
+
+                $("#toolbar-button-back").click(function(){
+                    browsing = true;
+                    appHistory.back();
+                });
+                
+                $("#toolbar-button-back").mouseover(function(evt){
+                    popupFlag = true;
+                    popupText.text(sankoreLang[syslang].prev_word)
+                    .css("top", evt.pageY + 5)
+                    .css("left", evt.pageX + 13)
+                    .css({width:"110px"})
+                    .show("fast", function(){
+                        if(!popupFlag)
+                            popupText.hide();
+                    });
+                });
+                
+                $("#toolbar-button-forward").click(function(){
+                    browsing = true;
+                    appHistory.forward();
+                });
+
+                $("#toolbar-button-forward").mouseover(function(evt){
+                    popupFlag = true;
+                    popupText.text(sankoreLang[syslang].next_word)
+                    .css("top", evt.pageY + 5)
+                    .css("left", evt.pageX + 13)
+                    .css({width:"100px"})
+                    .show("fast", function(){
+                        if(!popupFlag)
+                            popupText.hide();
+                    });
+                });
+                
+                $("#toolbar-button-home").click(function(){
+                });
+            });
+
+            $(window).resize(function(){
+                $("#web-browser").height($(window).height() - $("#toolbar").height() - 2);
+                $("#web-browser").width($(window).width() - 2);
+            });
+
+            function wikiReq(kword){
+
+                var textBoxInput = "";
+
+                textBoxInput = remacc(kword.replace(/ /g,'+'));	
+
+                textBoxInput = textBoxInput.replace(textBoxInput.charAt(0),textBoxInput.charAt(0).toUpperCase());          
+                if(toolbar.state == "begin"){
+                    $('#web-browser').attr('src',"");
+                    toolbar.state = "started";
+                }
+                else
+                    $('#web-browser').attr('src',"http://" + lang + ".mobile.wikipedia.org/wiki/" + textBoxInput);
+                $('#url').val(kword);
+                $('#toolbar-button-search').css("background-image", "url(images/toolbarLoading.jpg)");
+                toolbar.loading = true;
+            }
+
+            function hideLoading(){
+                $('#toolbar-button-search').css("background-image", "url(images/toolbarButtonSearch.png)");
+                toolbar.loading = false;
+
+                // History
+                if(appHistory.list[appHistory.index] !== $("#url").val() && !browsing && $("#url").val().length > 0){
+                    appHistory.list = appHistory.list.slice(0, appHistory.index+1);
+                    appHistory.list[appHistory.index+1] = $("#url").val();
+                    appHistory.index = appHistory.list.length-1;
+                }
+
+                if(window.sankore && $("#web-browser").attr("src") !== ""){
+                    savePref("historyState", "started");
+                    savePref("historyList", appHistory.list.toString());
+                    savePref("historyIndex", appHistory.index)
+                }
+            }
+
+            String.prototype.accnt = function(){
+                var cnt = 0;
+                var acnt = this;
+                acnt = acnt.split('');
+                var sec = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
+                var rep = ['A','A','A','A','A','A','a','a','a','a','a','a','O','O','O','O','O','O','O','o','o','o','o','o','o','E','E','E','E','e','e','e','e','e','C','c','D','I','I','I','I','i','i','i','i','U','U','U','U','u','u','u','u','N','n','S','s','Y','y','y','Z','z'];
+                for (var y = 0; y < acnt.length; y++)
+                    if (sec.indexOf(acnt[y]) != -1)
+                        cnt++;
+                return cnt;
+            }
+
+            String.prototype.renlacc = function(){
+                var torem = this;
+                torem = torem.split('');
+                var toremout = new Array();
+                var sec = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
+                var rep = ['A','A','A','A','A','A','a','a','a','a','a','a','O','O','O','O','O','O','O','o','o','o','o','o','o','E','E','E','E','e','e','e','e','e','C','c','D','I','I','I','I','i','i','i','i','U','U','U','U','u','u','u','u','N','n','S','s','Y','y','y','Z','z'];
+                for (var y = 0; y < torem.length; y++){
+                    if (sec.indexOf(torem[y]) != -1)
+                        toremout[y] = rep[sec.indexOf(torem[y])];
+                    else 
+                        toremout[y] = torem[y];
+                }
+                var toascout = toremout.join('');
+                document.title = toascout;
+                return toascout;
+            }
+
+            function remacc(kword){
+
+                var countarr = new Array();
+                var c = '';
+                var text=kword;
+                var textout = new Array();
+                text = text.replace(/\r/g,'');
+                text = text.split('\n');
+                var linecnt = text.length;
+                for (var x = 0; x < linecnt; x++){
+                    countarr[x] = Math.abs(text[x].accnt());
+                    textout[x] = text[x].renlacc();
+                }
+                textout = textout.join('\n');
+                return textout;
+            }
+
+            function loadPref(name, defaultValue){
+                var pref = defaultValue;
+
+                if (sankore.preference(name) !== "") {
+                    pref = sankore.preference(name);
+                };
+
+                return pref;
+            };
+
+            function savePref(name, value){
+                sankore.setPreference(name, String(value));
+            };
+
+            function languagesHandler(language){
+                switch(language){
+                    case "Deutsch":
+                        lang = 'de'
+                        break;
+                    case "English":
+                        lang = 'en'
+                        break;
+                    case "Español":
+                        lang = 'es'
+                        break;
+                    case "Français":
+                        lang = 'fr'
+                        break;
+                    case "Italiano":
+                        lang = 'it'
+                        break;
+                    case "Nederlands":
+                        lang = 'nl'
+                        break;
+                    case "Polski":
+                        lang = 'pl'
+                        break;
+                    case "Português":
+                        lang = 'pt'
+                        break;
+                    case "Русский":
+                        lang = 'ru'
+                        break;
+                    case "日本語":
+                        lang = 'ja'
+                        break;
+                }
+            };
+
+        </script> 
+    </head> 
+    <body style="overflow:hidden; margin: 0px; width:100%; height:100%; position:absolute; background:#ffffff"> 
+
+        <div id="toolbar"> 
+
+            <div class="toolbar-body"> 
+
+                <div id="toolbar-down" class="toolbar"> 
+                    Wikipedia
+                </div> <!--toolbar-down--> 
+
+            </div> <!--toolbar-body--> 
+
+            <div class="toolbar-body"> 
+
+                <div id="toolbar-up" class="toolbar"> 
+                    <div id="left-field"> 
+                        <div id="toolbar-button-back" class="button" alt="back button"></div> 
+                        <div id="toolbar-button-forward" class="button" alt="forward button"></div> 
+                    </div> 
+                    <div id="center-field" class="full"> 
+                        <input type="text" id="url" alt="url"/> 
+                        <div class="on-the-right"> 
+                            <div id="toolbar-button-search"></div> 
+                        </div> 
+                    </div> <!--center-field--> 
+                    <div id="right-field"> 
+                        <div id="toolbar-button-languages" class="button" alt="languages button"> 
+                            <ul id='languages-dropdown' class='sf-menu'> 
+                                <li class='current'><a id='current-language' class='selected' href='#a'></a> 
+                                    <ul> 
+                                        <li><a class="sf-sl-first" href="#">Deutsch</a></li> 
+                                        <li><a>English</a></li> 
+                                        <li><a>Español</a></li> 
+                                        <li><a>Français</a></li> 
+                                        <li><a>Italiano</a></li> 
+                                        <li><a>Nederlands</a></li> 
+                                        <li><a>Polski</a></li> 
+                                        <li><a>Português</a></li> 
+                                        <li><a>Русский</a></li> 
+                                        <li><a class="sf-sl-last">日本語</a></li> 
+                                    </ul> 
+                                </li> 
+                            </ul> 
+                        </div> 
+                    </div> 
+                </div> <!--toolbar-up--> 
+
+            </div> <!--toolbar-body--> 
+
+        </div> <!--toolbar--> 
+        <div id="web-canevas"> 
+            <iframe id="web-browser" name="web-browser" src="" onload="hideLoading()"></iframe> 
+        </div>
+    </body> 
 </html> 
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/applications/Wiktionnaire.wgt/config.xml b/Sankore-3.1/resources/library/applications/Wiktionnaire.wgt/config.xml
index 5edfef8..10d2d34 100644
--- a/Sankore-3.1/resources/library/applications/Wiktionnaire.wgt/config.xml
+++ b/Sankore-3.1/resources/library/applications/Wiktionnaire.wgt/config.xml
@@ -1,16 +1,18 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        identifier="http://uniboard.mnemis.com/widgets/wikipedia" 
-        version="1.2"
-        width="755"
-        height="450"
-        ub:resizable = "true">
-       
-  		<name>Wikipedia</name>
-		<author href="http://www.getuniboard.com"
-	            email="info at mnemis.com">Mnemis SA</author>
-		<description>Wikipedia, the free encyclopedia</description>
-		
-        <content src="index.html"/>
-</widget>
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        identifier="http://uniboard.mnemis.com/widgets/wikipedia" 
+        version="1.2"
+		minimum_height="300"
+		minimum_width="360"
+        width="755"
+        height="450"
+        ub:resizable = "true">
+       
+  		<name>Wikipedia</name>
+		<author href="http://www.getuniboard.com"
+	            email="info at mnemis.com">Mnemis SA</author>
+		<description>Wikipedia, the free encyclopedia</description>
+		
+        <content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/applications/Wiktionnaire.wgt/index.html b/Sankore-3.1/resources/library/applications/Wiktionnaire.wgt/index.html
index 1a83d88..5dc16ac 100644
--- a/Sankore-3.1/resources/library/applications/Wiktionnaire.wgt/index.html
+++ b/Sankore-3.1/resources/library/applications/Wiktionnaire.wgt/index.html
@@ -1,384 +1,380 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> 
-    <head> 
-        <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
-        <title>Wikipedia</title> 
-
-        <link rel="stylesheet" type="text/css" href="css/master.css"/> 
-        <link rel="stylesheet" type="text/css" href="css/superfish.css"/>         
-
-        <!-- jQuery --> 
-        <script type="text/javascript" src="script/jquery.min.js"></script> 
-        <script type="text/javascript" src="script/superfish.js"></script> 
-        <script type="text/javascript" src="script/languages.js"></script> 
-
-        <script type="text/javascript"> 
-            
-            var popupFlag = false;
-            var browsing = false;
-            var mode = 'wiki';
-            var lang = 'en';
-            var internalChange = false;            
-            var syslang = "en";
-            
-            if(window.sankore){
-                try{
-                    syslang = sankore.locale().substr(0,2);
-                    sankoreLang[syslang].search;
-                } catch(e){
-                    syslang = "en";
-                }
-            } else 
-                syslang = "en";
-            
-            var toolbar = {
-                state:"",
-                loading:false
-            };
-            var appHistory = {
-                list:[],
-                back:function(){
-                    if(typeof(appHistory.list[appHistory.index-1]) !== "undefined"){
-                        appHistory.index--;
-                        wikiReq(appHistory.list[appHistory.index]);
-                    }
-                },
-                forward:function(){
-                    if(typeof(appHistory.list[appHistory.index+1]) !== "undefined"){
-                        appHistory.index++;
-                        wikiReq(appHistory.list[appHistory.index]);
-                    }
-                },
-                index:-1
-            }
-
-            $(document).ready(function() {
-
-                var ubHistoryList = "";
-                var ubHistoryIndex = "";
-                
-                $("#toolbar-down").html(sankoreLang[syslang].wikipedia);
-
-                var popupText = $("<div id='popupWordInfo' class='popupWordInfo'></div>").appendTo("body");
-
-                lang = navigator.userAgent.split(";");
-
-                lang = (navigator.language || navigator.systemLanguage || 
-                    navigator.userLanguage || 'en').substr(0, 2).toLowerCase();
-                $("#current-language").text(lang.charAt(0).toUpperCase() + lang.substr(1));
-
-                if(window.sankore){
-                    toolbar.state = loadPref("historyState", "begin");
-                    ubHistoryList = loadPref("historyList", "");
-                    ubHistoryIndex = loadPref("historyIndex", "-1");
-                    //window.resizeTo(350, 450);
-                }
-
-                if(ubHistoryList !== "") {
-                    appHistory.list = ubHistoryList.split(",");
-                    appHistory.index = parseInt(ubHistoryIndex);
-                    wikiReq(appHistory.list[appHistory.index]);
-                } else {
-                    wikiReq("");
-                }
-
-                $(window).resize();
-
-                $("#languages-dropdown>li>ul>li").each(function(){
-                    $(this).click(function(){
-                        languagesHandler($(this).text());
-                        $("#current-language").text(lang.charAt(0).toUpperCase() + lang.substr(1));
-                    });
-                });
-
-                $("#languages-dropdown").superfish({ 
-                    dropShadows:false,
-                    speed:1,
-                    delay:100
-                });
-
-                $("#url")
-                .change(function(){
-                    if(!toolbar.loading){
-                        browsing = false;
-                        wikiReq($("#url").val());
-                    }
-                })
-                .keypress(function (e){
-                    if(e.which == 13){
-                        $("#url").change();
-                    };
-                });
-
-                $("#url").val(appHistory.list[appHistory.index]);
-
-                if($("#url").val().length > 0)
-                    $("#url").change();
-                
-                $("#toolbar-button-search").click(function(){
-                    $("#url").trigger("change");
-                });
-                
-                $("#toolbar-button-search").mouseover(function(evt){
-                    popupFlag = true;
-                    popupText.text(sankoreLang[syslang].search)
-                    .css("top", evt.pageY + 5)
-                    .css("left", evt.pageX + 13)
-                    .css({width:"70px"})
-                    .show("fast", function(){
-                        if(!popupFlag)
-                            popupText.hide();
-                    });
-                });
-                
-                $("#toolbar-button-search, #toolbar-button-back, #toolbar-button-forward").mousemove(function(evt){
-                    popupText.css("top", evt.pageY + 5)
-                    .css("left", evt.pageX + 13);
-                });
-                
-                $("#toolbar-button-search, #toolbar-button-back, #toolbar-button-forward").mouseout(function(evt){
-                    popupFlag = false;
-                    popupText.hide();
-                });
-                
-                $("#toolbar-button-back").click(function(){
-                    browsing = true;
-                    appHistory.back();
-                });
-                
-                $("#toolbar-button-back").mouseover(function(evt){
-                    popupFlag = true;
-                    popupText.text(sankoreLang[syslang].prev_word)
-                    .css("top", evt.pageY + 5)
-                    .css("left", evt.pageX + 13)
-                    .css({width:"100px"})
-                    .show("fast", function(){
-                        if(!popupFlag)
-                            popupText.hide();
-                    });
-                });
-
-                $("#toolbar-button-forward").click(function(){
-                    browsing = true;
-                    appHistory.forward();
-                });
-                
-                $("#toolbar-button-forward").mouseover(function(evt){
-                    popupFlag = true;
-                    popupText.text(sankoreLang[syslang].next_word)
-                    .css("top", evt.pageY + 5)
-                    .css("left", evt.pageX + 13)
-                    .css({width:"70px"})
-                    .show("fast", function(){
-                        if(!popupFlag)
-                            popupText.hide();
-                    });
-                });
-
-                $("#toolbar-button-home").click(function(){
-                });
-            });
-
-            $(window).resize(function(){
-
-                if($(window).width() < 370){
-                    window.resizeTo(370, $(window).height());
-                } else if($(window).width() > 755){
-                    $("#web-browser").height($(window).height() - $("#toolbar").height() - 2);
-                    $("#web-browser").width($(window).width() - 2);
-                } else 
-                    $("#web-browser").height($(window).height() - $("#toolbar").height() - 2);
-                
-                if($(window).height() < 150)
-                    window.resizeTo($(window).width(), 150);
-
-            });
-
-            function wikiReq(kword){
-
-                var textBoxInput = "";
-
-                textBoxInput = remacc(kword.replace(/ /g,'_'));	
-
-                textBoxInput = textBoxInput.replace(textBoxInput.charAt(0),textBoxInput.charAt(0).toLowerCase());                
-                if(toolbar.state == "begin"){
-                    $('#web-browser').attr('src',"");
-                    toolbar.state = "started";
-                }
-                else
-                    $('#web-browser').attr('src',"http://" + lang + ".wiktionary.org/wiki/" + textBoxInput);
-                $('#url').val(kword);
-                $('#toolbar-button-search').css("background-image", "url(images/toolbarLoading.jpg)");
-                toolbar.loading = true;
-            }
-
-            function hideLoading(){
-                $('#toolbar-button-search').css("background-image", "url(images/toolbarButtonSearch.png)");
-                toolbar.loading = false;
-
-                // History
-                if(appHistory.list[appHistory.index] !== $("#url").val() && !browsing && $("#url").val().length > 0){
-                    appHistory.list = appHistory.list.slice(0, appHistory.index+1);
-                    appHistory.list[appHistory.index+1] = $("#url").val();
-                    appHistory.index = appHistory.list.length-1;
-                }
-
-                if(window.sankore && $("#web-browser").attr("src") !== ""){
-                    savePref("historyState", "started");
-                    savePref("historyList", appHistory.list.toString());
-                    savePref("historyIndex", appHistory.index)
-                }
-            }
-
-            String.prototype.accnt = function(){
-                var cnt = 0;
-                var acnt = this;
-                acnt = acnt.split('');
-                var sec = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
-                var rep = ['A','A','A','A','A','A','a','a','a','a','a','a','O','O','O','O','O','O','O','o','o','o','o','o','o','E','E','E','E','e','e','e','e','e','C','c','D','I','I','I','I','i','i','i','i','U','U','U','U','u','u','u','u','N','n','S','s','Y','y','y','Z','z'];
-                for (var y = 0; y < acnt.length; y++)
-                    if (sec.indexOf(acnt[y]) != -1)
-                        cnt++;
-                return cnt;
-            }
-
-            String.prototype.renlacc = function(){
-                var torem = this;
-                torem = torem.split('');
-                var toremout = new Array();
-                var sec = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
-                var rep = ['A','A','A','A','A','A','a','a','a','a','a','a','O','O','O','O','O','O','O','o','o','o','o','o','o','E','E','E','E','e','e','e','e','e','C','c','D','I','I','I','I','i','i','i','i','U','U','U','U','u','u','u','u','N','n','S','s','Y','y','y','Z','z'];
-                for (var y = 0; y < torem.length; y++){
-                    if (sec.indexOf(torem[y]) != -1)
-                        toremout[y] = rep[sec.indexOf(torem[y])];
-                    else 
-                        toremout[y] = torem[y];
-                }
-                var toascout = toremout.join('');
-                document.title = toascout;
-                return toascout;
-            }
-
-            function remacc(kword){
-
-                var countarr = new Array();
-                var c = '';
-                var text=kword;
-                var textout = new Array();
-                text = text.replace(/\r/g,'');
-                text = text.split('\n');
-                var linecnt = text.length;
-                for (var x = 0; x < linecnt; x++){
-                    countarr[x] = Math.abs(text[x].accnt());
-                    textout[x] = text[x].renlacc();
-                }
-                textout = textout.join('\n');
-                return textout;
-            }
-
-            function loadPref(name, defaultValue){
-                var pref = defaultValue;
-
-                if (sankore.preference(name) !== "") {
-                    pref = sankore.preference(name);
-                };
-
-                return pref;
-            };
-
-            function savePref(name, value){
-                sankore.setPreference(name, String(value));
-            };
-
-            function languagesHandler(language){
-                switch(language){
-                    case "Deutsch":
-                        lang = 'de'
-                        break;
-                    case "English":
-                        lang = 'en'
-                        break;
-                    case "Español":
-                        lang = 'es'
-                        break;
-                    case "Français":
-                        lang = 'fr'
-                        break;
-                    case "Italiano":
-                        lang = 'it'
-                        break;
-                    case "Nederlands":
-                        lang = 'nl'
-                        break;
-                    case "Polski":
-                        lang = 'pl'
-                        break;
-                    case "Português":
-                        lang = 'pt'
-                        break;
-                    case "Русский":
-                        lang = 'ru'
-                        break;
-                    case "日本語":
-                        lang = 'ja'
-                        break;
-                }
-            };
-
-        </script> 
-    </head> 
-    <body style="overflow:hidden; margin: 0px; width:100%; height:100%; position:absolute; background:#ffffff"> 
-
-        <div id="toolbar"> 
-
-            <div class="toolbar-body"> 
-
-                <div id="toolbar-down" class="toolbar"> 
-                    Wiktionary
-                </div> <!--toolbar-down--> 
-
-            </div> <!--toolbar-body--> 
-
-            <div class="toolbar-body"> 
-
-                <div id="toolbar-up" class="toolbar"> 
-                    <div id="left-field"> 
-                        <div id="toolbar-button-back" class="button" alt="back button"></div> 
-                        <div id="toolbar-button-forward" class="button" alt="forward button"></div> 
-                    </div> 
-                    <div id="center-field" class="full"> 
-                        <input type="text" id="url" alt="url"/> 
-                        <div class="on-the-right"> 
-                            <div id="toolbar-button-search"></div> 
-                        </div> 
-                    </div> <!--center-field--> 
-                    <div id="right-field"> 
-                        <div id="toolbar-button-languages" class="button" alt="languages button"> 
-                            <ul id='languages-dropdown' class='sf-menu'> 
-                                <li class='current'><a id='current-language' class='selected' href='#a'></a> 
-                                    <ul> 
-                                        <li><a class="sf-sl-first" href="#">Deutsch</a></li> 
-                                        <li><a href="#">English</a></li> 
-                                        <li><a href="#">Español</a></li> 
-                                        <li><a href="#">Français</a></li> 
-                                        <li><a href="#">Italiano</a></li> 
-                                        <li><a href="#">Nederlands</a></li> 
-                                        <li><a href="#">Polski</a></li> 
-                                        <li><a href="#">Português</a></li> 
-                                        <li><a href="#">Русский</a></li> 
-                                        <li><a class="sf-sl-last" href="#">日本語</a></li> 
-                                    </ul> 
-                                </li> 
-                            </ul> 
-                        </div> 
-                    </div> 
-                </div> <!--toolbar-up--> 
-
-            </div> <!--toolbar-body--> 
-
-        </div> <!--toolbar--> 
-        <div id="web-canevas"> 
-            <iframe id="web-browser" name="web-browser" src="" onload="hideLoading()"></iframe> 
-        </div>
-    </body> 
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> 
+    <head> 
+        <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
+        <title>Wikipedia</title> 
+
+        <link rel="stylesheet" type="text/css" href="css/master.css"/> 
+        <link rel="stylesheet" type="text/css" href="css/superfish.css"/>         
+
+        <!-- jQuery --> 
+        <script type="text/javascript" src="script/jquery.min.js"></script> 
+        <script type="text/javascript" src="script/superfish.js"></script> 
+        <script type="text/javascript" src="script/languages.js"></script> 
+
+        <script type="text/javascript"> 
+            
+            var popupFlag = false;
+            var browsing = false;
+            var mode = 'wiki';
+            var lang = 'en';
+            var internalChange = false;            
+            var syslang = "en";
+            
+            if(window.sankore){
+                try{
+                    syslang = sankore.locale().substr(0,2);
+                    sankoreLang[syslang].search;
+                } catch(e){
+                    syslang = "en";
+                }
+            } else 
+                syslang = "en";
+            
+            var toolbar = {
+                state:"",
+                loading:false
+            };
+            var appHistory = {
+                list:[],
+                back:function(){
+                    if(typeof(appHistory.list[appHistory.index-1]) !== "undefined"){
+                        appHistory.index--;
+                        wikiReq(appHistory.list[appHistory.index]);
+                    }
+                },
+                forward:function(){
+                    if(typeof(appHistory.list[appHistory.index+1]) !== "undefined"){
+                        appHistory.index++;
+                        wikiReq(appHistory.list[appHistory.index]);
+                    }
+                },
+                index:-1
+            }
+
+            $(document).ready(function() {
+
+                var ubHistoryList = "";
+                var ubHistoryIndex = "";
+                
+                $("#toolbar-down").html(sankoreLang[syslang].wikipedia);
+
+                var popupText = $("<div id='popupWordInfo' class='popupWordInfo'></div>").appendTo("body");
+
+                lang = navigator.userAgent.split(";");
+
+                lang = (navigator.language || navigator.systemLanguage || 
+                    navigator.userLanguage || 'en').substr(0, 2).toLowerCase();
+                $("#current-language").text(lang.charAt(0).toUpperCase() + lang.substr(1));
+
+                if(window.sankore){
+                    toolbar.state = loadPref("historyState", "begin");
+                    ubHistoryList = loadPref("historyList", "");
+                    ubHistoryIndex = loadPref("historyIndex", "-1");
+                    //window.resizeTo(350, 450);
+                }
+
+                if(ubHistoryList !== "") {
+                    appHistory.list = ubHistoryList.split(",");
+                    appHistory.index = parseInt(ubHistoryIndex);
+                    wikiReq(appHistory.list[appHistory.index]);
+                } else {
+                    wikiReq("");
+                }
+
+                $(window).resize();
+
+                $("#languages-dropdown>li>ul>li").each(function(){
+                    $(this).click(function(){
+                        languagesHandler($(this).text());
+                        $("#current-language").text(lang.charAt(0).toUpperCase() + lang.substr(1));
+                    });
+                });
+
+                $("#languages-dropdown").superfish({ 
+                    dropShadows:false,
+                    speed:1,
+                    delay:100
+                });
+
+                $("#url")
+                .change(function(){
+                    if(!toolbar.loading){
+                        browsing = false;
+                        wikiReq($("#url").val());
+                    }
+                })
+                .keypress(function (e){
+                    if(e.which == 13){
+                        $("#url").change();
+                    };
+                });
+
+                $("#url").val(appHistory.list[appHistory.index]);
+
+                if($("#url").val().length > 0)
+                    $("#url").change();
+                
+                $("#toolbar-button-search").click(function(){
+                    $("#url").trigger("change");
+                });
+                
+                $("#toolbar-button-search").mouseover(function(evt){
+                    popupFlag = true;
+                    popupText.text(sankoreLang[syslang].search)
+                    .css("top", evt.pageY + 5)
+                    .css("left", evt.pageX + 13)
+                    .css({width:"70px"})
+                    .show("fast", function(){
+                        if(!popupFlag)
+                            popupText.hide();
+                    });
+                });
+                
+                $("#toolbar-button-search, #toolbar-button-back, #toolbar-button-forward").mousemove(function(evt){
+                    popupText.css("top", evt.pageY + 5)
+                    .css("left", evt.pageX + 13);
+                });
+                
+                $("#toolbar-button-search, #toolbar-button-back, #toolbar-button-forward").mouseout(function(evt){
+                    popupFlag = false;
+                    popupText.hide();
+                });
+                
+                $("#toolbar-button-back").click(function(){
+                    browsing = true;
+                    appHistory.back();
+                });
+                
+                $("#toolbar-button-back").mouseover(function(evt){
+                    popupFlag = true;
+                    popupText.text(sankoreLang[syslang].prev_word)
+                    .css("top", evt.pageY + 5)
+                    .css("left", evt.pageX + 13)
+                    .css({width:"100px"})
+                    .show("fast", function(){
+                        if(!popupFlag)
+                            popupText.hide();
+                    });
+                });
+
+                $("#toolbar-button-forward").click(function(){
+                    browsing = true;
+                    appHistory.forward();
+                });
+                
+                $("#toolbar-button-forward").mouseover(function(evt){
+                    popupFlag = true;
+                    popupText.text(sankoreLang[syslang].next_word)
+                    .css("top", evt.pageY + 5)
+                    .css("left", evt.pageX + 13)
+                    .css({width:"70px"})
+                    .show("fast", function(){
+                        if(!popupFlag)
+                            popupText.hide();
+                    });
+                });
+
+                $("#toolbar-button-home").click(function(){
+                });
+            });
+
+            $(window).resize(function(){
+
+                if($(window).width() > 755){
+                    $("#web-browser").height($(window).height() - $("#toolbar").height() - 2);
+                    $("#web-browser").width($(window).width() - 2);
+                } else 
+                    $("#web-browser").height($(window).height() - $("#toolbar").height() - 2);
+                
+
+            });
+
+            function wikiReq(kword){
+
+                var textBoxInput = "";
+
+                textBoxInput = remacc(kword.replace(/ /g,'_'));	
+
+                textBoxInput = textBoxInput.replace(textBoxInput.charAt(0),textBoxInput.charAt(0).toLowerCase());                
+                if(toolbar.state == "begin"){
+                    $('#web-browser').attr('src',"");
+                    toolbar.state = "started";
+                }
+                else
+                    $('#web-browser').attr('src',"http://" + lang + ".wiktionary.org/wiki/" + textBoxInput);
+                $('#url').val(kword);
+                $('#toolbar-button-search').css("background-image", "url(images/toolbarLoading.jpg)");
+                toolbar.loading = true;
+            }
+
+            function hideLoading(){
+                $('#toolbar-button-search').css("background-image", "url(images/toolbarButtonSearch.png)");
+                toolbar.loading = false;
+
+                // History
+                if(appHistory.list[appHistory.index] !== $("#url").val() && !browsing && $("#url").val().length > 0){
+                    appHistory.list = appHistory.list.slice(0, appHistory.index+1);
+                    appHistory.list[appHistory.index+1] = $("#url").val();
+                    appHistory.index = appHistory.list.length-1;
+                }
+
+                if(window.sankore && $("#web-browser").attr("src") !== ""){
+                    savePref("historyState", "started");
+                    savePref("historyList", appHistory.list.toString());
+                    savePref("historyIndex", appHistory.index)
+                }
+            }
+
+            String.prototype.accnt = function(){
+                var cnt = 0;
+                var acnt = this;
+                acnt = acnt.split('');
+                var sec = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
+                var rep = ['A','A','A','A','A','A','a','a','a','a','a','a','O','O','O','O','O','O','O','o','o','o','o','o','o','E','E','E','E','e','e','e','e','e','C','c','D','I','I','I','I','i','i','i','i','U','U','U','U','u','u','u','u','N','n','S','s','Y','y','y','Z','z'];
+                for (var y = 0; y < acnt.length; y++)
+                    if (sec.indexOf(acnt[y]) != -1)
+                        cnt++;
+                return cnt;
+            }
+
+            String.prototype.renlacc = function(){
+                var torem = this;
+                torem = torem.split('');
+                var toremout = new Array();
+                var sec = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
+                var rep = ['A','A','A','A','A','A','a','a','a','a','a','a','O','O','O','O','O','O','O','o','o','o','o','o','o','E','E','E','E','e','e','e','e','e','C','c','D','I','I','I','I','i','i','i','i','U','U','U','U','u','u','u','u','N','n','S','s','Y','y','y','Z','z'];
+                for (var y = 0; y < torem.length; y++){
+                    if (sec.indexOf(torem[y]) != -1)
+                        toremout[y] = rep[sec.indexOf(torem[y])];
+                    else 
+                        toremout[y] = torem[y];
+                }
+                var toascout = toremout.join('');
+                document.title = toascout;
+                return toascout;
+            }
+
+            function remacc(kword){
+
+                var countarr = new Array();
+                var c = '';
+                var text=kword;
+                var textout = new Array();
+                text = text.replace(/\r/g,'');
+                text = text.split('\n');
+                var linecnt = text.length;
+                for (var x = 0; x < linecnt; x++){
+                    countarr[x] = Math.abs(text[x].accnt());
+                    textout[x] = text[x].renlacc();
+                }
+                textout = textout.join('\n');
+                return textout;
+            }
+
+            function loadPref(name, defaultValue){
+                var pref = defaultValue;
+
+                if (sankore.preference(name) !== "") {
+                    pref = sankore.preference(name);
+                };
+
+                return pref;
+            };
+
+            function savePref(name, value){
+                sankore.setPreference(name, String(value));
+            };
+
+            function languagesHandler(language){
+                switch(language){
+                    case "Deutsch":
+                        lang = 'de'
+                        break;
+                    case "English":
+                        lang = 'en'
+                        break;
+                    case "Español":
+                        lang = 'es'
+                        break;
+                    case "Français":
+                        lang = 'fr'
+                        break;
+                    case "Italiano":
+                        lang = 'it'
+                        break;
+                    case "Nederlands":
+                        lang = 'nl'
+                        break;
+                    case "Polski":
+                        lang = 'pl'
+                        break;
+                    case "Português":
+                        lang = 'pt'
+                        break;
+                    case "Русский":
+                        lang = 'ru'
+                        break;
+                    case "日本語":
+                        lang = 'ja'
+                        break;
+                }
+            };
+
+        </script> 
+    </head> 
+    <body style="overflow:hidden; margin: 0px; width:100%; height:100%; position:absolute; background:#ffffff"> 
+
+        <div id="toolbar"> 
+
+            <div class="toolbar-body"> 
+
+                <div id="toolbar-down" class="toolbar"> 
+                    Wiktionary
+                </div> <!--toolbar-down--> 
+
+            </div> <!--toolbar-body--> 
+
+            <div class="toolbar-body"> 
+
+                <div id="toolbar-up" class="toolbar"> 
+                    <div id="left-field"> 
+                        <div id="toolbar-button-back" class="button" alt="back button"></div> 
+                        <div id="toolbar-button-forward" class="button" alt="forward button"></div> 
+                    </div> 
+                    <div id="center-field" class="full"> 
+                        <input type="text" id="url" alt="url"/> 
+                        <div class="on-the-right"> 
+                            <div id="toolbar-button-search"></div> 
+                        </div> 
+                    </div> <!--center-field--> 
+                    <div id="right-field"> 
+                        <div id="toolbar-button-languages" class="button" alt="languages button"> 
+                            <ul id='languages-dropdown' class='sf-menu'> 
+                                <li class='current'><a id='current-language' class='selected' href='#a'></a> 
+                                    <ul> 
+                                        <li><a class="sf-sl-first" href="#">Deutsch</a></li> 
+                                        <li><a>English</a></li> 
+                                        <li><a>Español</a></li> 
+                                        <li><a>Français</a></li> 
+                                        <li><a>Italiano</a></li> 
+                                        <li><a>Nederlands</a></li> 
+                                        <li><a>Polski</a></li> 
+                                        <li><a>Português</a></li> 
+                                        <li><a>Русский</a></li> 
+                                        <li><a class="sf-sl-last">日本語</a></li> 
+                                    </ul> 
+                                </li> 
+                            </ul> 
+                        </div> 
+                    </div> 
+                </div> <!--toolbar-up--> 
+
+            </div> <!--toolbar-body--> 
+
+        </div> <!--toolbar--> 
+        <div id="web-canevas"> 
+            <iframe id="web-browser" name="web-browser" src="" onload="hideLoading()"></iframe> 
+        </div>
+    </body> 
 </html> 
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/config.xml
index b30123b..61630a8 100644
--- a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/config.xml	
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/config.xml	
@@ -1,16 +1,18 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://uniboard.mnemis.com/widgets/notes" 
-        version="1.2"
-        width="950"
-        height="600" 
-        ub:resizable="true">     
-   
-		<name>Notes</name>
-		<author href="http://www.getuniboard.com"
-	            email="info at mnemis.com">Mnemis SA</author>
-		<description>Associer images</description>
-		
-		<content src="index.html"/>
-</widget>
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://uniboard.mnemis.com/widgets/notes" 
+        version="1.2"
+        width="950"
+        height="560" 
+		minimum_height="300"
+		minimum_width="670"
+        ub:resizable="false">     
+   
+		<name>Notes</name>
+		<author href="http://www.getuniboard.com"
+	            email="info at mnemis.com">Mnemis SA</author>
+		<description>Associer images</description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/index.html
index db2fbf1..f63843f 100644
--- a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/index.html	
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/index.html	
@@ -3,89 +3,30 @@
     <head>
         <title>D'n'd</title>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
         <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url:'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }
-                //here you can put your code
-                if(window.sankore)
-                    sankore.enableDropOnWidget();
+                    }
+                });      
             });
         </script>
     </head>
     <body>
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="data">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
-
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
+        
     </body>
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/js/script.js
deleted file mode 100644
index 7582caf..0000000
--- a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/js/script.js	
+++ /dev/null
@@ -1,816 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    short_desc: "Select the number \"three\".", 
-    add: "Add new block",
-    enter: "Enter your instruction here ...",
-    wgt_name: "Associate images",
-    reload: "Reload",
-    slate: "slate",
-    pad: "pad",
-    none: "none",
-    help: "Help",
-    help_content: 
-"<p> <h2>Associate images</h2> </p>" +
-"<p> <h3>Choose the correct picture</h3> </p>" +
-"<p> Drag and drop the image in the correct area. If the result is incorrect, the area turns in red. If the result is correct, the area turns in green. </p> "+
-"<p> Reload “button” resets the exercises. </p>" +
-"<p> Enter the “Edit” mode to :</p>" +
-"<ul> <li> choose the theme of the App : pad, slate, or none (by default : none), </li>" +
-"<li> modify an exercise or to create  a new one.</li> </ul>" +
-
-"<p>To create a new exercise : </p>" +
-"<ul> <li> click on “New block”,</li>" +
-"<li> insert an instruction clicking on the text field “Enter your instruction here ... ”,</li>" +
-"<li> add picture frames clicking on the “+”,</li>" +
-"<li> drag an drop pictures from your library,</li>" +
-"<li> set the correct image of your activity clicking on the submit button “v” on the frame. </li> </ul>" +
-"<p> To delete a frame, click on the cross button on the frame.</p>" +
-"<p> To replace a picture, click on the reload icon on the frame. </p>" +
-
-"<p> To delete a whole exercise, click on the cross on the left.</p>" +
-
-"<p>“Display” button comes back to the activity.</p>",
-    theme: "Theme"
-};
-
-//main function
-function start(){
-    
-    $("#wgt_display").text(sankoreLang.display);
-    $("#wgt_edit").text(sankoreLang.edit);
-    $("#wgt_name").text(sankoreLang.wgt_name);
-    $("#wgt_reload").text(sankoreLang.reload);
-    $("#wgt_help").text(sankoreLang.help);
-    $("#help").html(sankoreLang.help_content);
-    $("#style_select option[value='1']").text(sankoreLang.slate);
-    $("#style_select option[value='2']").text(sankoreLang.pad);
-    $("#style_select option[value='3']").text(sankoreLang.none);
-    var tmpl = $("div.inline label").html();
-    $("div.inline label").html(sankoreLang.theme + tmpl)
-    
-    if(window.sankore){
-        if(sankore.preference("associer","")){
-            var data = jQuery.parseJSON(sankore.preference("associer",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#wgt_help").click(function(){
-        var tmp = $(this);
-        if($(this).hasClass("open")){
-            $(this).removeClass("help_pad").removeClass("help_wood")
-            $("#help").slideUp("100", function(){
-                tmp.removeClass("open");
-                $("#data").show();
-            });
-        } else {
-            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
-            $("#data").hide();
-            $("#help").slideDown("100", function(){
-                tmp.addClass("open");
-            });
-        }
-    });
-    
-    $("#wgt_reload").click(function(){
-        if($("#wgt_display").hasClass("selected")){
-            $("#wgt_edit").trigger("click");
-            $("#wgt_display").trigger("click");
-        } else {
-            $("#wgt_display").trigger("click");
-        }
-    });
-    
-    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
-        exportData();
-    });
-    
-    $("#style_select").change(function (event){
-        changeStyle($(this).find("option:selected").val());
-    })
-    
-    $("#wgt_display, #wgt_edit").click(function(event){
-        if(this.id == "wgt_display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#wgt_edit").removeClass("selected");
-                $("#parameters").css("display", "none");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_array = [];
-                    
-                    container.find(".text_cont").removeAttr("contenteditable");
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".img_block").each(function(){
-                        if($(this).find("img").attr("src") != "img/drop_img.png"){
-                            $(this).find(".close_img").remove();
-                            $(this).find(".clear_img").remove();
-                            $(this).find(".true_img").remove();
-                            $(this).find(".false_img").remove();
-                            $(this).removeAttr("ondragenter")
-                            .removeAttr("ondragleave")
-                            .removeAttr("ondragover")
-                            .removeAttr("ondrop")
-                            .addClass("img_gray");
-                        } else 
-                            $(this).remove();
-                    });
-                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
-                    container.find(".img_block").each(function(){
-                        $(this).css("float","");
-                        tmp_array.push($(this));
-                    });                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: '#data'
-                        });
-                        tmp_array[i].appendTo(container.find(".imgs_cont"));
-                    }
-                    
-                    img_answers.droppable({
-                        hoverClass: 'dropHere',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if($(this).children()[0].tagName == "IMG")
-                                    $(this).children().remove();
-                                else
-                                    $(ui.draggable).parent().append($(this).children());
-                                $(this).append($(ui.draggable));  
-                                if($(this).children().length == 1){                
-                                    if($(this).children().find("input").val() == "1")
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_green");
-                                    else
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_green")
-                                        .addClass("imgs_answers_red");
-                                }                    
-                            }
-                        }
-                    });
-                    
-                    container.find(".imgs_cont").droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_cont = $(ui.draggable).parent();
-                                    $(this).append($(ui.draggable));
-                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                                    var answers = "";
-                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                        answers += $(this).find("input").val();
-                                    });
-                                    if(tmp_cont.children()[0].tagName == "IMG")
-                                        tmp_cont.removeClass("imgs_answers_green")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_gray");
-                                    else
-                                    if(tmp_cont.children().length == 1){                
-                                        if(tmp_cont.children().find("input").val() == "1")
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_red")
-                                            .addClass("imgs_answers_green");
-                                        else
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_green")
-                                            .addClass("imgs_answers_red");
-                                    }    
-                                }
-                            }
-                        }
-                    });
-                });
-                
-                $(this).css("display", "none");
-                $("#wgt_edit").css("display", "block");
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#wgt_display").removeClass("selected");
-                $("#parameters").css("display", "block");
-                $(".cont").each(function(){
-                    var container = $(this);
-                    container.find(".imgs_answers").find(".img_block").each(function(){
-                        $(this).appendTo(container.find(".imgs_cont"))
-                    });
-                    container.find(".imgs_answers").remove();
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".text_cont").attr("contenteditable","true");
-                    
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block").each(function(){
-                        $(this).draggable("destroy");
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
-                        .css("float","left");
-                        $("<div class='close_img'>").appendTo($(this));
-                        $("<div class='clear_img'>").appendTo($(this));
-                        if($(this).find("input").val() == "1"){
-                            $("<div class='false_img'>").appendTo($(this));
-                        }
-                        else{
-                            $("<div class='true_img'>").appendTo($(this));
-                        }
-                    });
-                    container.find(".imgs_cont").append(add_img)
-                });                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
-                $(this).css("display", "none");
-                $("#wgt_display").css("display", "block");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();        
-    });
-    
-    //cleaning an image
-    $(".clear_img").live("click",function(){
-        $(this).parent().find("img").attr("src","img/drop_img.png");
-    });
-    
-    //correct image
-    $(".true_img").live("click",function(){        
-        $(this).parent().parent().find(".img_block").each(function(){
-            $(this).find("input").val(0);
-            var tmp_div = $(this).find(".false_img");
-            if(tmp_div)
-                tmp_div.removeClass("false_img").addClass("true_img");
-        })
-        $(this).parent().find("input").val(1);
-        $(this).removeClass("true_img").addClass("false_img");
-    });
-    
-    //wrong image
-    $(".false_img").live("click",function(){
-        $(this).parent().find("input").val(0);
-        $(this).removeClass("false_img").addClass("true_img");
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#wgt_edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.style = $("#style_select").find("option:selected").val();
-            cont_obj.text = $(this).find(".text_cont").text();
-            cont_obj.mode = "edit";
-            cont_obj.imgs = [];
-            $(this).find(".img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.style = $("#style_select").find("option:selected").val();
-            cont_obj.text = $(this).find(".text_cont").text();
-            cont_obj.mode = "display";
-            cont_obj.imgs = [];
-            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
-                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
-                var img_obj = new Object();
-                img_obj.value = tmp_cont.find("input").val();
-                img_obj.link = tmp_cont.find("img").attr("src");
-                img_obj.ht = tmp_cont.find("img").height();
-                img_obj.wd = tmp_cont.find("img").width();
-                img_obj.cont = "answers";
-                cont_obj.imgs.push(img_obj);
-            }
-            $(this).find(".imgs_cont .img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                img_obj.cont = "cont";
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    
-    if($(".cont").size() == 0){
-        var cont_obj = new Object();
-        cont_obj.style = $("#style_select").find("option:selected").val();
-        cont_obj.tmp = "clear";
-        array_to_export.push(cont_obj);
-    }
-    
-    if(window.sankore)
-        sankore.setPreference("associer", JSON.stringify(array_to_export));    
-}
-
-//import
-function importData(data){
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].tmp){
-            changeStyle(data[i].style);
-            $("#style_select").val(data[i].style);
-        } else {
-            if(i == 0){
-                changeStyle(data[i].style);
-                $("#style_select").val(data[i].style);
-            }
-            if(data[i].mode == "edit"){          
-                var tmp_array = [];
-                var container = $("<div class='cont'>");
-                var sub_container = $("<div class='sub_cont'>").appendTo(container);
-                var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-                var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-                var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-                var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-        
-                for(var j in data[i].imgs){
-                    var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                    var img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
-                    
-                    img.height(data[i].imgs[j].ht);
-                      
-                    if((120 - data[i].imgs[j].ht) > 0)
-                        img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-
-
-                    var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                    img_block.append(hidden_input).append(img);
-                    tmp_array.push(img_block);
-                    
-                }
-                tmp_array = shuffle(tmp_array);
-                for(j in tmp_array){
-                    tmp_array[j].draggable({
-                        helper:'clone',
-                        zIndex:100,
-                        appendTo: '#data'
-                    });
-                    tmp_array[j].appendTo(imgs_container);
-                }
-                imgs_answers.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            if($(this).children()[0].tagName == "IMG")
-                                $(this).children().remove();
-                            else
-                                $(ui.draggable).parent().append($(this).children());
-                            $(this).append($(ui.draggable));  
-                            if($(this).children().length == 1){                
-                                if($(this).children().find("input").val() == "1")
-                                    $(this).removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    $(this).removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }                    
-                        }
-                    }
-                });
-                imgs_container.droppable({
-                    hoverClass: 'dropBack',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            if(this != $(ui.draggable).parent()[0]){
-                                var tmp_cont = $(ui.draggable).parent();
-                                $(this).append($(ui.draggable));
-                                tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                                var answers = "";
-                                $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                    answers += $(this).find("input").val();
-                                });
-                                if(tmp_cont.children()[0].tagName == "IMG")
-                                    tmp_cont.removeClass("imgs_answers_green")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_gray");
-                                else
-                                if(tmp_cont.children().length == 1){                
-                                    if(tmp_cont.children().find("input").val() == "1")
-                                        tmp_cont.removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_green");
-                                    else
-                                        tmp_cont.removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_green")
-                                        .addClass("imgs_answers_red");
-                                }    
-                            }
-                        }
-                    }
-                }); 
-                container.appendTo("#data");
-            } else {
-                container = $("<div class='cont'>");
-                sub_container = $("<div class='sub_cont'>").appendTo(container);
-                imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
-                $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
-                imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-                number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-                text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-        
-                for(j in data[i].imgs){
-                    img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                    img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
-                    img.height(data[i].imgs[j].ht);
-                    if((120 - data[i].imgs[j].ht) > 0)
-                        img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                    hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                    img_block.append(hidden_input).append(img);
-                    img_block.draggable({
-                        helper:'clone',
-                        zIndex:100,
-                        appendTo: '#data'
-                    });
-                    if(data[i].imgs[j].cont == "cont")
-                        img_block.appendTo(imgs_container);
-                    else{
-                        imgs_answers.empty();
-                        img_block.appendTo(imgs_answers);
-                        if(data[i].imgs[j].value == "1")
-                            imgs_answers.addClass("imgs_answers_green");
-                        else
-                            imgs_answers.addClass("imgs_answers_red");
-                    }
-                }
-            
-                imgs_answers.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            if($(this).children()[0].tagName == "IMG")
-                                $(this).children().remove();
-                            else
-                                $(ui.draggable).parent().append($(this).children());
-                            $(this).append($(ui.draggable));  
-                            if($(this).children().length == 1){                
-                                if($(this).children().find("input").val() == "1")
-                                    $(this).removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    $(this).removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }                    
-                        }
-                    }
-                });
-                imgs_container.droppable({
-                    hoverClass: 'dropBack',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            if(this != $(ui.draggable).parent()[0]){
-                                var tmp_cont = $(ui.draggable).parent();
-                                $(this).append($(ui.draggable));
-                                tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                                var answers = "";
-                                $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                    answers += $(this).find("input").val();
-                                });
-                                if(tmp_cont.children()[0].tagName == "IMG")
-                                    tmp_cont.removeClass("imgs_answers_green")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_gray");
-                                else
-                                if(tmp_cont.children().length == 1){                
-                                    if(tmp_cont.children().find("input").val() == "1")
-                                        tmp_cont.removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_green");
-                                    else
-                                        tmp_cont.removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_green")
-                                        .addClass("imgs_answers_red");
-                                }    
-                            }
-                        }
-                    }
-                }); 
-                container.appendTo("#data");
-            }
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    changeStyle("3");
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("#data");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    
-    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img1);
-    $("<img src=\"objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img2);
-    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img3);
-    $("<img src=\"objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img4);
-    $("<img src=\"objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img5);
-    $("<img src=\"objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: '#data'
-        });
-        tmp_array[i].appendTo(imgs_container);
-    }
-    imgs_answers.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if($(this).children()[0].tagName == "IMG")
-                    $(this).children().remove();
-                else
-                    $(ui.draggable).parent().append($(this).children());
-                $(this).append($(ui.draggable));  
-                if($(this).children().length == 1){                
-                    if($(this).children().find("input").val() == "1")
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_green");
-                    else
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_green")
-                        .addClass("imgs_answers_red");
-                }                    
-            }
-        }
-    });
-    imgs_container.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_cont = $(ui.draggable).parent();
-                    $(this).append($(ui.draggable));
-                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                    var answers = "";
-                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                        answers += $(this).find("input").val();
-                    });
-                    if(tmp_cont.children()[0].tagName == "IMG")
-                        tmp_cont.removeClass("imgs_answers_green")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_gray");
-                    else
-                    if(tmp_cont.children().length == 1){                
-                        if(tmp_cont.children().find("input").val() == "1")
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_red")
-                            .addClass("imgs_answers_green");
-                        else
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_green")
-                            .addClass("imgs_answers_red");
-                    }    
-                }
-            }
-        }
-    });
-}
-
-//changing the style
-function changeStyle(val){
-    switch(val){
-        case "1":
-            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
-            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
-            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
-            $("#wgt_name").removeClass("pad_color");
-            $("#wgt_display").addClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").addClass("radius_ft");
-            break;
-        case "2":
-            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").removeClass("radius_ft");
-            break;
-        case "3":
-            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
-            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
-            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
-            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
-            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
-            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
-            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
-            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").addClass("without_radius").removeClass("radius_ft");
-            break;
-    }
-}
-
-
-//check result
-function checkResult(event)
-{
-    var str = "";
-    var right_str = $(event.target).find("input").val();
-    $(event.target).find(".img_block").each(function(){
-        str += $(this).find("input").val() + "*";
-    });
-    if(str == right_str)
-        $(event.target).css("background-color","#9f9");
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addImgBlock(dest){
-    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
-    $("<div class='close_img'>").appendTo(img_block);
-    $("<div class='clear_img'>").appendTo(img_block);
-    $("<div class='true_img'>").appendTo(img_block);
-    $("<input type='hidden' value='0'/>").appendTo(img_block);
-    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    $(obj).find("img").remove();
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_img = $("<img/>").attr("src", tmp);
-        $(obj).append(tmp_img);
-        setTimeout(function(){
-            if(tmp_img.height() >= tmp_img.width())
-                tmp_img.attr("height", "120");
-            else{
-                tmp_img.attr("width","120");
-                var h = tmp_img.height();
-                tmp_img.attr("height",h);
-                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-            }
-        }, 6)
-        
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/en/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/en/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/en/index.html b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/en/index.html
new file mode 100644
index 0000000..80dad5f
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/en/index.html	
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){ 
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/en/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/en/js/script.js
new file mode 100644
index 0000000..210ec7e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/en/js/script.js	
@@ -0,0 +1,806 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    short_desc: "Select the number \"three\".", 
+    add: "Add new block",
+    enter: "Enter your instruction here ...",
+    wgt_name: "Associate images",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p> <h2>Associate images</h2> </p>" +
+"<p> <h3>Choose the correct picture</h3> </p>" +
+"<p> Drag and drop the image in the correct area. If the result is incorrect, the area turns in red. If the result is correct, the area turns in green. </p> "+
+"<p> Reload “button” resets the exercises. </p>" +
+"<p> Enter the “Edit” mode to :</p>" +
+"<ul> <li> choose the theme of the App : pad, slate, or none (by default : none), </li>" +
+"<li> modify the exercise.</li> </ul>" +
+
+"<p>In edition mode : </p>" +
+"<ul><li>click on the text field to change the instruction,</li>" +
+"<li>add picture frames clicking on the “+”,</li>" +
+"<li>drag an drop pictures from your library,</li>" +
+"<li>set the correct image of your activity clicking on the submit button “v” on the frame,</li>" +
+"<li>delete a frame clicking on the cross button on the frame,</li>" +
+"<li>replace a picture clicking on the reload icon on the frame,</li>" +
+"<li>“Display” button comes back to the activity.</li></ul>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("associer","")){
+            var data = jQuery.parseJSON(sankore.preference("associer",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display", "none");
+//                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_array = [];
+                    
+                    container.find(".text_cont").removeAttr("contenteditable");
+                    container.find(".add_img").remove();
+//                    container.find(".close_cont").remove();
+                    container.find(".img_block").each(function(){
+                        if($(this).find("img").attr("src") != "img/drop_img.png"){
+                            $(this).find(".close_img").remove();
+                            $(this).find(".clear_img").remove();
+                            $(this).find(".true_img").remove();
+                            $(this).find(".false_img").remove();
+                            $(this).removeAttr("ondragenter")
+                            .removeAttr("ondragleave")
+                            .removeAttr("ondragover")
+                            .removeAttr("ondrop")
+                            .addClass("img_gray");
+                        } else 
+                            $(this).remove();
+                    });
+                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
+                    container.find(".img_block").each(function(){
+                        $(this).css("float","");
+                        tmp_array.push($(this));
+                    });                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(container.find(".imgs_cont"));
+                    }
+                    
+                    img_answers.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if($(this).children()[0].tagName == "IMG")
+                                    $(this).children().remove();
+                                else
+                                    $(ui.draggable).parent().append($(this).children());
+                                $(this).append($(ui.draggable));  
+                                if($(this).children().length == 1){                
+                                    if($(this).children().find("input").val() == "1")
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }                    
+                            }
+                        }
+                    });
+                    
+                    container.find(".imgs_cont").droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_cont = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                    var answers = "";
+                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                        answers += $(this).find("input").val();
+                                    });
+                                    if(tmp_cont.children()[0].tagName == "IMG")
+                                        tmp_cont.removeClass("imgs_answers_green")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_gray");
+                                    else
+                                    if(tmp_cont.children().length == 1){                
+                                        if(tmp_cont.children().find("input").val() == "1")
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_red")
+                                            .addClass("imgs_answers_green");
+                                        else
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_green")
+                                            .addClass("imgs_answers_red");
+                                    }    
+                                }
+                            }
+                        }
+                    });
+                });
+                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display", "block");
+                $(".cont").each(function(){
+                    var container = $(this);
+                    container.find(".imgs_answers").find(".img_block").each(function(){
+                        $(this).appendTo(container.find(".imgs_cont"))
+                    });
+                    container.find(".imgs_answers").remove();
+//                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".text_cont").attr("contenteditable","true");
+                    
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block").each(function(){
+                        $(this).draggable("destroy");
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
+                        .css("float","left");
+                        $("<div class='close_img'>").appendTo($(this));
+                        $("<div class='clear_img'>").appendTo($(this));
+                        if($(this).find("input").val() == "1"){
+                            $("<div class='false_img'>").appendTo($(this));
+                        }
+                        else{
+                            $("<div class='true_img'>").appendTo($(this));
+                        }
+                    });
+                    container.find(".imgs_cont").append(add_img)
+                });                
+                
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();        
+    });
+    
+    //cleaning an image
+    $(".clear_img").live("click",function(){
+        $(this).parent().find("img").attr("src","img/drop_img.png");
+    });
+    
+    //correct image
+    $(".true_img").live("click",function(){        
+        $(this).parent().parent().find(".img_block").each(function(){
+            $(this).find("input").val(0);
+            var tmp_div = $(this).find(".false_img");
+            if(tmp_div)
+                tmp_div.removeClass("false_img").addClass("true_img");
+        })
+        $(this).parent().find("input").val(1);
+        $(this).removeClass("true_img").addClass("false_img");
+    });
+    
+    //wrong image
+    $(".false_img").live("click",function(){
+        $(this).parent().find("input").val(0);
+        $(this).removeClass("false_img").addClass("true_img");
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.text = $(this).find(".text_cont").text();
+            cont_obj.mode = "edit";
+            cont_obj.imgs = [];
+            $(this).find(".img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src").replace("../../","");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.text = $(this).find(".text_cont").text();
+            cont_obj.mode = "display";
+            cont_obj.imgs = [];
+            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
+                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
+                var img_obj = new Object();
+                img_obj.value = tmp_cont.find("input").val();
+                img_obj.link = tmp_cont.find("img").attr("src").replace("../../","");
+                img_obj.ht = tmp_cont.find("img").height();
+                img_obj.wd = tmp_cont.find("img").width();
+                img_obj.cont = "answers";
+                cont_obj.imgs.push(img_obj);
+            }
+            $(this).find(".imgs_cont .img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src").replace("../../","");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                img_obj.cont = "cont";
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    
+    if(window.sankore)
+        sankore.setPreference("associer", JSON.stringify(array_to_export));    
+}
+
+//import
+function importData(data){   
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        } else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            if(data[i].mode == "edit"){          
+                var tmp_array = [];
+                var container = $("<div class='cont'>");
+                var sub_container = $("<div class='sub_cont'>").appendTo(container);
+                var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+                var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+//                var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+                var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+        
+                for(var j in data[i].imgs){
+                    var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                    var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");                    
+                    img.height(data[i].imgs[j].ht);                      
+                    if((120 - data[i].imgs[j].ht) > 0)
+                        img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                    var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                    img_block.append(hidden_input).append(img);
+                    tmp_array.push(img_block);                    
+                }
+                tmp_array = shuffle(tmp_array);
+                for(j in tmp_array){
+                    tmp_array[j].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    tmp_array[j].appendTo(imgs_container);
+                }
+                imgs_answers.droppable({
+                    hoverClass: 'dropHere',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if($(this).children()[0].tagName == "IMG")
+                                $(this).children().remove();
+                            else
+                                $(ui.draggable).parent().append($(this).children());
+                            $(this).append($(ui.draggable));  
+                            if($(this).children().length == 1){                
+                                if($(this).children().find("input").val() == "1")
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }                    
+                        }
+                    }
+                });
+                imgs_container.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_cont = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                var answers = "";
+                                $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                    answers += $(this).find("input").val();
+                                });
+                                if(tmp_cont.children()[0].tagName == "IMG")
+                                    tmp_cont.removeClass("imgs_answers_green")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_gray");
+                                else
+                                if(tmp_cont.children().length == 1){                
+                                    if(tmp_cont.children().find("input").val() == "1")
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }    
+                            }
+                        }
+                    }
+                }); 
+                container.appendTo("#data");
+            } else {
+                container = $("<div class='cont'>");
+                sub_container = $("<div class='sub_cont'>").appendTo(container);
+                imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
+                $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
+                imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+//                number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+                text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+        
+                for(j in data[i].imgs){
+                    img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                    img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                    img.height(data[i].imgs[j].ht);
+                    if((120 - data[i].imgs[j].ht) > 0)
+                        img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                    hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                    img_block.append(hidden_input).append(img);
+                    img_block.draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    if(data[i].imgs[j].cont == "cont")
+                        img_block.appendTo(imgs_container);
+                    else{
+                        imgs_answers.empty();
+                        img_block.appendTo(imgs_answers);
+                        if(data[i].imgs[j].value == "1")
+                            imgs_answers.addClass("imgs_answers_green");
+                        else
+                            imgs_answers.addClass("imgs_answers_red");
+                    }
+                }
+            
+                imgs_answers.droppable({
+                    hoverClass: 'dropHere',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if($(this).children()[0].tagName == "IMG")
+                                $(this).children().remove();
+                            else
+                                $(ui.draggable).parent().append($(this).children());
+                            $(this).append($(ui.draggable));  
+                            if($(this).children().length == 1){                
+                                if($(this).children().find("input").val() == "1")
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }                    
+                        }
+                    }
+                });
+                imgs_container.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_cont = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                var answers = "";
+                                $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                    answers += $(this).find("input").val();
+                                });
+                                if(tmp_cont.children()[0].tagName == "IMG")
+                                    tmp_cont.removeClass("imgs_answers_green")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_gray");
+                                else
+                                if(tmp_cont.children().length == 1){                
+                                    if(tmp_cont.children().find("input").val() == "1")
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }    
+                            }
+                        }
+                    }
+                }); 
+                container.appendTo("#data");
+            }
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+    
+    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img1);
+    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img3);
+    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img4);
+    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img5);
+    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].appendTo(imgs_container);
+    }
+    imgs_answers.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if($(this).children()[0].tagName == "IMG")
+                    $(this).children().remove();
+                else
+                    $(ui.draggable).parent().append($(this).children());
+                $(this).append($(ui.draggable));  
+                if($(this).children().length == 1){                
+                    if($(this).children().find("input").val() == "1")
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_green");
+                    else
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_green")
+                        .addClass("imgs_answers_red");
+                }                    
+            }
+        }
+    });
+    imgs_container.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_cont = $(ui.draggable).parent();
+                    $(this).append($(ui.draggable));
+                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                    var answers = "";
+                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                        answers += $(this).find("input").val();
+                    });
+                    if(tmp_cont.children()[0].tagName == "IMG")
+                        tmp_cont.removeClass("imgs_answers_green")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_gray");
+                    else
+                    if(tmp_cont.children().length == 1){                
+                        if(tmp_cont.children().find("input").val() == "1")
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_red")
+                            .addClass("imgs_answers_green");
+                        else
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_green")
+                            .addClass("imgs_answers_red");
+                    }    
+                }
+            }
+        }
+    });
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+
+//check result
+function checkResult(event)
+{
+    var str = "";
+    var right_str = $(event.target).find("input").val();
+    $(event.target).find(".img_block").each(function(){
+        str += $(this).find("input").val() + "*";
+    });
+    if(str == right_str)
+        $(event.target).css("background-color","#9f9");
+}
+
+//add new container
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+//    
+//    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+//    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
+
+//add new img block
+function addImgBlock(dest){
+    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
+    $("<div class='close_img'>").appendTo(img_block);
+    $("<div class='clear_img'>").appendTo(img_block);
+    $("<div class='true_img'>").appendTo(img_block);
+    $("<input type='hidden' value='0'/>").appendTo(img_block);
+    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
+}
+
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+function onDropTarget(obj, event) {
+    $(obj).find("img").remove();
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_img = $("<img/>").attr("src", "../../" + tmp);
+        $(obj).append(tmp_img);
+        setTimeout(function(){
+            if(tmp_img.height() >= tmp_img.width())
+                tmp_img.attr("height", "120");
+            else{
+                tmp_img.attr("width","120");
+                var h = tmp_img.height();
+                tmp_img.attr("height",h);
+                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+            }
+        }, 6)
+        
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/js/script.js
index 3895c03..bd04b5e 100644
--- a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/js/script.js	
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/js/script.js	
@@ -19,19 +19,16 @@ var sankoreLang = {
 
     "<p>Le bouton “Modifier” vous permet :</p>"+
     "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun), </li>"+
-    "<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité.</li></ul>"+
+    "<li>de modifier l'exercice.</li></ul>"+
 
-    "<p>En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, puis</p>"+
-    "<ul><li>insérez une consigne en cliquant sur le champ de texte “Saisir la consigne ici ...”, </li>"+
+    "<p>En mode édition :</p>"+
+    "<ul><li>changez la consigne en cliquant sur le champ de texte, </li>"+
     "<li>ajoutez des zones image en cliquant sur le gros signe + en dessous, </li>"+
     "<li>insérez des images dans ces zones par glisser-déposer des images à partir de votre bibliothèque, </li>"+
-    "<li>définissez l’image correcte de l’interactivité en cliquant sur le bouton valider “v” situé en bas à droite de l’image concernée.</li></ul>"+
-    "<p>Pour supprimer une zone image, cliquez sur la croix située dans le coin supérieur droit de l’image.</p>"+
-    "<p>Pour changer d’image, cliquez sur l’icône située au milieu à droite de l’image.</p>"+ 
-
-    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
-
-    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    "<li>définissez l’image correcte de l’interactivité en cliquant sur le bouton valider “v” situé en bas à droite de l’image concernée,</li>"+
+    "<li>supprimez une zone image, en cliquant sur la croix située dans son coin supérieur droit,</li>"+
+    "<li>changez d’image en cliquant sur l’icône située au milieu à droite de celle-ci,</li>"+ 
+    "<li>le bouton “Afficher” vous permet d’utiliser l’activité.</li></ul>",
     theme: "Thème"
 };
 
@@ -108,7 +105,7 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display", "none");
-                $(".add_block").remove();
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     var tmp_i = 0;
@@ -116,7 +113,7 @@ function start(){
                     
                     container.find(".text_cont").removeAttr("contenteditable");
                     container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     container.find(".img_block").each(function(){
                         if($(this).find("img").attr("src") != "img/drop_img.png"){
                             $(this).find(".close_img").remove();
@@ -218,7 +215,7 @@ function start(){
                         $(this).appendTo(container.find(".imgs_cont"))
                     });
                     container.find(".imgs_answers").remove();
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find(".text_cont").attr("contenteditable","true");
                     
                     var add_img = $("<div class='add_img'>");
@@ -241,7 +238,7 @@ function start(){
                     container.find(".imgs_cont").append(add_img)
                 });                
                 
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
@@ -249,20 +246,20 @@ function start(){
     });
     
     //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
+//    
     //adding new img
     $(".add_img").live("click", function(){
         addImgBlock($(this));
     });
     
     //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
     $(".close_img").live("click", function(){
@@ -357,8 +354,7 @@ function exportData(){
 
 //import
 function importData(data){
-    
-    var tmp = 0;    
+  
     for(var i in data){
         if(data[i].tmp){
             changeStyle(data[i].style);
@@ -375,7 +371,7 @@ function importData(data){
                 var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
                 var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
         
-                var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//                var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
                 var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
         
                 for(var j in data[i].imgs){
@@ -458,7 +454,7 @@ function importData(data){
                 $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
                 imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
         
-                number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//                number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
                 text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
         
                 for(j in data[i].imgs){
@@ -556,7 +552,7 @@ function showExample(){
     var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
     var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
 
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
     var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
     
     $("<input type='hidden' value='1'/>").appendTo(imgs_container);
@@ -713,19 +709,19 @@ function checkResult(event)
 }
 
 //add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+//    
+//    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+//    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
 
 //add new img block
 function addImgBlock(dest){
@@ -737,12 +733,12 @@ function addImgBlock(dest){
     $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
 }
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 //shuffles an array
 function shuffle( arr )
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/js/script.js
index 1ada2d4..7d0b955 100644
--- a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/js/script.js	
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/js/script.js	
@@ -88,7 +88,7 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display", "none");
-                $(".add_block").remove();
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     var tmp_i = 0;
@@ -96,7 +96,7 @@ function start(){
                     
                     container.find(".text_cont").removeAttr("contenteditable");
                     container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     container.find(".img_block").each(function(){
                         if($(this).find("img").attr("src") != "img/drop_img.png"){
                             $(this).find(".close_img").remove();
@@ -198,7 +198,7 @@ function start(){
                         $(this).appendTo(container.find(".imgs_cont"))
                     });
                     container.find(".imgs_answers").remove();
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find(".text_cont").attr("contenteditable","true");
                     
                     var add_img = $("<div class='add_img'>");
@@ -221,7 +221,7 @@ function start(){
                     container.find(".imgs_cont").append(add_img)
                 });                
                 
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
@@ -229,20 +229,20 @@ function start(){
     });
     
     //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
+//    
     //adding new img
     $(".add_img").live("click", function(){
         addImgBlock($(this));
     });
     
     //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
     $(".close_img").live("click", function(){
@@ -337,8 +337,7 @@ function exportData(){
 
 //import
 function importData(data){
-    
-    var tmp = 0;    
+       
     for(var i in data){
         if(data[i].tmp){
             changeStyle(data[i].style);
@@ -355,7 +354,7 @@ function importData(data){
                 var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
                 var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
         
-                var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//                var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
                 var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
         
                 for(var j in data[i].imgs){
@@ -438,7 +437,7 @@ function importData(data){
                 $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
                 imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
         
-                number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//                number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
                 text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
         
                 for(j in data[i].imgs){
@@ -536,7 +535,7 @@ function showExample(){
     var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
     var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
 
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
     var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
     
     $("<input type='hidden' value='1'/>").appendTo(imgs_container);
@@ -693,19 +692,19 @@ function checkResult(event)
 }
 
 //add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+//    
+//    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+//    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
 
 //add new img block
 function addImgBlock(dest){
@@ -717,12 +716,12 @@ function addImgBlock(dest){
     $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
 }
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 //shuffles an array
 function shuffle( arr )
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/config.xml
index b30123b..8dc1299 100644
--- a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/config.xml	
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/config.xml	
@@ -1,16 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://uniboard.mnemis.com/widgets/notes" 
-        version="1.2"
-        width="950"
-        height="600" 
-        ub:resizable="true">     
-   
-		<name>Notes</name>
-		<author href="http://www.getuniboard.com"
-	            email="info at mnemis.com">Mnemis SA</author>
-		<description>Associer images</description>
-		
-		<content src="index.html"/>
-</widget>
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://uniboard.mnemis.com/widgets/notes" 
+        version="1.2"
+        width="950"
+        height="560" 
+		minimum_height="300"
+		minimum_width="710"
+        ub:resizable="false">     
+		<name>Notes</name>
+		<author href="http://www.getuniboard.com"
+	            email="info at mnemis.com">Mnemis SA</author>
+		<description>Associer images</description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/css/basic.css
index d6bfe05..2ac889d 100644
--- a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/css/basic.css	
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/css/basic.css	
@@ -1,471 +1,470 @@
-html, body{
-    width: 100%;
-    height: 100%;
-    margin: 0;
-    padding: 0;
-    border-radius: 35px;
-    overflow: hidden;
-    font-family: sans-serif;
-}
-
-body{
-    background-image: url(../img/bg.png);
-}
-
-.toggle_mode{
-    width: 100%;
-    height: 25px;
-    border-bottom: 1px solid black;
-    background-color: #ccc;
-    position: fixed;
-    top: 0;
-    left: 0;
-    z-index: 2;
-}
-
-#display_img, #edit_img{
-    width: 15px;
-    height: 15px;
-    margin: 5px 10px;
-}
-
-#display_text, #edit_text{
-    height: 19px;
-    padding: 3px 0 0 0;
-}
-
-.selected{
-    
-}
-
-#display:hover, #edit:hover{
-    background-color: #999;
-}
-
-.cont{
-    width: 100%;
-    border-bottom: 1px solid black;
-    margin: 0;
-    padding: 0;
-    position: relative;
-}
-
-.sub_cont{
-    width: 100%;
-    padding: 0;
-    margin: 20px 0 0 0;
-    min-height: 60px;
-}
-
-.imgs_cont{
-    width: 100%;
-    min-height: 142px;
-    margin: 0;
-}
-
-.imgs_answers{
-    width: 162px;
-    margin: 0 auto;
-    margin-bottom: 10px;
-    min-height: 142px;
-    border: 2px dashed #ccc;
-    text-align: center;
-}
-
-.imgs_answers_gray{
-    
-}
-
-.imgs_answers_green{
-    background-color: #9f9;
-}
-
-.imgs_answers_red{
-    background-color: #f99;
-}
-
-.number_cont{
-    width: 40px;
-    height: 33px;
-    margin-left: 40px;
-    margin-right: 10px;
-    background-image: url(../img/circle.png);
-    background-repeat: no-repeat;
-    text-align: center;
-    float: left;
-    font-size: 130%;
-    padding-top: 7px;
-    font-weight: bold;
-}
-
-.text_cont{
-    width: 80%;
-    min-height: 40px;
-    max-height: 60px;
-    float: right;
-    background-color: #999;
-    border-top-left-radius: 20px;
-    border-bottom-left-radius: 20px;
-}
-
-.close_cont{
-    width: 20px;
-    height: 20px;
-    background-image: url(../img/close_cont.png);
-    cursor: pointer;
-    position: absolute;
-    top: -15px;
-    left: 5px;
-}
-
-.add_img{
-    width: 120px;
-    height: 120px;
-    margin: 10px 20px;
-    background-image: url(../img/add_img.png);
-    background-position: center;
-    background-repeat: no-repeat;
-    cursor: pointer;
-    display: inline-block;
-}
-
-.img_block{
-    width: 120px;
-    height: 120px;
-    margin: 10px 20px;
-    cursor: pointer;
-    display: inline-block;
-    position: relative;
-}
-
-.img_gray{
-    border: 1px solid #ccc;
-    -moz-box-shadow: #ccc -1px 0 4px;
-    -webkit-box-shadow: #ccc -1px 0 4px;
-    box-shadow: #ccc -1px 0 4px;
-}
-
-.close_img, .true_img, .false_img{
-    width: 30px;
-    height: 30px;
-    background-repeat: no-repeat;
-    position: absolute;
-    right: -15px;
-    cursor: pointer;
-}
-
-.close_img{    
-    background-image: url(../img/close_img.png);    
-    top: -15px;   
-}
-
-.true_img{
-    background-image: url(../img/false.png);
-    top: 15px;
-}
-
-.false_img{
-    background-image: url(../img/true.png);
-    top: 15px;
-}
-
-.add_block{
-    margin: 20px 0 0 20px;
-    width: 110px;
-    height: 25px;
-    background-image: url(../img/add_block.png);
-    background-repeat: no-repeat;
-    padding-left: 40px;
-    padding-top: 5px;
-    cursor: pointer;
-    background-color: #ccc;
-    -webkit-border-radius: 15px;
-    border-radius: 15px;    
-}
-
-.dropHere{
-    background-color: #ccc;
-}
-
-.dropBack{
-
-}
-
-.audio_block{
-    width: 120px;
-    height: 30px;
-    padding: 5px 0 5px 10px;    
-    float: left;
-    border-right: 3px solid white;
-}
-
-.audio_gray{
-    border-top-left-radius: 15px;
-    border-bottom-left-radius: 15px;
-    background-color: white;
-}
-
-.audio_desc{
-    width: 73%;
-    max-height: 40px;
-    overflow-x: hidden;
-    float: right;
-    margin-left: 20px;
-    word-break: break-all;
-}
-
-.play, .stop{
-    height: 30px;
-    width: 70px;    
-    float: left;
-    cursor: pointer;
-}
-
-.play{
-    background-image: url(../img/play.png);
-}
-
-.stop{
-    background-image: url(../img/stop.png);
-}
-
-.replay{
-    height: 30px;
-    width: 32px;
-    margin-left: 10px;
-    float: left;
-    background-image: url(../img/replay.png);
-    background-repeat: no-repeat;
-    cursor: pointer;
-}
-
-.gray{
-    background-color: #ccc;
-}
-
-/*new design*/
-
-.body_table{
-    width: 100%;
-    height: 100%;
-    border-spacing: 0;
-}
-
-/*top*/
-
-.b_top_left{
-    width: 54px;
-    background-image: url(../img/top_left.png);
-    background-repeat: no-repeat;
-}
-
-.b_top_right{
-    width: 54px;
-    background-image: url(../img/top_right.png);
-    background-repeat: no-repeat;
-}
-
-.b_top_center{
-    height: 54px;
-    background-image: url(../img/top.png);
-    background-repeat: repeat-x;
-}
-
-/*bottom*/
-
-.b_bottom_left{
-    width: 54px;
-    background-image: url(../img/bottom_left.png);
-    background-repeat: no-repeat;
-}
-
-.b_bottom_right{
-    width: 54px;
-    background-image: url(../img/bottom_right.png);
-    background-repeat: no-repeat;
-}
-
-.b_bottom_center{
-    background-image: url(../img/bottom.png);
-    background-repeat: repeat-x;
-}
-
-/*center*/
-
-.b_center_left{
-    width: 54px;
-    background-image: url(../img/left.png);
-    background-repeat: repeat-y;
-}
-
-.b_center_right{
-    width: 54px;
-    background-image: url(../img/right.png);
-    background-repeat: repeat-y;
-}
-
-#data{
-    width: 100%;
-    height: 100%;    
-    min-height: 250px;
-    overflow: auto;
-}
-
-#wgt_name{
-    height: 44px;
-    margin: 10px 10px 0 10px;
-    padding: 0;
-    float: left;
-    font-family: sans-serif;
-    font-size: 24px;
-    color: #7F613F;
-    text-shadow: #FFDCA9 0 1px 0;
-}
-
-#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
-    cursor: pointer;
-    margin: 10px 10px 0 0;
-    float: right;
-    font-family: sans-serif;
-    font-size: 24px;    
-    line-height: 32px;
-}
-
-#wgt_display{
-    padding-left: 35px;
-    background: url(../img/toolbar-edit.png) left -32px no-repeat;
-    color: white;
-    display: none;
-}
-
-#wgt_edit{    
-    padding-left: 35px;
-    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
-    color: #7F613F;
-    text-shadow: #FFDCA9 0 1px 0;
-}
-
-#wgt_reload{
-    padding-left: 35px;
-    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
-    color: #7F613F;
-    text-shadow: #FFDCA9 0 1px 0;
-}
-
-.btl_pad{
-    background-image: url(../img/pad-top-left.png) !important;
-}
-
-.btc_pad{
-    background-image: url(../img/pad-top.png) !important;
-}
-
-.btr_pad{
-    background-image: url(../img/pad-top-right.png) !important;
-}
-
-.bcl_pad{
-    background-image: url(../img/pad-left.png) !important;
-}
-
-.bcr_pad{
-    background-image: url(../img/pad-right.png) !important;
-}
-
-.bbl_pad{
-    background-image: url(../img/pad-bottom-left.png) !important;
-}
-
-.bbc_pad{
-    background-image: url(../img/pad-bottom.png) !important;
-}
-
-.bbr_pad{
-    background-image: url(../img/pad-bottom-right.png) !important;
-}
-
-.without_radius{
-    border-radius: 0 !important;
-}
-
-.without_back{
-    background: none !important;
-}
-
-.pad_color{
-    color: #FC9 !important;
-    text-shadow: none !important;
-}
-
-.pad_reload{
-    background: url(../img/toolbar-reload.png) left top no-repeat !important;
-}
-
-.pad_edit{
-    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
-}
-
-.pad_help{
-    background: url(../img/toolbar-help.png) left top no-repeat !important;
-}
-
-.help_wood{
-    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
-    color: white !important;
-    text-shadow: #7F613F 0 -1px 0 !important;
-}
-
-.help_pad{
-    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
-    color: white !important;
-}
-
-#wgt_help{
-    padding-left: 35px;
-    background: url(../img/slate-toolbar-help.png) left top no-repeat;
-    color: #7F613F;
-    text-shadow: #FFDCA9 0 1px 0;
-}
-
-#help{
-    height: 100%;    
-    overflow: auto;
-    display: none;
-    background-color: #ccc;
-    padding: 5px;
-}
-
-.open{
-
-}
-
-#parameters{    
-    display: none;
-    padding: 10px 20px;
-    background: url("../img/parameters-bg.png");
-    border-radius: 4px 4px 0 0;
-}
-
-.inline{
-    display: inline-block;
-    font-family: sans-serif;
-    font-size: 14px;
-    color: #666;
-}
-
-#parameters label {
-    font-style: italic;
-}
-
-#style_select{   
-    margin-left: 10px;
-}
-
-.display_wood{
-    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
-    text-shadow: #7F613F 0 -1px 0;
-}
-
-.radius_ft{
-    border-radius: 45px !important;
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+.toggle_mode{
+    width: 100%;
+    height: 25px;
+    border-bottom: 1px solid black;
+    background-color: #ccc;
+    position: fixed;
+    top: 0;
+    left: 0;
+    z-index: 2;
+}
+
+#display_img, #edit_img{
+    width: 15px;
+    height: 15px;
+    margin: 5px 10px;
+}
+
+#display_text, #edit_text{
+    height: 19px;
+    padding: 3px 0 0 0;
+}
+
+.selected{
+    
+}
+
+#display:hover, #edit:hover{
+    background-color: #999;
+}
+
+.cont{
+    width: 100%;
+    border-bottom: 1px solid black;
+    margin: 0;
+    padding: 0;
+    position: relative;
+}
+
+.sub_cont{
+    width: 100%;
+    padding: 0;
+    margin: 20px 0 0 0;
+    min-height: 60px;
+}
+
+.imgs_cont{
+    width: 100%;
+    min-height: 142px;
+    margin: 0;
+}
+
+.imgs_answers{
+    width: 162px;
+    margin: 0 auto;
+    margin-bottom: 10px;
+    min-height: 142px;
+    border: 2px dashed #ccc;
+    text-align: center;
+}
+
+.imgs_answers_gray{
+    
+}
+
+.imgs_answers_green{
+    background-color: #9f9;
+}
+
+.imgs_answers_red{
+    background-color: #f99;
+}
+
+.number_cont{
+    width: 40px;
+    height: 33px;
+    margin-left: 40px;
+    margin-right: 10px;
+    background-image: url(../img/circle.png);
+    background-repeat: no-repeat;
+    text-align: center;
+    float: left;
+    font-size: 130%;
+    padding-top: 7px;
+    font-weight: bold;
+}
+
+.text_cont{
+    width: 80%;
+    min-height: 40px;
+    max-height: 60px;
+    float: right;
+    background-color: #999;
+    border-top-left-radius: 20px;
+    border-bottom-left-radius: 20px;
+}
+
+.close_cont{
+    width: 20px;
+    height: 20px;
+    background-image: url(../img/close_cont.png);
+    cursor: pointer;
+    position: absolute;
+    top: -15px;
+    left: 5px;
+}
+
+.add_img{
+    width: 120px;
+    height: 120px;
+    margin: 10px 20px;
+    background-image: url(../img/add_img.png);
+    background-position: center;
+    background-repeat: no-repeat;
+    cursor: pointer;
+    display: inline-block;
+}
+
+.img_block{
+    width: 120px;
+    height: 120px;
+    margin: 10px 20px;
+    cursor: pointer;
+    display: inline-block;
+    position: relative;
+}
+
+.img_gray{
+    border: 1px solid #ccc;
+    -moz-box-shadow: #ccc -1px 0 4px;
+    -webkit-box-shadow: #ccc -1px 0 4px;
+    box-shadow: #ccc -1px 0 4px;
+}
+
+.close_img, .true_img, .false_img{
+    width: 30px;
+    height: 30px;
+    background-repeat: no-repeat;
+    position: absolute;
+    right: -15px;
+    cursor: pointer;
+}
+
+.close_img{    
+    background-image: url(../img/close_img.png);    
+    top: -15px;   
+}
+
+.true_img{
+    background-image: url(../img/false.png);
+    top: 15px;
+}
+
+.false_img{
+    background-image: url(../img/true.png);
+    top: 15px;
+}
+
+.add_block{
+    margin: 20px 0 0 20px;
+    width: 110px;
+    height: 25px;
+    background-image: url(../img/add_block.png);
+    background-repeat: no-repeat;
+    padding-left: 40px;
+    padding-top: 5px;
+    cursor: pointer;
+    background-color: #ccc;
+    -webkit-border-radius: 15px;
+    border-radius: 15px;    
+}
+
+.dropHere{
+    background-color: #ccc;
+}
+
+.dropBack{
+
+}
+
+.audio_block{
+    width: 120px;
+    height: 30px;
+    padding: 5px 0 5px 10px;    
+    float: left;
+    border-right: 3px solid white;
+}
+
+.audio_gray{
+    border-top-left-radius: 15px;
+    border-bottom-left-radius: 15px;
+    background-color: white;
+}
+
+.audio_desc{
+    width: 70%;
+    max-height: 40px;
+    overflow-x: hidden;
+    float: right;
+    word-break: break-all;
+}
+
+.play, .stop{
+    height: 30px;
+    width: 70px;    
+    float: left;
+    cursor: pointer;
+}
+
+.play{
+    background-image: url(../img/play.png);
+}
+
+.stop{
+    background-image: url(../img/stop.png);
+}
+
+.replay{
+    height: 30px;
+    width: 32px;
+    margin-left: 10px;
+    float: left;
+    background-image: url(../img/replay.png);
+    background-repeat: no-repeat;
+    cursor: pointer;
+}
+
+.gray{
+    background-color: #ccc;
+}
+
+/*new design*/
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
 }
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/index.html
index 7cc9040..67a98ea 100644
--- a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/index.html	
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/index.html	
@@ -3,86 +3,30 @@
     <head>
         <title>D'n'd</title>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
         <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){  
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
                 
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                $.ajax({
+                    type: 'POST',
+                    url:'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }
+                    }
+                });      
             });
         </script>
     </head>
     <body>       
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>                    
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-       
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="data">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
         
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
     </body>
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/js/script.js
deleted file mode 100644
index 2c1849d..0000000
--- a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/js/script.js	
+++ /dev/null
@@ -1,923 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    short_desc: "How many signals do you hear?", 
-    add: "Add new block",
-    enter: "Enter your instruction here ...",
-    wgt_name: "Associate to the audio",
-    reload: "Reload",
-    slate: "slate",
-    pad: "pad",
-    none: "none",
-    help: "Help",
-    help_content: 
-"<p> <h2>Associate to the audio</h2> </p>" +
-"<p> <h3> Match a picture to a sound</h3> </p>" +
-"<p> Drag and drop the image in the correct area. If the result is incorrect, the area turns in red. If the result is correct, the area turns in green. </p> "+
-"<p> Reload “button” resets the exercises. </p>" +
-"<p> Enter the “Edit” mode to : </ p>" +
-"<ul> <li> choose the theme of the App : pad, slate, or none (by default : none), </li>" +
-"<li> modify an exercise or to create a new one.</li> </ul>" +
-
-"<p>To create a new exercise : </p>" +
-"<ul> <li> click on “New block”,</li>" +
-"<li>insert an instruction the field dragging an audio file from your library, </li>" +
-"<li>add picture frames clicking on the “+”,</ li>" +
-"<li>drag an drop pictures from your library,</ li>" +
-"<li>set the correct image of your activity clicking on the submit button “v” on the frame. </li> </ul>" +
-"<p> To delete a frame, click on the cross button on the frame. </p>" +
-"<p> To replace an audio file, drag a new one from your library. </p>" +
-"<p> To replace a picture, drag a new one from your library. </p>" +
-
-"<p> To delete a whole block, click on the cross on the left.</p>" +
-
-"<p>“Display” button comes back to the activity.</p>",
-    theme: "Theme"
-};
-
-//main function
-function start(){
-
-    $("#wgt_display").text(sankoreLang.display);
-    $("#wgt_edit").text(sankoreLang.edit);
-    $("#wgt_name").text(sankoreLang.wgt_name);
-    $("#wgt_reload").text(sankoreLang.reload);
-    $("#wgt_help").text(sankoreLang.help);
-    $("#help").html(sankoreLang.help_content);
-    $("#style_select option[value='1']").text(sankoreLang.slate);
-    $("#style_select option[value='2']").text(sankoreLang.pad);
-    $("#style_select option[value='3']").text(sankoreLang.none);
-    var tmpl = $("div.inline label").html();
-    $("div.inline label").html(sankoreLang.theme + tmpl)
-    
-    if(window.sankore){
-        if(sankore.preference("associer_sound","")){
-            var data = jQuery.parseJSON(sankore.preference("associer_sound",""));
-            importData(data);
-        }
-        else 
-            showExample();
-        if(sankore.preference("as_snd_style","")){
-            changeStyle(sankore.preference("as_snd_style",""));
-            $("#style_select").val(sankore.preference("as_snd_style",""));
-        } else
-            changeStyle("3")
-    } 
-    else 
-        showExample();
-    
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-            sankore.setPreference("as_snd_style", $("#style_select").find("option:selected").val());
-        }
-    }
-    
-    $("#wgt_help").click(function(){
-        var tmp = $(this);
-        if($(this).hasClass("open")){
-            $(this).removeClass("help_pad").removeClass("help_wood")
-            $("#help").slideUp("100", function(){
-                tmp.removeClass("open");
-                $("#data").show();
-            });
-        } else {
-            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
-            $("#data").hide();
-            $("#help").slideDown("100", function(){
-                tmp.addClass("open");
-            });
-        }
-    });
-    
-    $("#wgt_reload").click(function(){
-        if($("#wgt_display").hasClass("selected")){
-            $("#wgt_edit").trigger("click");
-            $("#wgt_display").trigger("click");
-        } else {
-            $("#wgt_display").trigger("click");
-        }
-    });
-    
-    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
-        exportData();
-    });
-    
-    $("#style_select").change(function (event){
-        changeStyle($(this).find("option:selected").val());
-    })
-    
-    $("#wgt_display, #wgt_edit").click(function(event){
-        if(this.id == "wgt_display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#wgt_edit").removeClass("selected");
-                $("#parameters").css("display", "none");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_array = [];
-                    
-                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
-                    container.find(".audio_block").removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop")
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".img_block").each(function(){
-                        if($(this).find("img").attr("src") != "img/drop_img.png"){
-                            $(this).find(".close_img").remove();
-                            $(this).find(".true_img").remove();
-                            $(this).find(".false_img").remove();
-                            $(this).removeAttr("ondragenter")
-                            .removeAttr("ondragleave")
-                            .removeAttr("ondragover")
-                            .removeAttr("ondrop")
-                            .addClass("img_gray");
-                        } else 
-                            $(this).remove();
-                    });
-                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
-                    container.find(".img_block").each(function(){
-                        $(this).css("float","");
-                        tmp_array.push($(this));
-                    });                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: '#data'
-                        });
-                        tmp_array[i].appendTo(container.find(".imgs_cont"));
-                    }
-                    
-                    img_answers.droppable({
-                        hoverClass: 'dropHere',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if($(this).children()[0].tagName == "IMG")
-                                    $(this).children().remove();
-                                else
-                                    $(ui.draggable).parent().append($(this).children());
-                                $(this).append($(ui.draggable));  
-                                if($(this).children().length == 1){                
-                                    if($(this).children().find("input").val() == "1")
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_green");
-                                    else
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_green")
-                                        .addClass("imgs_answers_red");
-                                }                    
-                            }
-                        }
-                    });
-                    
-                    container.find(".imgs_cont").droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_cont = $(ui.draggable).parent();
-                                    $(this).append($(ui.draggable));
-                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                                    var answers = "";
-                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                        answers += $(this).find("input").val();
-                                    });
-                                    if(tmp_cont.children()[0].tagName == "IMG")
-                                        tmp_cont.removeClass("imgs_answers_green")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_gray");
-                                    else
-                                    if(tmp_cont.children().length == 1){                
-                                        if(tmp_cont.children().find("input").val() == "1")
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_red")
-                                            .addClass("imgs_answers_green");
-                                        else
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_green")
-                                            .addClass("imgs_answers_red");
-                                    }    
-                                }
-                            }
-                        }
-                    });
-                });
-                $(this).css("display", "none");
-                $("#wgt_edit").css("display", "block");
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#wgt_display").removeClass("selected");
-                $("#parameters").css("display", "block");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    container.find(".imgs_answers").find(".img_block").each(function(){
-                        $(this).appendTo(container.find(".imgs_cont"))
-                    });
-                    container.find(".imgs_answers").remove();
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").css("background-color", "");
-                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
-                    container.find(".audio_block").attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
-                    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
-                    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block").each(function(){
-                        $(this).draggable("destroy");
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
-                        .css("float","left");
-                        $("<div class='close_img'>").appendTo($(this));
-                        if($(this).find("input").val() == "1"){
-                            $("<div class='false_img'>").appendTo($(this));
-                        }
-                        else{
-                            $("<div class='true_img'>").appendTo($(this));
-                        }
-                    });
-                    container.find(".imgs_cont").append(add_img)
-                });                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
-                $(this).css("display", "none");
-                $("#wgt_display").css("display", "block");
-            }
-        }
-        
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-        
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();        
-    });
-    
-    //correct image
-    $(".true_img").live("click",function(){        
-        $(this).parent().parent().find(".img_block").each(function(){
-            $(this).find("input").val(0);
-            var tmp_div = $(this).find(".false_img");
-            if(tmp_div)
-                tmp_div.removeClass("false_img").addClass("true_img");
-        })
-        $(this).parent().find("input").val(1);
-        $(this).removeClass("true_img").addClass("false_img");
-    });
-    
-    //wrong image
-    $(".false_img").live("click",function(){
-        $(this).parent().find("input").val(0);
-        $(this).removeClass("false_img").addClass("true_img");
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#wgt_edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src");
-            cont_obj.mode = "edit";
-            cont_obj.imgs = [];
-            $(this).find(".img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src");
-            cont_obj.mode = "display";
-            cont_obj.imgs = [];
-            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
-                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
-                var img_obj = new Object();
-                img_obj.value = tmp_cont.find("input").val();
-                img_obj.link = tmp_cont.find("img").attr("src");
-                img_obj.ht = tmp_cont.find("img").height();
-                img_obj.wd = tmp_cont.find("img").width();
-                img_obj.cont = "answers";
-                cont_obj.imgs.push(img_obj);
-            }
-            $(this).find(".imgs_cont .img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                img_obj.cont = "cont";
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    if(window.sankore)
-        sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].mode == "edit"){          
-            var tmp_array = [];
-            var container = $("<div class='cont'>");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);
-            var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            var text = $("<div class='text_cont'>").appendTo(sub_container);
-            var audio_block = $("<div class='audio_block'>").appendTo(text);
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src", data[i].audio);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-            $("<input type='hidden'/>").appendTo(audio_block);
-            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
-        
-            for(var j in data[i].imgs){
-                var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                var img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                tmp_array.push(img_block);
-            }
-            tmp_array = shuffle(tmp_array);
-            for(j in tmp_array){
-                tmp_array[j].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: '#data'
-                });
-                tmp_array[j].appendTo(imgs_container);
-            }
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("#data");
-        } else {
-            container = $("<div class='cont'>");
-            sub_container = $("<div class='sub_cont'>").appendTo(container);
-            imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
-            $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
-            imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            text = $("<div class='text_cont'>").appendTo(sub_container);
-            audio_block = $("<div class='audio_block'>").appendTo(text);
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            source = $("<source/>").attr("src", data[i].audio);
-            audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-            $("<input type='hidden'/>").appendTo(audio_block);
-            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
-        
-            for(j in data[i].imgs){
-                img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                img_block.draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: '#data'
-                });
-                if(data[i].imgs[j].cont == "cont")
-                    img_block.appendTo(imgs_container);
-                else{
-                    imgs_answers.empty();
-                    img_block.appendTo(imgs_answers);
-                    if(data[i].imgs[j].value == "1")
-                        imgs_answers.addClass("imgs_answers_green");
-                    else
-                        imgs_answers.addClass("imgs_answers_red");
-                }
-            }
-            
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("#data");
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("#data");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "objects/beep.wav");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    
-    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img1);
-    $("<img src=\"objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img2);
-    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img3);
-    $("<img src=\"objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img4);
-    $("<img src=\"objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img5);
-    $("<img src=\"objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: '#data'
-        });
-        tmp_array[i].appendTo(imgs_container);
-    }
-    imgs_answers.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if($(this).children()[0].tagName == "IMG")
-                    $(this).children().remove();
-                else
-                    $(ui.draggable).parent().append($(this).children());
-                $(this).append($(ui.draggable));  
-                if($(this).children().length == 1){                
-                    if($(this).children().find("input").val() == "1")
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_green");
-                    else
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_green")
-                        .addClass("imgs_answers_red");
-                }                    
-            }
-        }
-    });
-    imgs_container.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_cont = $(ui.draggable).parent();
-                    $(this).append($(ui.draggable));
-                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                    var answers = "";
-                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                        answers += $(this).find("input").val();
-                    });
-                    if(tmp_cont.children()[0].tagName == "IMG")
-                        tmp_cont.removeClass("imgs_answers_green")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_gray");
-                    else
-                    if(tmp_cont.children().length == 1){                
-                        if(tmp_cont.children().find("input").val() == "1")
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_red")
-                            .addClass("imgs_answers_green");
-                        else
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_green")
-                            .addClass("imgs_answers_red");
-                    }    
-                }
-            }
-        }
-    });
-}
-
-//check result
-function checkResult(event)
-{
-    var str = "";
-    var right_str = $(event.target).find("input").val();
-    $(event.target).find(".img_block").each(function(){
-        str += $(this).find("input").val() + "*";
-    });
-    if(str == right_str)
-        $(event.target).css("background-color","#9f9");
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    audio_block.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
-    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
-    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");    
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addImgBlock(dest){
-    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
-    $("<div class='close_img'>").appendTo(img_block);
-    $("<div class='true_img'>").appendTo(img_block);
-    $("<input type='hidden' value='0'/>").appendTo(img_block);
-    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//changing the style
-function changeStyle(val){
-    switch(val){
-        case "1":
-            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
-            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
-            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
-            $("#wgt_name").removeClass("pad_color");
-            $("#wgt_display").addClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").addClass("radius_ft");
-            break;
-        case "2":
-            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").removeClass("radius_ft");
-            break;
-        case "3":
-            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
-            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
-            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
-            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
-            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
-            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
-            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
-            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").addClass("without_radius").removeClass("radius_ft");
-            break;
-    }
-}
-
-function onDropTarget(obj, event) {
-    $(obj).find("img").remove();
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_img = $("<img/>").attr("src", tmp);
-        $(obj).append(tmp_img);
-        setTimeout(function(){
-            if(tmp_img.height() >= tmp_img.width())
-                tmp_img.attr("height", "120");
-            else{
-                tmp_img.attr("width","120");
-                var h = tmp_img.height();
-                tmp_img.attr("height",h);
-                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-            }
-        }, 6)
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-function onDropAudio(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){       
-            var audio_block = $(obj);
-            $(obj).find("audio").remove();
-            audio_block.find(":first-child").removeClass("stop").addClass("play");
-            var source = $("<source/>").attr("src", tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-if (window.widget) {
-    window.widget.onremove = function(){
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-    }
-}
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/en/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/en/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/en/index.html b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/en/index.html
new file mode 100644
index 0000000..3bb0d93
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/en/index.html	
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>       
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/en/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/en/js/script.js
new file mode 100644
index 0000000..4f851f2
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/en/js/script.js	
@@ -0,0 +1,918 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    short_desc: "How many signals do you hear?", 
+    add: "Add new block",
+    enter: "Enter your instruction here ...",
+    wgt_name: "Associate to the audio",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p> <h2>Associate to the audio</h2> </p>" +
+"<p> <h3> Match a picture to a sound</h3> </p>" +
+"<p> Drag and drop the image in the correct area. If the result is incorrect, the area turns in red. If the result is correct, the area turns in green. </p> "+
+"<p> Reload “button” resets the exercises. </p>" +
+"<p> Enter the “Edit” mode to : </ p>" +
+"<ul> <li> choose the theme of the App : pad, slate, or none (by default : none), </li>" +
+"<li> modify the exercise.</li> </ul>" +
+
+"<p>In edition mode : </p>" +
+"<ul><li>modify the instruction clicking on the field,</li>" +
+"<li>replace the audio file, dragging and dropping a new one from your library,</li>" +
+"<li>add picture frames clicking on the “+”,</li>" +
+"<li>drag an drop pictures from your library,</li>" +
+"<li>set the correct image of your activity clicking on the submit button “v” on the frame,</li>" +
+"<li>delete a frame clicking on the cross button on the frame,</li>" +
+"<li>replace a picture, dragging a new one from your library,</li>" +
+"<li>“Display” button comes back to the activity.</li></ul>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("associer_sound","")){
+            var data = jQuery.parseJSON(sankore.preference("associer_sound",""));
+            importData(data);
+        }
+        else 
+            showExample();
+        if(sankore.preference("as_snd_style","")){
+            changeStyle(sankore.preference("as_snd_style",""));
+            $("#style_select").val(sankore.preference("as_snd_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+            sankore.setPreference("as_snd_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display", "none");
+//                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_array = [];
+                    
+                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
+                    container.find(".audio_block").removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop")
+                    container.find(".add_img").remove();
+//                    container.find(".close_cont").remove();
+                    container.find(".img_block").each(function(){
+                        if($(this).find("img").attr("src") != "img/drop_img.png"){
+                            $(this).find(".close_img").remove();
+                            $(this).find(".true_img").remove();
+                            $(this).find(".false_img").remove();
+                            $(this).removeAttr("ondragenter")
+                            .removeAttr("ondragleave")
+                            .removeAttr("ondragover")
+                            .removeAttr("ondrop")
+                            .addClass("img_gray");
+                        } else 
+                            $(this).remove();
+                    });
+                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
+                    container.find(".img_block").each(function(){
+                        $(this).css("float","");
+                        tmp_array.push($(this));
+                    });                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(container.find(".imgs_cont"));
+                    }
+                    
+                    img_answers.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if($(this).children()[0].tagName == "IMG")
+                                    $(this).children().remove();
+                                else
+                                    $(ui.draggable).parent().append($(this).children());
+                                $(this).append($(ui.draggable));  
+                                if($(this).children().length == 1){                
+                                    if($(this).children().find("input").val() == "1")
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }                    
+                            }
+                        }
+                    });
+                    
+                    container.find(".imgs_cont").droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_cont = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                    var answers = "";
+                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                        answers += $(this).find("input").val();
+                                    });
+                                    if(tmp_cont.children()[0].tagName == "IMG")
+                                        tmp_cont.removeClass("imgs_answers_green")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_gray");
+                                    else
+                                    if(tmp_cont.children().length == 1){                
+                                        if(tmp_cont.children().find("input").val() == "1")
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_red")
+                                            .addClass("imgs_answers_green");
+                                        else
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_green")
+                                            .addClass("imgs_answers_red");
+                                    }    
+                                }
+                            }
+                        }
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display", "block");
+                
+                $(".cont").each(function(){
+                    var container = $(this);
+                    container.find(".imgs_answers").find(".img_block").each(function(){
+                        $(this).appendTo(container.find(".imgs_cont"))
+                    });
+                    container.find(".imgs_answers").remove();
+//                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".imgs_cont").css("background-color", "");
+                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
+                    container.find(".audio_block").attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+                    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+                    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block").each(function(){
+                        $(this).draggable("destroy");
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
+                        .css("float","left");
+                        $("<div class='close_img'>").appendTo($(this));
+                        if($(this).find("input").val() == "1"){
+                            $("<div class='false_img'>").appendTo($(this));
+                        }
+                        else{
+                            $("<div class='true_img'>").appendTo($(this));
+                        }
+                    });
+                    container.find(".imgs_cont").append(add_img)
+                });                
+                
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+        
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+        
+    });
+    
+    //add new block
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();        
+    });
+    
+    //correct image
+    $(".true_img").live("click",function(){        
+        $(this).parent().parent().find(".img_block").each(function(){
+            $(this).find("input").val(0);
+            var tmp_div = $(this).find(".false_img");
+            if(tmp_div)
+                tmp_div.removeClass("false_img").addClass("true_img");
+        })
+        $(this).parent().find("input").val(1);
+        $(this).removeClass("true_img").addClass("false_img");
+    });
+    
+    //wrong image
+    $(".false_img").live("click",function(){
+        $(this).parent().find("input").val(0);
+        $(this).removeClass("false_img").addClass("true_img");
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");;
+            cont_obj.mode = "edit";
+            cont_obj.imgs = [];
+            $(this).find(".img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src").replace("../../","");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
+            cont_obj.mode = "display";
+            cont_obj.imgs = [];
+            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
+                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
+                var img_obj = new Object();
+                img_obj.value = tmp_cont.find("input").val();
+                img_obj.link = tmp_cont.find("img").attr("src").replace("../../","");
+                img_obj.ht = tmp_cont.find("img").height();
+                img_obj.wd = tmp_cont.find("img").width();
+                img_obj.cont = "answers";
+                cont_obj.imgs.push(img_obj);
+            }
+            $(this).find(".imgs_cont .img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src").replace("../../","");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                img_obj.cont = "cont";
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    if(window.sankore)
+        sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+      
+    for(var i in data){
+        if(data[i].mode == "edit"){          
+            var tmp_array = [];
+            var container = $("<div class='cont'>");
+            var sub_container = $("<div class='sub_cont'>").appendTo(container);
+            var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+//            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+            var text = $("<div class='text_cont'>").appendTo(sub_container);
+            var audio_block = $("<div class='audio_block'>").appendTo(text);
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            var source = $("<source/>").attr("src", "../../" + data[i].audio);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+            $("<input type='hidden'/>").appendTo(audio_block);
+            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
+        
+            for(var j in data[i].imgs){
+                var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                img.height(data[i].imgs[j].ht);
+                if((120 - data[i].imgs[j].ht) > 0)
+                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                img_block.append(hidden_input).append(img);
+                tmp_array.push(img_block);
+            }
+            tmp_array = shuffle(tmp_array);
+            for(j in tmp_array){
+                tmp_array[j].draggable({
+                    helper:'clone',
+                    zIndex:100,
+                    appendTo: '#data'
+                });
+                tmp_array[j].appendTo(imgs_container);
+            }
+            imgs_answers.droppable({
+                hoverClass: 'dropHere',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if($(this).children()[0].tagName == "IMG")
+                            $(this).children().remove();
+                        else
+                            $(ui.draggable).parent().append($(this).children());
+                        $(this).append($(ui.draggable));  
+                        if($(this).children().length == 1){                
+                            if($(this).children().find("input").val() == "1")
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_green");
+                            else
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_green")
+                                .addClass("imgs_answers_red");
+                        }                    
+                    }
+                }
+            });
+            imgs_container.droppable({
+                hoverClass: 'dropBack',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if(this != $(ui.draggable).parent()[0]){
+                            var tmp_cont = $(ui.draggable).parent();
+                            $(this).append($(ui.draggable));
+                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                            var answers = "";
+                            $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                answers += $(this).find("input").val();
+                            });
+                            if(tmp_cont.children()[0].tagName == "IMG")
+                                tmp_cont.removeClass("imgs_answers_green")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_gray");
+                            else
+                            if(tmp_cont.children().length == 1){                
+                                if(tmp_cont.children().find("input").val() == "1")
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }    
+                        }
+                    }
+                }
+            }); 
+            container.appendTo("#data");
+        } else {
+            container = $("<div class='cont'>");
+            sub_container = $("<div class='sub_cont'>").appendTo(container);
+            imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
+            $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
+            imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+//            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+            text = $("<div class='text_cont'>").appendTo(sub_container);
+            audio_block = $("<div class='audio_block'>").appendTo(text);
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            source = $("<source/>").attr("src", "../../" + data[i].audio);
+            audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+            $("<input type='hidden'/>").appendTo(audio_block);
+            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
+        
+            for(j in data[i].imgs){
+                img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                img.height(data[i].imgs[j].ht);
+                if((120 - data[i].imgs[j].ht) > 0)
+                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                img_block.append(hidden_input).append(img);
+                img_block.draggable({
+                    helper:'clone',
+                    zIndex:100,
+                    appendTo: '#data'
+                });
+                if(data[i].imgs[j].cont == "cont")
+                    img_block.appendTo(imgs_container);
+                else{
+                    imgs_answers.empty();
+                    img_block.appendTo(imgs_answers);
+                    if(data[i].imgs[j].value == "1")
+                        imgs_answers.addClass("imgs_answers_green");
+                    else
+                        imgs_answers.addClass("imgs_answers_red");
+                }
+            }
+            
+            imgs_answers.droppable({
+                hoverClass: 'dropHere',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if($(this).children()[0].tagName == "IMG")
+                            $(this).children().remove();
+                        else
+                            $(ui.draggable).parent().append($(this).children());
+                        $(this).append($(ui.draggable));  
+                        if($(this).children().length == 1){                
+                            if($(this).children().find("input").val() == "1")
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_green");
+                            else
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_green")
+                                .addClass("imgs_answers_red");
+                        }                    
+                    }
+                }
+            });
+            imgs_container.droppable({
+                hoverClass: 'dropBack',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if(this != $(ui.draggable).parent()[0]){
+                            var tmp_cont = $(ui.draggable).parent();
+                            $(this).append($(ui.draggable));
+                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                            var answers = "";
+                            $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                answers += $(this).find("input").val();
+                            });
+                            if(tmp_cont.children()[0].tagName == "IMG")
+                                tmp_cont.removeClass("imgs_answers_green")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_gray");
+                            else
+                            if(tmp_cont.children().length == 1){                
+                                if(tmp_cont.children().find("input").val() == "1")
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }    
+                        }
+                    }
+                }
+            }); 
+            container.appendTo("#data");
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "../../objects/beep.wav");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
+    
+    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+    
+    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img1);
+    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img3);
+    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img4);
+    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img5);
+    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].appendTo(imgs_container);
+    }
+    imgs_answers.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if($(this).children()[0].tagName == "IMG")
+                    $(this).children().remove();
+                else
+                    $(ui.draggable).parent().append($(this).children());
+                $(this).append($(ui.draggable));  
+                if($(this).children().length == 1){                
+                    if($(this).children().find("input").val() == "1")
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_green");
+                    else
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_green")
+                        .addClass("imgs_answers_red");
+                }                    
+            }
+        }
+    });
+    imgs_container.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_cont = $(ui.draggable).parent();
+                    $(this).append($(ui.draggable));
+                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                    var answers = "";
+                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                        answers += $(this).find("input").val();
+                    });
+                    if(tmp_cont.children()[0].tagName == "IMG")
+                        tmp_cont.removeClass("imgs_answers_green")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_gray");
+                    else
+                    if(tmp_cont.children().length == 1){                
+                        if(tmp_cont.children().find("input").val() == "1")
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_red")
+                            .addClass("imgs_answers_green");
+                        else
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_green")
+                            .addClass("imgs_answers_red");
+                    }    
+                }
+            }
+        }
+    });
+}
+
+//check result
+function checkResult(event)
+{
+    var str = "";
+    var right_str = $(event.target).find("input").val();
+    $(event.target).find(".img_block").each(function(){
+        str += $(this).find("input").val() + "*";
+    });
+    if(str == right_str)
+        $(event.target).css("background-color","#9f9");
+}
+
+//add new container
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont'>").appendTo(sub_container);
+//    var audio_block = $("<div class='audio_block'>").appendTo(text);
+//    audio_block.attr("ondragenter", "return false;")
+//    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+//    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+//    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");    
+//    $("<div class='play'>").appendTo(audio_block);
+//    $("<div class='replay'>").appendTo(audio_block);
+//    var source = $("<source/>").attr("src", "");
+//    var audio = $("<audio>").appendTo(audio_block);
+//    audio.append(source);
+//    $("<input type='hidden'/>").appendTo(audio_block);
+//    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
+//    
+//    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+//    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
+
+//add new img block
+function addImgBlock(dest){
+    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
+    $("<div class='close_img'>").appendTo(img_block);
+    $("<div class='true_img'>").appendTo(img_block);
+    $("<input type='hidden' value='0'/>").appendTo(img_block);
+    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
+}
+
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function onDropTarget(obj, event) {
+    $(obj).find("img").remove();
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_img = $("<img/>").attr("src", "../../" + tmp);
+        $(obj).append(tmp_img);
+        setTimeout(function(){
+            if(tmp_img.height() >= tmp_img.width())
+                tmp_img.attr("height", "120");
+            else{
+                tmp_img.attr("width","120");
+                var h = tmp_img.height();
+                tmp_img.attr("height",h);
+                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+            }
+        }, 6)
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+function onDropAudio(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){       
+            var audio_block = $(obj);
+            $(obj).find("audio").remove();
+            audio_block.find(":first-child").removeClass("stop").addClass("play");
+            var source = $("<source/>").attr("src", "../../" + tmp);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+if (window.widget) {
+    window.widget.onremove = function(){
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/js/script.js
index 1b3c594..5e9432c 100644
--- a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/js/script.js	
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/js/script.js	
@@ -19,23 +19,16 @@ var sankoreLang = {
 
     "<p>Le bouton “Modifier” vous permet : </p>"+
     "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
-    "<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité.</li></ul>"+
+    "<li>de modifier l'exercice.</li></ul>"+
 
-
-"<p>En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, puis </p>"+
-"<ul><li>insérez une consigne en cliquant sur le champ de texte “Saisir votre description ici ...”,"+
-"<li>insérez un son dans la zone à gauche de la consigne par glisser-déposer d’un son à partir de votre bibliothèque,</li>"+
+"<p>En mode édition :</p>"+
+"<ul><li>modifiez la consigne en cliquant sur le champ de texte,"+
+"<li>remplacez le son dans la zone à gauche de la consigne par glisser-déposer d’un son à partir de votre bibliothèque,</li>"+
 "<li>ajoutez des zones image(s) en cliquant sur le gros signe + en dessous,</li>"+
 "<li>insérez des images par glisser-déposer des images à partir de votre bibliothèque,</li>"+
-"<li>définissez l’image correcte de l’interactivité en cliquant sur le bouton valider “v” situé en bas à droite de l’image concernée.</li></ul>"+
-"<p>Pour supprimer une zone image, cliquez sur la croix située dans le coin supérieur droit de l’image.</p>"+ 
-"<p>Pour remplacer un son, glissez-déposez simplement un nouveau son.</p>"+
-
-
-
-    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
-
-    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+"<li>définissez l’image correcte de l’interactivité en cliquant sur le bouton valider “v” situé en bas à droite de l’image concernée,</li>"+
+"<li>supprimez une zone image, en cliquant sur la croix située dans son coin supérieur droit,</li>"+ 
+"<li>le bouton “Afficher” vous permet d’utiliser l’activité.</li></ul>",
     theme: "Thème"
 
 };
@@ -121,7 +114,7 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display", "none");
-                $(".add_block").remove();
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     var tmp_i = 0;
@@ -133,7 +126,7 @@ function start(){
                     .removeAttr("ondragover")
                     .removeAttr("ondrop")
                     container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     container.find(".img_block").each(function(){
                         if($(this).find("img").attr("src") != "img/drop_img.png"){
                             $(this).find(".close_img").remove();
@@ -226,7 +219,7 @@ function start(){
                     sankore.enableDropOnWidget(true);
                 $(this).addClass("selected");
                 $("#wgt_display").removeClass("selected");
-                $("#parameters").css("display","block");
+                $("#parameters").css("display", "block");
                 
                 $(".cont").each(function(){
                     var container = $(this);
@@ -234,7 +227,7 @@ function start(){
                         $(this).appendTo(container.find(".imgs_cont"))
                     });
                     container.find(".imgs_answers").remove();
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find(".imgs_cont").css("background-color", "");
                     container.find(".text_cont .audio_desc").attr("contenteditable","true");
                     container.find(".audio_block").attr("ondragenter", "return false;")
@@ -260,7 +253,7 @@ function start(){
                     container.find(".imgs_cont").append(add_img)
                 });                
                 
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
@@ -274,9 +267,9 @@ function start(){
     });
     
     //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
     
     //adding new img
     $(".add_img").live("click", function(){
@@ -284,13 +277,15 @@ function start(){
     });
     
     //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
-    $(".close_img").live("click", function(){      
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
         $(this).parent().remove();        
     });
     
@@ -361,7 +356,7 @@ function exportData(){
         $(".cont").each(function(){
             var cont_obj = new Object();
             cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
+            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");;
             cont_obj.mode = "edit";
             cont_obj.imgs = [];
             $(this).find(".img_block").each(function(){
@@ -403,13 +398,13 @@ function exportData(){
             array_to_export.push(cont_obj);
         });
     }
-    sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
+    if(window.sankore)
+        sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
 }
 
 //import
 function importData(data){
-    
-    var tmp = 0;    
+       
     for(var i in data){
         if(data[i].mode == "edit"){          
             var tmp_array = [];
@@ -418,12 +413,12 @@ function importData(data){
             var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
             var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
         
-            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
             var text = $("<div class='text_cont'>").appendTo(sub_container);
             var audio_block = $("<div class='audio_block'>").appendTo(text);
             $("<div class='play'>").appendTo(audio_block);
             $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src","../../" + data[i].audio);
+            var source = $("<source/>").attr("src", "../../" + data[i].audio);
             var audio = $("<audio>").appendTo(audio_block);
             audio.append(source);
             $("<input type='hidden'/>").appendTo(audio_block);
@@ -509,12 +504,12 @@ function importData(data){
             $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
             imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
         
-            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
             text = $("<div class='text_cont'>").appendTo(sub_container);
             audio_block = $("<div class='audio_block'>").appendTo(text);
             $("<div class='play'>").appendTo(audio_block);
             $("<div class='replay'>").appendTo(audio_block);
-            source = $("<source/>").attr("src","../../" + data[i].audio);
+            source = $("<source/>").attr("src", "../../" + data[i].audio);
             audio = $("<audio>").appendTo(audio_block);
             audio.append(source);
             $("<input type='hidden'/>").appendTo(audio_block);
@@ -613,7 +608,7 @@ function showExample(){
     var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
     var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
 
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
     var text = $("<div class='text_cont'>").appendTo(sub_container);
     var audio_block = $("<div class='audio_block'>").appendTo(text);
     $("<div class='play'>").appendTo(audio_block);
@@ -707,33 +702,45 @@ function showExample(){
     });
 }
 
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    audio_block.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
-    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
-    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");  
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
+//check result
+function checkResult(event)
+{
+    var str = "";
+    var right_str = $(event.target).find("input").val();
+    $(event.target).find(".img_block").each(function(){
+        str += $(this).find("input").val() + "*";
+    });
+    if(str == right_str)
+        $(event.target).css("background-color","#9f9");
 }
 
+//add new container
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont'>").appendTo(sub_container);
+//    var audio_block = $("<div class='audio_block'>").appendTo(text);
+//    audio_block.attr("ondragenter", "return false;")
+//    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+//    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+//    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");    
+//    $("<div class='play'>").appendTo(audio_block);
+//    $("<div class='replay'>").appendTo(audio_block);
+//    var source = $("<source/>").attr("src", "");
+//    var audio = $("<audio>").appendTo(audio_block);
+//    audio.append(source);
+//    $("<input type='hidden'/>").appendTo(audio_block);
+//    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
+//    
+//    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+//    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
+
 //add new img block
 function addImgBlock(dest){
     var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
@@ -743,12 +750,12 @@ function addImgBlock(dest){
     $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
 }
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 //shuffles an array
 function shuffle( arr )
@@ -845,7 +852,7 @@ function onDropTarget(obj, event) {
         }
         textData = stringToXML(textData);
         var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_img = $("<img/>").attr("src","../../" + tmp);
+        var tmp_img = $("<img/>").attr("src", "../../" + tmp);
         $(obj).append(tmp_img);
         setTimeout(function(){
             if(tmp_img.height() >= tmp_img.width())
@@ -881,7 +888,7 @@ function onDropAudio(obj, event) {
         textData = stringToXML(textData);
         var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
         var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){
+        if(tmp_type.substr(0, 5) == "audio"){       
             var audio_block = $(obj);
             $(obj).find("audio").remove();
             audio_block.find(":first-child").removeClass("stop").addClass("play");
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/js/script.js
index 911c3af..45179e8 100644
--- a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/js/script.js	
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/js/script.js	
@@ -95,7 +95,7 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display", "none");
-                $(".add_block").remove();
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     var tmp_i = 0;
@@ -107,7 +107,7 @@ function start(){
                     .removeAttr("ondragover")
                     .removeAttr("ondrop")
                     container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     container.find(".img_block").each(function(){
                         if($(this).find("img").attr("src") != "img/drop_img.png"){
                             $(this).find(".close_img").remove();
@@ -200,7 +200,7 @@ function start(){
                     sankore.enableDropOnWidget(true);
                 $(this).addClass("selected");
                 $("#wgt_display").removeClass("selected");
-                $("#parameters").css("display","block");
+                $("#parameters").css("display", "block");
                 
                 $(".cont").each(function(){
                     var container = $(this);
@@ -208,7 +208,7 @@ function start(){
                         $(this).appendTo(container.find(".imgs_cont"))
                     });
                     container.find(".imgs_answers").remove();
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find(".imgs_cont").css("background-color", "");
                     container.find(".text_cont .audio_desc").attr("contenteditable","true");
                     container.find(".audio_block").attr("ondragenter", "return false;")
@@ -234,7 +234,7 @@ function start(){
                     container.find(".imgs_cont").append(add_img)
                 });                
                 
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
@@ -248,9 +248,9 @@ function start(){
     });
     
     //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
     
     //adding new img
     $(".add_img").live("click", function(){
@@ -258,13 +258,15 @@ function start(){
     });
     
     //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
-    $(".close_img").live("click", function(){      
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
         $(this).parent().remove();        
     });
     
@@ -335,7 +337,7 @@ function exportData(){
         $(".cont").each(function(){
             var cont_obj = new Object();
             cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
+            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");;
             cont_obj.mode = "edit";
             cont_obj.imgs = [];
             $(this).find(".img_block").each(function(){
@@ -377,13 +379,13 @@ function exportData(){
             array_to_export.push(cont_obj);
         });
     }
-    sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
+    if(window.sankore)
+        sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
 }
 
 //import
 function importData(data){
-    
-    var tmp = 0;    
+      
     for(var i in data){
         if(data[i].mode == "edit"){          
             var tmp_array = [];
@@ -392,12 +394,12 @@ function importData(data){
             var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
             var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
         
-            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
             var text = $("<div class='text_cont'>").appendTo(sub_container);
             var audio_block = $("<div class='audio_block'>").appendTo(text);
             $("<div class='play'>").appendTo(audio_block);
             $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src","../../" + data[i].audio);
+            var source = $("<source/>").attr("src", "../../" + data[i].audio);
             var audio = $("<audio>").appendTo(audio_block);
             audio.append(source);
             $("<input type='hidden'/>").appendTo(audio_block);
@@ -483,12 +485,12 @@ function importData(data){
             $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
             imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
         
-            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
             text = $("<div class='text_cont'>").appendTo(sub_container);
             audio_block = $("<div class='audio_block'>").appendTo(text);
             $("<div class='play'>").appendTo(audio_block);
             $("<div class='replay'>").appendTo(audio_block);
-            source = $("<source/>").attr("src","../../" + data[i].audio);
+            source = $("<source/>").attr("src", "../../" + data[i].audio);
             audio = $("<audio>").appendTo(audio_block);
             audio.append(source);
             $("<input type='hidden'/>").appendTo(audio_block);
@@ -587,7 +589,7 @@ function showExample(){
     var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
     var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
 
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
     var text = $("<div class='text_cont'>").appendTo(sub_container);
     var audio_block = $("<div class='audio_block'>").appendTo(text);
     $("<div class='play'>").appendTo(audio_block);
@@ -681,33 +683,45 @@ function showExample(){
     });
 }
 
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    audio_block.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
-    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
-    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");  
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
+//check result
+function checkResult(event)
+{
+    var str = "";
+    var right_str = $(event.target).find("input").val();
+    $(event.target).find(".img_block").each(function(){
+        str += $(this).find("input").val() + "*";
+    });
+    if(str == right_str)
+        $(event.target).css("background-color","#9f9");
 }
 
+//add new container
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont'>").appendTo(sub_container);
+//    var audio_block = $("<div class='audio_block'>").appendTo(text);
+//    audio_block.attr("ondragenter", "return false;")
+//    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+//    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+//    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");    
+//    $("<div class='play'>").appendTo(audio_block);
+//    $("<div class='replay'>").appendTo(audio_block);
+//    var source = $("<source/>").attr("src", "");
+//    var audio = $("<audio>").appendTo(audio_block);
+//    audio.append(source);
+//    $("<input type='hidden'/>").appendTo(audio_block);
+//    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
+//    
+//    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+//    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
+
 //add new img block
 function addImgBlock(dest){
     var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
@@ -717,12 +731,12 @@ function addImgBlock(dest){
     $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
 }
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 //shuffles an array
 function shuffle( arr )
@@ -819,7 +833,7 @@ function onDropTarget(obj, event) {
         }
         textData = stringToXML(textData);
         var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_img = $("<img/>").attr("src","../../" + tmp);
+        var tmp_img = $("<img/>").attr("src", "../../" + tmp);
         $(obj).append(tmp_img);
         setTimeout(function(){
             if(tmp_img.height() >= tmp_img.width())
@@ -855,7 +869,7 @@ function onDropAudio(obj, event) {
         textData = stringToXML(textData);
         var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
         var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){
+        if(tmp_type.substr(0, 5) == "audio"){       
             var audio_block = $(obj);
             $(obj).find("audio").remove();
             audio_block.find(":first-child").removeClass("stop").addClass("play");
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/ubw-main.css
index 66280eb..ac5c3b0 100644
--- a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/ubw-main.css
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/ubw-main.css
@@ -1,308 +1,309 @@
 html, body {
-	margin:0;
-	padding: 0;
-	font-family: "helvetica neue";
-	font-size: 14px;
-	color: #666666;
+    margin:0;
+    padding: 0;
+    font-family: "helvetica neue";
+    font-size: 14px;
+    color: #666666;
 }
 
 #ubwidget {
-	position: absolute;
-	top: 0;
-	bottom: 0;
-	left: 0;
-	right: 0;
-	background: url("images/bg.png");
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    background: url("images/bg.png");
 }
 
 .theme-pad #ubwidget {
-	border-radius: 40px;
-	border-width: 52px;
-	
-	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
-	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
-			border-image: url("images/pad-bd.png") 52 repeat;
+    border-radius: 40px;
+    border-width: 52px;
+
+    -webkit-border-image: url("images/pad-bd.png") 52 repeat;
+    -moz-border-image: url("images/pad-bd.png") 52 repeat;
+    border-image: url("images/pad-bd.png") 52 repeat;
 }
 
 .theme-slate #ubwidget {
-	border-radius: 44px;
-	border-width: 52px;
-	
-	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
-	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
-			border-image: url("images/slate-bd.png") 52 repeat;
+    border-radius: 44px;
+    border-width: 52px;
+
+    -webkit-border-image: url("images/slate-bd.png") 52 repeat;
+    -moz-border-image: url("images/slate-bd.png") 52 repeat;
+    border-image: url("images/slate-bd.png") 52 repeat;
 }
 
 #ubwidget > .wrapper {
-	position: absolute;
-	top: 0px;
-	bottom: 0px;
-	left: 0px;
-	right: 0px;
-	overflow: hidden;
+    position: absolute;
+    top: 0px;
+    bottom: 0px;
+    left: 0px;
+    right: 0px;
+    overflow: hidden;
 }
 
 
 .theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
-	position: absolute;
-	top: -49px;
-	bottom: -5px;
-	left: -5px;
-	right: -5px;
-	overflow: hidden;
+    position: absolute;
+    top: -49px;
+    bottom: -5px;
+    left: -5px;
+    right: -5px;
+    overflow: hidden;
 }
 
 #toolbar {
-	display: table;
-	width: 100%;
-	height: 44px;
-	font-size: 24px;
-	color: #FFCC99;
-	padding:0 10px;
+    display: table;
+    width: 100%;
+    height: 44px;
+    font-size: 24px;
+    color: #FFCC99;
+    padding:0 10px;
 }
 
 .theme-pad #toolbar, .theme-slate #toolbar {
-	height: 38px;
-	padding: 6px 0 0;
+    height: 38px;
+    padding: 6px 0 0;
 }
 
 .theme-slate #toolbar {
-	color: #7F613F;
-	text-shadow: #FFDCA9 0 1px 0;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
 }
 
 
 #toolbar > * {
-	display: table-cell;
-	height: 100%;
-	vertical-align: middle;
+    display: table-cell;
+    height: 100%;
+    vertical-align: middle;
 }
 
 #toolbar .actions {
-	text-align: right;
+    text-align: right;
 }
 
 #toolbar button, h1 {
-	font-weight: normal;
-	font-size: 24px;
-	color: #FFCC99;
-	margin: 0;
+    font-weight: normal;
+    font-size: 24px;
+    color: #FFCC99;
+    margin: 0;
 }
 
 .theme-slate #toolbar button, .theme-slate h1 {
-	color: #7F613F;
-	text-shadow: #FFDCA9 0 1px 0;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
 }
 
 #toolbar button {
-	border: none;
-	padding: none;
-	outline: none;
-	background: none;
-	
-	cursor: pointer;
-	padding-left: 34px;
-	margin-left: 10px;
-	height: 32px;
+    border: none;
+    padding: none;
+    outline: none;
+    background: none;
+
+    cursor: pointer;
+    padding-left: 34px;
+    margin-left: 10px;
+    height: 32px;
 }
 
 #toolbar button span {
-	display: block;
-	line-height: 32px;
+    display: block;
+    line-height: 32px;
 }
 
 #toolbar button[role='edit'] {
-	background: url("images/toolbar-edit.png") left top no-repeat;	
+    background: url("images/toolbar-edit.png") left top no-repeat;	
 }
 
 #toolbar button[role='view'] {
-	display: none;
-	color: #FFF;
-	background: url("images/toolbar-edit.png") left -32px no-repeat;
+    display: none;
+    color: #FFF;
+    background: url("images/toolbar-edit.png") left -32px no-repeat;
 }
 
 #toolbar button[role='reload'] {
-	background: url("images/toolbar-reload.png") left top no-repeat;	
+    background: url("images/toolbar-reload.png") left top no-repeat;	
 }
 
 #toolbar button[role='help'] {
-	background: url("images/toolbar-help.png") left top no-repeat;	
-	display: none;
+    background: url("images/toolbar-help.png") left top no-repeat;	
+    display: none;
 }
 
 .hasHelp #toolbar button[role='help'] {
-	display: inline-block;
+    display: inline-block;
 }
 
 .showHelp #toolbar button[role='help'] {
-	color: #FFF;
-	background-position: left -32px;
+    color: #FFF;
+    background-position: left -32px;
 }
 
 .theme-slate #toolbar button[role='edit'] {
-	background-image: url("images/slate-toolbar-edit.png");
+    background-image: url("images/slate-toolbar-edit.png");
 }
 
 .theme-slate #toolbar button[role='view'] {
-	text-shadow: #7F613F 0 -1px 0;
-	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+    text-shadow: #7F613F 0 -1px 0;
+    background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
 }
 
 .theme-slate #toolbar button[role='reload'] {
-	background-image: url("images/slate-toolbar-reload.png");
+    background-image: url("images/slate-toolbar-reload.png");
 }
 
 .theme-slate #toolbar button[role='help'] {
-	background-image: url("images/slate-toolbar-help.png");
+    background-image: url("images/slate-toolbar-help.png");
 }
 
 .showHelp.theme-slate #toolbar button[role='help'] {
-	text-shadow: #7F613F 0 -1px 0;
+    text-shadow: #7F613F 0 -1px 0;
 }
 
 
 .onEdit #toolbar button[role='view'] {
-	display: inline-block;
+    display: inline-block;
 }
 
 .onEdit #toolbar button[role='edit'] {
-	display: none;
+    display: none;
 }
 
 #help {
-	width: 300px;
-	height: 400px;
-	position: absolute;
-	margin-top: 10px;
-	right: 10px;
-	z-index: 10000;
-	display: none;
+    width: 300px;
+    height: 400px;
+    position: absolute;
+    margin-top: 10px;
+    right: 10px;
+    z-index: 10000;
+    display: none;
 }
 
 .showHelp #help {
-	display: block;
+    display: block;
 }
 
 #content {
-	position: absolute;
-	top: 44px;
-	bottom: 0;
-	overflow: auto;
-	left: 0;
-	right: 0;
+    position: absolute;
+    top: 44px;
+    bottom: 0;
+    overflow: auto;
+    left: 0;
+    right: 0;
 
-	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
 }
 
 #parameters {
-	display:none;
-	padding: 10px 20px;
-	background: url("images/parameters-bg.png");
-	
-	-webkit-border-radius: 4px 4px 0 0;
-	   -moz-border-radius: 4px 4px 0 0;
-		-mz-border-radius: 4px 4px 0 0;
-			border-radius: 4px 4px 0 0;
+    display:none;
+    padding: 10px 20px;
+    background: url("images/parameters-bg.png");
+
+    -webkit-border-radius: 4px 4px 0 0;
+    -moz-border-radius: 4px 4px 0 0;
+    -mz-border-radius: 4px 4px 0 0;
+    border-radius: 4px 4px 0 0;
 }
 
 #parameters label {
-	font-style: italic;
+    font-style: italic;
 }
 
 #parameters  label > select, #parameters  label > input{
-	margin-left: 10px;
+    margin-left: 10px;
+    width: 80px;
 }
 
 #parameters > div.inline {
-	display: inline-block;
+    display: inline-block;
 }
 
 #parameters > div.inline+div.inline {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 
 #parameters input[type=text],
 #parameters input[type=number] {
-	height: 26px;
-	border: 1px solid #BBB;
-	background-color: #FFF;
-	
-	padding: 0 4px;
-	
-	-webkit-border-radius: 4px;
-	   -moz-border-radius: 4px;
-	    -ms-border-radius: 4px;
-			border-radius: 4px;
-	
-	-webkit-box-shadow: 0 1px 0 #FFF;
-	   -moz-box-shadow: 0 1px 0 #FFF;
-	    -ms-box-shadow: 0 1px 0 #FFF;
-			box-shadow: 0 1px 0 #FFF;
+    height: 26px;
+    border: 1px solid #BBB;
+    background-color: #FFF;
+
+    padding: 0 4px;
+
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    -ms-border-radius: 4px;
+    border-radius: 4px;
+
+    -webkit-box-shadow: 0 1px 0 #FFF;
+    -moz-box-shadow: 0 1px 0 #FFF;
+    -ms-box-shadow: 0 1px 0 #FFF;
+    box-shadow: 0 1px 0 #FFF;
 }
 
 #parameters input.tiny {
-	width: 40px;
+    width: 40px;
 }
 
 #parameters input.small {
-	width: 80px;
+    width: 80px;
 }
 
 #parameters input.medium {
-	width: 120px;
+    width: 120px;
 }
 
 #parameters input.long {
-	width: 160px;
+    width: 160px;
 }
 
 #scene {
-	padding: 20px;
+    padding: 20px;
 }
 
 #scene > * {
-	margin: 0 auto;
+    margin: 0 auto;
 }
 .onEdit #scene {
 }
 
 .onEdit #parameters {
-	display: block;
+    display: block;
 }
 
 /*
 .card-container {
-  	-webkit-perspective: 600px;
-	width:100%;
-	height: 100%;
+        -webkit-perspective: 600px;
+        width:100%;
+        height: 100%;
 }
 .card {
-	position: relative;
-	width:100%;
-	height: 100%;
+        position: relative;
+        width:100%;
+        height: 100%;
 }
 .card > div {
-	position: absolute;
-	width:100%;
-	height: 100%;
-	-webkit-transform-style: preserve-3d;
-  	-webkit-transition: all .5s ease-in-out;
-	-webkit-backface-visibility: hidden;
+        position: absolute;
+        width:100%;
+        height: 100%;
+        -webkit-transform-style: preserve-3d;
+        -webkit-transition: all .5s ease-in-out;
+        -webkit-backface-visibility: hidden;
 }
 .card > div:first-child {
-	-webkit-transform: rotateY( 0deg );
+        -webkit-transform: rotateY( 0deg );
 }
 .card > div:last-child {
-	-webkit-transform: rotateY( -180deg );
+        -webkit-transform: rotateY( -180deg );
 }
 .card.flip > div:first-child {
-	-webkit-transform: rotateY( 180deg );
+        -webkit-transform: rotateY( 180deg );
 }
 .card.flip > div:last-child {
-	-webkit-transform: rotateY( 0deg );
+        -webkit-transform: rotateY( 0deg );
 }
 */
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/config.xml
index 1e34149..aa98b4c 100644
--- a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/config.xml
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/config.xml
@@ -4,7 +4,7 @@
         id="http://www.njin.fr/sankore/apps/Cadran opératoire" 
         version="1.0"
         width="800"
-        height="700" 
+        height="580" 
         ub:resizable="false">     
    
 		<name>Cadran opératoire</name>
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/main.css b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/main.css
index 95b3bdb..4234af5 100644
--- a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/main.css
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/main.css
@@ -132,7 +132,7 @@
 	position: relative;
 	overflow: hidden;
 	height: 100%;
-        width: 120px;
+    width: 140px;
 }
 #result > div > div {
 	position: absolute;
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/ubw-main.css
index 66280eb..ac5c3b0 100644
--- a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/ubw-main.css
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/ubw-main.css
@@ -1,308 +1,309 @@
 html, body {
-	margin:0;
-	padding: 0;
-	font-family: "helvetica neue";
-	font-size: 14px;
-	color: #666666;
+    margin:0;
+    padding: 0;
+    font-family: "helvetica neue";
+    font-size: 14px;
+    color: #666666;
 }
 
 #ubwidget {
-	position: absolute;
-	top: 0;
-	bottom: 0;
-	left: 0;
-	right: 0;
-	background: url("images/bg.png");
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    background: url("images/bg.png");
 }
 
 .theme-pad #ubwidget {
-	border-radius: 40px;
-	border-width: 52px;
-	
-	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
-	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
-			border-image: url("images/pad-bd.png") 52 repeat;
+    border-radius: 40px;
+    border-width: 52px;
+
+    -webkit-border-image: url("images/pad-bd.png") 52 repeat;
+    -moz-border-image: url("images/pad-bd.png") 52 repeat;
+    border-image: url("images/pad-bd.png") 52 repeat;
 }
 
 .theme-slate #ubwidget {
-	border-radius: 44px;
-	border-width: 52px;
-	
-	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
-	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
-			border-image: url("images/slate-bd.png") 52 repeat;
+    border-radius: 44px;
+    border-width: 52px;
+
+    -webkit-border-image: url("images/slate-bd.png") 52 repeat;
+    -moz-border-image: url("images/slate-bd.png") 52 repeat;
+    border-image: url("images/slate-bd.png") 52 repeat;
 }
 
 #ubwidget > .wrapper {
-	position: absolute;
-	top: 0px;
-	bottom: 0px;
-	left: 0px;
-	right: 0px;
-	overflow: hidden;
+    position: absolute;
+    top: 0px;
+    bottom: 0px;
+    left: 0px;
+    right: 0px;
+    overflow: hidden;
 }
 
 
 .theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
-	position: absolute;
-	top: -49px;
-	bottom: -5px;
-	left: -5px;
-	right: -5px;
-	overflow: hidden;
+    position: absolute;
+    top: -49px;
+    bottom: -5px;
+    left: -5px;
+    right: -5px;
+    overflow: hidden;
 }
 
 #toolbar {
-	display: table;
-	width: 100%;
-	height: 44px;
-	font-size: 24px;
-	color: #FFCC99;
-	padding:0 10px;
+    display: table;
+    width: 100%;
+    height: 44px;
+    font-size: 24px;
+    color: #FFCC99;
+    padding:0 10px;
 }
 
 .theme-pad #toolbar, .theme-slate #toolbar {
-	height: 38px;
-	padding: 6px 0 0;
+    height: 38px;
+    padding: 6px 0 0;
 }
 
 .theme-slate #toolbar {
-	color: #7F613F;
-	text-shadow: #FFDCA9 0 1px 0;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
 }
 
 
 #toolbar > * {
-	display: table-cell;
-	height: 100%;
-	vertical-align: middle;
+    display: table-cell;
+    height: 100%;
+    vertical-align: middle;
 }
 
 #toolbar .actions {
-	text-align: right;
+    text-align: right;
 }
 
 #toolbar button, h1 {
-	font-weight: normal;
-	font-size: 24px;
-	color: #FFCC99;
-	margin: 0;
+    font-weight: normal;
+    font-size: 24px;
+    color: #FFCC99;
+    margin: 0;
 }
 
 .theme-slate #toolbar button, .theme-slate h1 {
-	color: #7F613F;
-	text-shadow: #FFDCA9 0 1px 0;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
 }
 
 #toolbar button {
-	border: none;
-	padding: none;
-	outline: none;
-	background: none;
-	
-	cursor: pointer;
-	padding-left: 34px;
-	margin-left: 10px;
-	height: 32px;
+    border: none;
+    padding: none;
+    outline: none;
+    background: none;
+
+    cursor: pointer;
+    padding-left: 34px;
+    margin-left: 10px;
+    height: 32px;
 }
 
 #toolbar button span {
-	display: block;
-	line-height: 32px;
+    display: block;
+    line-height: 32px;
 }
 
 #toolbar button[role='edit'] {
-	background: url("images/toolbar-edit.png") left top no-repeat;	
+    background: url("images/toolbar-edit.png") left top no-repeat;	
 }
 
 #toolbar button[role='view'] {
-	display: none;
-	color: #FFF;
-	background: url("images/toolbar-edit.png") left -32px no-repeat;
+    display: none;
+    color: #FFF;
+    background: url("images/toolbar-edit.png") left -32px no-repeat;
 }
 
 #toolbar button[role='reload'] {
-	background: url("images/toolbar-reload.png") left top no-repeat;	
+    background: url("images/toolbar-reload.png") left top no-repeat;	
 }
 
 #toolbar button[role='help'] {
-	background: url("images/toolbar-help.png") left top no-repeat;	
-	display: none;
+    background: url("images/toolbar-help.png") left top no-repeat;	
+    display: none;
 }
 
 .hasHelp #toolbar button[role='help'] {
-	display: inline-block;
+    display: inline-block;
 }
 
 .showHelp #toolbar button[role='help'] {
-	color: #FFF;
-	background-position: left -32px;
+    color: #FFF;
+    background-position: left -32px;
 }
 
 .theme-slate #toolbar button[role='edit'] {
-	background-image: url("images/slate-toolbar-edit.png");
+    background-image: url("images/slate-toolbar-edit.png");
 }
 
 .theme-slate #toolbar button[role='view'] {
-	text-shadow: #7F613F 0 -1px 0;
-	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+    text-shadow: #7F613F 0 -1px 0;
+    background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
 }
 
 .theme-slate #toolbar button[role='reload'] {
-	background-image: url("images/slate-toolbar-reload.png");
+    background-image: url("images/slate-toolbar-reload.png");
 }
 
 .theme-slate #toolbar button[role='help'] {
-	background-image: url("images/slate-toolbar-help.png");
+    background-image: url("images/slate-toolbar-help.png");
 }
 
 .showHelp.theme-slate #toolbar button[role='help'] {
-	text-shadow: #7F613F 0 -1px 0;
+    text-shadow: #7F613F 0 -1px 0;
 }
 
 
 .onEdit #toolbar button[role='view'] {
-	display: inline-block;
+    display: inline-block;
 }
 
 .onEdit #toolbar button[role='edit'] {
-	display: none;
+    display: none;
 }
 
 #help {
-	width: 300px;
-	height: 400px;
-	position: absolute;
-	margin-top: 10px;
-	right: 10px;
-	z-index: 10000;
-	display: none;
+    width: 300px;
+    height: 400px;
+    position: absolute;
+    margin-top: 10px;
+    right: 10px;
+    z-index: 10000;
+    display: none;
 }
 
 .showHelp #help {
-	display: block;
+    display: block;
 }
 
 #content {
-	position: absolute;
-	top: 44px;
-	bottom: 0;
-	overflow: auto;
-	left: 0;
-	right: 0;
+    position: absolute;
+    top: 44px;
+    bottom: 0;
+    overflow: auto;
+    left: 0;
+    right: 0;
 
-	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
 }
 
 #parameters {
-	display:none;
-	padding: 10px 20px;
-	background: url("images/parameters-bg.png");
-	
-	-webkit-border-radius: 4px 4px 0 0;
-	   -moz-border-radius: 4px 4px 0 0;
-		-mz-border-radius: 4px 4px 0 0;
-			border-radius: 4px 4px 0 0;
+    display:none;
+    padding: 10px 20px;
+    background: url("images/parameters-bg.png");
+
+    -webkit-border-radius: 4px 4px 0 0;
+    -moz-border-radius: 4px 4px 0 0;
+    -mz-border-radius: 4px 4px 0 0;
+    border-radius: 4px 4px 0 0;
 }
 
 #parameters label {
-	font-style: italic;
+    font-style: italic;
 }
 
 #parameters  label > select, #parameters  label > input{
-	margin-left: 10px;
+    margin-left: 10px;
+    width: 80px;
 }
 
 #parameters > div.inline {
-	display: inline-block;
+    display: inline-block;
 }
 
 #parameters > div.inline+div.inline {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 
 #parameters input[type=text],
 #parameters input[type=number] {
-	height: 26px;
-	border: 1px solid #BBB;
-	background-color: #FFF;
-	
-	padding: 0 4px;
-	
-	-webkit-border-radius: 4px;
-	   -moz-border-radius: 4px;
-	    -ms-border-radius: 4px;
-			border-radius: 4px;
-	
-	-webkit-box-shadow: 0 1px 0 #FFF;
-	   -moz-box-shadow: 0 1px 0 #FFF;
-	    -ms-box-shadow: 0 1px 0 #FFF;
-			box-shadow: 0 1px 0 #FFF;
+    height: 26px;
+    border: 1px solid #BBB;
+    background-color: #FFF;
+
+    padding: 0 4px;
+
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    -ms-border-radius: 4px;
+    border-radius: 4px;
+
+    -webkit-box-shadow: 0 1px 0 #FFF;
+    -moz-box-shadow: 0 1px 0 #FFF;
+    -ms-box-shadow: 0 1px 0 #FFF;
+    box-shadow: 0 1px 0 #FFF;
 }
 
 #parameters input.tiny {
-	width: 40px;
+    width: 40px;
 }
 
 #parameters input.small {
-	width: 80px;
+    width: 80px;
 }
 
 #parameters input.medium {
-	width: 120px;
+    width: 120px;
 }
 
 #parameters input.long {
-	width: 160px;
+    width: 160px;
 }
 
 #scene {
-	padding: 20px;
+    padding: 20px;
 }
 
 #scene > * {
-	margin: 0 auto;
+    margin: 0 auto;
 }
 .onEdit #scene {
 }
 
 .onEdit #parameters {
-	display: block;
+    display: block;
 }
 
 /*
 .card-container {
-  	-webkit-perspective: 600px;
-	width:100%;
-	height: 100%;
+        -webkit-perspective: 600px;
+        width:100%;
+        height: 100%;
 }
 .card {
-	position: relative;
-	width:100%;
-	height: 100%;
+        position: relative;
+        width:100%;
+        height: 100%;
 }
 .card > div {
-	position: absolute;
-	width:100%;
-	height: 100%;
-	-webkit-transform-style: preserve-3d;
-  	-webkit-transition: all .5s ease-in-out;
-	-webkit-backface-visibility: hidden;
+        position: absolute;
+        width:100%;
+        height: 100%;
+        -webkit-transform-style: preserve-3d;
+        -webkit-transition: all .5s ease-in-out;
+        -webkit-backface-visibility: hidden;
 }
 .card > div:first-child {
-	-webkit-transform: rotateY( 0deg );
+        -webkit-transform: rotateY( 0deg );
 }
 .card > div:last-child {
-	-webkit-transform: rotateY( -180deg );
+        -webkit-transform: rotateY( -180deg );
 }
 .card.flip > div:first-child {
-	-webkit-transform: rotateY( 180deg );
+        -webkit-transform: rotateY( 180deg );
 }
 .card.flip > div:last-child {
-	-webkit-transform: rotateY( 0deg );
+        -webkit-transform: rotateY( 0deg );
 }
 */
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/index.html
index 2f3983a..a53889f 100644
--- a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/index.html
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/index.html
@@ -1,75 +1,90 @@
 <!doctype html>
 <html xmlns="http://www.w3.org/1999/xhtml">
 
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-	
-	<link rel="stylesheet" href="css/ubw-main.css">
-    <link rel="stylesheet" href="css/main.css">
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 
-	<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
-	
-	<script src="js/lib/modernizr.js" type="text/javascript"></script>
-	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
-	<script src="js/lib/jquery-css-transform.js" type="text/javascript"></script>
-	<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
-	<script src="js/lib/mustache.js" type="text/javascript"></script>
-	<script src="js/lib/ubw-main.js" type="text/javascript"></script>
-	<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
-	
-</head>
+        <link rel="stylesheet" href="css/ubw-main.css">
+            <link rel="stylesheet" href="css/main.css">
 
-<body class="hasHelp">
-    <div id="ubwidget" data-themes="pad">
-		<div class="wrapper">
-			<div id="toolbar">
-			</div>
-			<div id="help">
-				<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
-			</div>
-			<div id="content">
-				<div id="parameters">
-				</div>
-				<div id="scene">
-					<div id="disc">
-						<div class="circle result hide">
-							<div>
-								<div id="result">
-									<div>
-										<div class="front">?</div>
-										<div class="back">12</div>	
-									</div>
-								</div>									
-							</div>
-						</div>
-						<div class="circle numbers">
-							<div><div>0</div></div>
-							<div><div>1</div></div>
-							<div><div>2</div></div>
-							<div><div>3</div></div>
-							<div><div>4</div></div>
-							<div><div>5</div></div>
-							<div><div>6</div></div>
-							<div><div>7</div></div>
-							<div><div>8</div></div>
-							<div><div>9</div></div>
-							<div><div>10</div></div>
-							<div><div>11</div></div>
-						</div>
-						<div class="circle operators">
-							<div><div>+</div></div>
-							<div><div>*</div></div>
-							<div><div>-</div></div>
-							<div><div>/</div></div>
-						</div>
-						<div class="circle input">
-							<div></div>
-						</div>
-					</div>
-				</div>
-			</div>
-		</div>
-    </div>
-</body>
+                <script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
 
-</html>
+                <script src="js/lib/modernizr.js" type="text/javascript"></script>
+                <script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+                <script src="js/lib/jquery-css-transform.js" type="text/javascript"></script>
+                <script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
+                <script src="js/lib/mustache.js" type="text/javascript"></script>
+                <script src="js/lib/ubw-main.js" type="text/javascript"></script>
+                <script src="js/main.js" type="text/javascript" charset="utf-8"></script>
+                <script type="text/javascript">
+                    $(document).ready(function(){
+                        $(".circle.input>div").keydown(function(){
+                            if((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 189 && event.keyCode != 46 && event.keyCode != 8 && event.keyCode != 37 && event.keyCode != 39)
+                                return false;
+                            if(event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39)
+                                return true;
+                            else{
+                                if(this.innerHTML != "<br>")
+                                    return (this.innerHTML.charAt(0) == '-')?(this.innerHTML.length > 2)?false:true:(this.innerHTML.length > 1)?(event.keyCode == 189)?true:false:true;
+                                else
+                                    return true;
+                            }
+                        })
+                    })
+                </script>
+                </head>
+
+                <body class="hasHelp">
+                    <div id="ubwidget" data-themes="pad">
+                        <div class="wrapper">
+                            <div id="toolbar">
+                            </div>
+                            <div id="help">
+                                <iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
+                            </div>
+                            <div id="content">
+                                <div id="parameters">
+                                </div>
+                                <div id="scene">
+                                    <div id="disc">
+                                        <div class="circle result hide">
+                                            <div>
+                                                <div id="result">
+                                                    <div>
+                                                        <div class="front">?</div>
+                                                        <div class="back">12</div>	
+                                                    </div>
+                                                </div>									
+                                            </div>
+                                        </div>
+                                        <div class="circle numbers">
+                                            <div><div>0</div></div>
+                                            <div><div>1</div></div>
+                                            <div><div>2</div></div>
+                                            <div><div>3</div></div>
+                                            <div><div>4</div></div>
+                                            <div><div>5</div></div>
+                                            <div><div>6</div></div>
+                                            <div><div>7</div></div>
+                                            <div><div>8</div></div>
+                                            <div><div>9</div></div>
+                                            <div><div>10</div></div>
+                                            <div><div>11</div></div>
+                                        </div>
+                                        <div class="circle operators">
+                                            <div><div>+</div></div>
+                                            <div><div>*</div></div>
+                                            <div><div>-</div></div>
+                                            <div><div>/</div></div>
+                                        </div>
+                                        <div class="circle input">
+                                            <div></div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </body>
+
+                </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/help-template.js b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/help-template.js
index fa6dab9..29db73f 100644
--- a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/help-template.js
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/help-template.js
@@ -10,4 +10,5 @@
 
 <p> To change the number in the center, click and replace it.</p>
 
-<p>"Display" button comes back to the activity.</p>
\ No newline at end of file
+<p>"Display" button comes back to the activity.</p>
+
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/config.xml
index 350fa89..e9cf3da 100644
--- a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/config.xml
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/config.xml
@@ -5,7 +5,7 @@
         version="1.0"
         width="800"
         height="600" 
-        ub:resizable="true">     
+        ub:resizable="false">     
    
 		<name>Calcul rapide</name>
 		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/ubw-main.css
index 66280eb..dbe76fb 100644
--- a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/ubw-main.css
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/ubw-main.css
@@ -1,308 +1,310 @@
 html, body {
-	margin:0;
-	padding: 0;
-	font-family: "helvetica neue";
-	font-size: 14px;
-	color: #666666;
+    margin:0;
+    padding: 0;
+    font-family: "helvetica neue";
+    font-size: 14px;
+    color: #666666;
 }
 
 #ubwidget {
-	position: absolute;
-	top: 0;
-	bottom: 0;
-	left: 0;
-	right: 0;
-	background: url("images/bg.png");
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    background: url("images/bg.png");
 }
 
 .theme-pad #ubwidget {
-	border-radius: 40px;
-	border-width: 52px;
-	
-	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
-	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
-			border-image: url("images/pad-bd.png") 52 repeat;
+    border-radius: 40px;
+    border-width: 52px;
+
+    -webkit-border-image: url("images/pad-bd.png") 52 repeat;
+    -moz-border-image: url("images/pad-bd.png") 52 repeat;
+    border-image: url("images/pad-bd.png") 52 repeat;
 }
 
 .theme-slate #ubwidget {
-	border-radius: 44px;
-	border-width: 52px;
-	
-	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
-	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
-			border-image: url("images/slate-bd.png") 52 repeat;
+    border-radius: 44px;
+    border-width: 52px;
+
+    -webkit-border-image: url("images/slate-bd.png") 52 repeat;
+    -moz-border-image: url("images/slate-bd.png") 52 repeat;
+    border-image: url("images/slate-bd.png") 52 repeat;
 }
 
 #ubwidget > .wrapper {
-	position: absolute;
-	top: 0px;
-	bottom: 0px;
-	left: 0px;
-	right: 0px;
-	overflow: hidden;
+    position: absolute;
+    top: 0px;
+    bottom: 0px;
+    left: 0px;
+    right: 0px;
+    overflow: hidden;
 }
 
 
 .theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
-	position: absolute;
-	top: -49px;
-	bottom: -5px;
-	left: -5px;
-	right: -5px;
-	overflow: hidden;
+    position: absolute;
+    top: -49px;
+    bottom: -5px;
+    left: -5px;
+    right: -5px;
+    overflow: hidden;
 }
 
 #toolbar {
-	display: table;
-	width: 100%;
-	height: 44px;
-	font-size: 24px;
-	color: #FFCC99;
-	padding:0 10px;
+    display: table;
+    width: 100%;
+    height: 44px;
+    font-size: 24px;
+    color: #FFCC99;
+    padding:0 10px;
 }
 
 .theme-pad #toolbar, .theme-slate #toolbar {
-	height: 38px;
-	padding: 6px 0 0;
+    height: 38px;
+    padding: 6px 0 0;
 }
 
 .theme-slate #toolbar {
-	color: #7F613F;
-	text-shadow: #FFDCA9 0 1px 0;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
 }
 
 
 #toolbar > * {
-	display: table-cell;
-	height: 100%;
-	vertical-align: middle;
+    display: table-cell;
+    height: 100%;
+    vertical-align: middle;
 }
 
 #toolbar .actions {
-	text-align: right;
+    text-align: right;
 }
 
 #toolbar button, h1 {
-	font-weight: normal;
-	font-size: 24px;
-	color: #FFCC99;
-	margin: 0;
+    font-weight: normal;
+    font-size: 24px;
+    color: #FFCC99;
+    margin: 0;
 }
 
 .theme-slate #toolbar button, .theme-slate h1 {
-	color: #7F613F;
-	text-shadow: #FFDCA9 0 1px 0;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
 }
 
 #toolbar button {
-	border: none;
-	padding: none;
-	outline: none;
-	background: none;
-	
-	cursor: pointer;
-	padding-left: 34px;
-	margin-left: 10px;
-	height: 32px;
+    border: none;
+    padding: none;
+    outline: none;
+    background: none;
+
+    cursor: pointer;
+    padding-left: 34px;
+    margin-left: 10px;
+    height: 32px;
 }
 
 #toolbar button span {
-	display: block;
-	line-height: 32px;
+    display: block;
+    line-height: 32px;
 }
 
 #toolbar button[role='edit'] {
-	background: url("images/toolbar-edit.png") left top no-repeat;	
+    background: url("images/toolbar-edit.png") left top no-repeat;	
 }
 
 #toolbar button[role='view'] {
-	display: none;
-	color: #FFF;
-	background: url("images/toolbar-edit.png") left -32px no-repeat;
+    display: none;
+    color: #FFF;
+    background: url("images/toolbar-edit.png") left -32px no-repeat;
 }
 
 #toolbar button[role='reload'] {
-	background: url("images/toolbar-reload.png") left top no-repeat;	
+    background: url("images/toolbar-reload.png") left top no-repeat;	
 }
 
 #toolbar button[role='help'] {
-	background: url("images/toolbar-help.png") left top no-repeat;	
-	display: none;
+    background: url("images/toolbar-help.png") left top no-repeat;	
+    display: none;
 }
 
 .hasHelp #toolbar button[role='help'] {
-	display: inline-block;
+    display: inline-block;
 }
 
 .showHelp #toolbar button[role='help'] {
-	color: #FFF;
-	background-position: left -32px;
+    color: #FFF;
+    background-position: left -32px;
 }
 
 .theme-slate #toolbar button[role='edit'] {
-	background-image: url("images/slate-toolbar-edit.png");
+    background-image: url("images/slate-toolbar-edit.png");
 }
 
 .theme-slate #toolbar button[role='view'] {
-	text-shadow: #7F613F 0 -1px 0;
-	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+    text-shadow: #7F613F 0 -1px 0;
+    background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
 }
 
 .theme-slate #toolbar button[role='reload'] {
-	background-image: url("images/slate-toolbar-reload.png");
+    background-image: url("images/slate-toolbar-reload.png");
 }
 
 .theme-slate #toolbar button[role='help'] {
-	background-image: url("images/slate-toolbar-help.png");
+    background-image: url("images/slate-toolbar-help.png");
 }
 
 .showHelp.theme-slate #toolbar button[role='help'] {
-	text-shadow: #7F613F 0 -1px 0;
+    text-shadow: #7F613F 0 -1px 0;
 }
 
 
 .onEdit #toolbar button[role='view'] {
-	display: inline-block;
+    display: inline-block;
 }
 
 .onEdit #toolbar button[role='edit'] {
-	display: none;
+    display: none;
 }
 
 #help {
-	width: 300px;
-	height: 400px;
-	position: absolute;
-	margin-top: 10px;
-	right: 10px;
-	z-index: 10000;
-	display: none;
+    width: 300px;
+    height: 400px;
+    position: absolute;
+    margin-top: 10px;
+    right: 10px;
+    z-index: 10000;
+    display: none;
 }
 
 .showHelp #help {
-	display: block;
+    display: block;
 }
 
 #content {
-	position: absolute;
-	top: 44px;
-	bottom: 0;
-	overflow: auto;
-	left: 0;
-	right: 0;
+    position: absolute;
+    top: 44px;
+    bottom: 0;
+    overflow: auto;
+    left: 0;
+    right: 0;
 
-	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
 }
 
 #parameters {
-	display:none;
-	padding: 10px 20px;
-	background: url("images/parameters-bg.png");
-	
-	-webkit-border-radius: 4px 4px 0 0;
-	   -moz-border-radius: 4px 4px 0 0;
-		-mz-border-radius: 4px 4px 0 0;
-			border-radius: 4px 4px 0 0;
+    display:none;
+    padding: 10px 20px;
+    background: url("images/parameters-bg.png");
+
+    -webkit-border-radius: 4px 4px 0 0;
+    -moz-border-radius: 4px 4px 0 0;
+    -mz-border-radius: 4px 4px 0 0;
+    border-radius: 4px 4px 0 0;
 }
 
 #parameters label {
-	font-style: italic;
+    font-style: italic;
 }
 
 #parameters  label > select, #parameters  label > input{
-	margin-left: 10px;
+    margin-left: 10px;
+    width: 80px;
 }
 
 #parameters > div.inline {
-	display: inline-block;
+    display: inline-block;
+    margin-right: 20px;
 }
 
 #parameters > div.inline+div.inline {
-	margin-left: 20px;
+    margin-right: 20px;
 }
 
 #parameters input[type=text],
 #parameters input[type=number] {
-	height: 26px;
-	border: 1px solid #BBB;
-	background-color: #FFF;
-	
-	padding: 0 4px;
-	
-	-webkit-border-radius: 4px;
-	   -moz-border-radius: 4px;
-	    -ms-border-radius: 4px;
-			border-radius: 4px;
-	
-	-webkit-box-shadow: 0 1px 0 #FFF;
-	   -moz-box-shadow: 0 1px 0 #FFF;
-	    -ms-box-shadow: 0 1px 0 #FFF;
-			box-shadow: 0 1px 0 #FFF;
+    height: 26px;
+    border: 1px solid #BBB;
+    background-color: #FFF;
+
+    padding: 0 4px;
+
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    -ms-border-radius: 4px;
+    border-radius: 4px;
+
+    -webkit-box-shadow: 0 1px 0 #FFF;
+    -moz-box-shadow: 0 1px 0 #FFF;
+    -ms-box-shadow: 0 1px 0 #FFF;
+    box-shadow: 0 1px 0 #FFF;
 }
 
 #parameters input.tiny {
-	width: 40px;
+    width: 40px;
 }
 
 #parameters input.small {
-	width: 80px;
+    width: 80px;
 }
 
 #parameters input.medium {
-	width: 120px;
+    width: 120px;
 }
 
 #parameters input.long {
-	width: 160px;
+    width: 160px;
 }
 
 #scene {
-	padding: 20px;
+    padding: 20px;
 }
 
 #scene > * {
-	margin: 0 auto;
+    margin: 0 auto;
 }
 .onEdit #scene {
 }
 
 .onEdit #parameters {
-	display: block;
+    display: block;
 }
 
 /*
 .card-container {
-  	-webkit-perspective: 600px;
-	width:100%;
-	height: 100%;
+        -webkit-perspective: 600px;
+        width:100%;
+        height: 100%;
 }
 .card {
-	position: relative;
-	width:100%;
-	height: 100%;
+        position: relative;
+        width:100%;
+        height: 100%;
 }
 .card > div {
-	position: absolute;
-	width:100%;
-	height: 100%;
-	-webkit-transform-style: preserve-3d;
-  	-webkit-transition: all .5s ease-in-out;
-	-webkit-backface-visibility: hidden;
+        position: absolute;
+        width:100%;
+        height: 100%;
+        -webkit-transform-style: preserve-3d;
+        -webkit-transition: all .5s ease-in-out;
+        -webkit-backface-visibility: hidden;
 }
 .card > div:first-child {
-	-webkit-transform: rotateY( 0deg );
+        -webkit-transform: rotateY( 0deg );
 }
 .card > div:last-child {
-	-webkit-transform: rotateY( -180deg );
+        -webkit-transform: rotateY( -180deg );
 }
 .card.flip > div:first-child {
-	-webkit-transform: rotateY( 180deg );
+        -webkit-transform: rotateY( 180deg );
 }
 .card.flip > div:last-child {
-	-webkit-transform: rotateY( 0deg );
+        -webkit-transform: rotateY( 0deg );
 }
 */
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help-template.js b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help-template.js
index f78ca09..0965d77 100644
--- a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help-template.js
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help-template.js
@@ -11,7 +11,7 @@
 <li> operation (addition, subtraction, multiplication),</li>
 <li> magnitude of proposed numbers,</li>
 <li> number of elements (2-4),</li>
-<li> number of operations (1-5). </li> </ul>
+<li> number of operations (2-10). </li> </ul>
 
 <p> Results are automatically calculated by the interactivity. </p>
 <p>"Display" button comes back to the activity.</p>
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help_fr-template.js b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help_fr-template.js
index 1c64700..cc4b395 100644
--- a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help_fr-template.js
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help_fr-template.js
@@ -11,6 +11,6 @@
 <li>l’opération à effectuer (addition, soustraction, multiplication),</li>
 <li>l’ordre de grandeur des nombres proposés,</li>
 <li>le nombre d'éléments de l’opération (2 à 4),</li>
-<li>le nombre d’opérations (1 à 5).</li></ul>
+<li>le nombre d’opérations (2 à 10).</li></ul>
 
 <p>Le résultat des opérations n’est pas à inscrire dans le mode "Edition", il est calculé automatiquement par l‘interactivité.</p>
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/config.xml
index 60aa658..748916d 100644
--- a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/config.xml	
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/config.xml	
@@ -5,7 +5,7 @@
         version="1.2"
         width="950"
         height="700" 
-        ub:resizable="true">     
+        ub:resizable="false">     
    
     <name>Notes</name>
     <author href="http://www.getuniboard.com"
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/index.html
index e79952a..cc33b21 100644
--- a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/index.html	
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/index.html	
@@ -3,86 +3,30 @@
     <head>
         <title>D'n'd</title>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
         <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url:'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }
+                    }
+                });      
             });
         </script>
     </head>
     <body>        
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>                    
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-       
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="data">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
         
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
     </body>
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/js/script.js
deleted file mode 100644
index 666d71e..0000000
--- a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/js/script.js	
+++ /dev/null
@@ -1,815 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    first_desc: "Odd numbers", 
-    second_desc: "Even numbers", 
-    enter: "Enter your category name here ...",
-    add: "Add new block",
-    wgt_name: "Categorize pictures",
-    reload: "Reload",
-    slate: "slate",
-    pad: "pad",
-    none: "none",
-    help: "Help",
-    help_content: 
-"<p> <h2> Categorize pictures </h2> </p>" +
-"<p> <h3> Sort pictures according to the name of the category</h3> </p>" +
-
-"<p> Drag and drop pictures in the corresponding category. All pictures should be placed to get a feed back from interactivity. If the result is incorrect, the area turns in red. If the result is correct, the area turns in green.</p> "+
-
-"<p> “Reload” button resets the exercises. </p>" +
-
-"<p> Enter the “Edit” mode to : </p>" +
-"<ul> <li> choose the theme of interactivity : pad, slate or none (none by default),</li>" +
-"<li> modify an exercise or create a new one.</li> </ul>" +
-
-
-"<p>To create a new exercise : </p>" +
-"<ul> <li> click on “New block”,</li>" +
-"<li> edit the category clicking on the text field “Enter your category name here ...”,</li>" +
-"<li> add an another category clicking on the “+”,</li>" +
-"<li> drag and drop pictures from your library on the correct category.</li> </ul>" +
-"<p> To delete a picture, click on the cross button on the frame.</p>" +
-"<p> To remove a category, click on the “-” sign on the right.</p>" +
-"<p> To delete a whole block, click on the cross on the left.</p>" +
-"<p>“Display” button comes back to the activity.</p>",
-    theme: "Theme"
-};
-
-//main function
-function start(){
-    
-    $("#wgt_display").text(sankoreLang.display);
-    $("#wgt_edit").text(sankoreLang.edit);
-    $("#wgt_name").text(sankoreLang.wgt_name);
-    $("#wgt_reload").text(sankoreLang.reload);
-    $("#wgt_help").text(sankoreLang.help);
-    $("#help").html(sankoreLang.help_content);
-    $("#style_select option[value='1']").text(sankoreLang.slate);
-    $("#style_select option[value='2']").text(sankoreLang.pad);
-    $("#style_select option[value='3']").text(sankoreLang.none);
-    var tmpl = $("div.inline label").html();
-    $("div.inline label").html(sankoreLang.theme + tmpl)
-    
-    if(window.sankore){
-        if(sankore.preference("categoriser_images","")){
-            var data = jQuery.parseJSON(sankore.preference("categoriser_images",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#wgt_help").click(function(){
-        var tmp = $(this);
-        if($(this).hasClass("open")){
-            $(this).removeClass("help_pad").removeClass("help_wood")
-            $("#help").slideUp("100", function(){
-                tmp.removeClass("open");
-                $("#data").show();
-            });
-        } else {
-            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
-            $("#data").hide();
-            $("#help").slideDown("100", function(){
-                tmp.addClass("open");
-            });
-        }
-    });
-    
-    $("#wgt_reload").click(function(){
-        if($("#wgt_display").hasClass("selected")){
-            $("#wgt_edit").trigger("click");
-            $("#wgt_display").trigger("click");
-        } else {
-            $("#wgt_display").trigger("click");
-        }
-    });
-    
-    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
-        exportData();
-    });
-    
-    $("#style_select").change(function (event){
-        changeStyle($(this).find("option:selected").val());
-    })
-    
-    $("#wgt_display, #wgt_edit").click(function(event){
-        if(this.id == "wgt_display"){
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#wgt_edit").removeClass("selected");
-                $("#parameters").css("display","none");
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_right = "";
-                    var tmp_array = [];
-                    
-                    container.find(".close_cont").remove();
-                    container.find(".imgs_cont").each(function(){                        
-                        $(this).find(".del_category").remove();
-                        $(this).find(".add_category").remove();                        
-                        $(this).removeAttr("ondragenter")
-                        .removeAttr("ondragleave")
-                        .removeAttr("ondragover")
-                        .removeAttr("ondrop")                        
-                        .find(".cat_desc").attr("disabled","disabled");
-                        var tmp_count = $(this).find(".img_block").size();
-                        $(this).find("input[name='count']").val(tmp_count);
-                        $(this).find(".img_block").each(function(){
-                            $(this).find(".close_img").remove();
-                            tmp_array.push($(this));
-                            $(this).remove();
-                        });
-                        $(this).droppable({
-                            hoverClass: 'dropHere',
-                            drop: function(event, ui) {
-                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                    var tmp_ui = $(ui.draggable).parent();
-                                    $(this).append($(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        });
-                        $(this).removeAttr("style");
-                    });
-                    
-                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: '#data'
-                        });
-                        tmp_array[i].appendTo(all_imgs);
-                    }
-                    
-                    all_imgs.droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_ui = $(ui.draggable).parent();                    
-                                    $(this).append($(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        }
-                    });
-                });
-                $(this).css("display", "none");
-                $("#wgt_edit").css("display", "block");
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#wgt_display").removeClass("selected");
-                $("#parameters").css("display","block");
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").each(function(){
-                        $("<button class='del_category'></button>").appendTo($(this));
-                        $("<button class='add_category'></button>").appendTo($(this));
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"#E6F6FF\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#C3E9FF\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"#E6F6FF\"); return onDropTarget(this,event);")
-                        .removeClass("red_cont")
-                        .removeClass("green_cont")
-                        .addClass("def_cont")
-                        .droppable("destroy")
-                        .find(".cat_desc").removeAttr("disabled");
-                        var tmp_img_cont = $(this);
-                        var tmp_mask = $(this).find("input[name='mask']").val();
-                        container.find(".img_block").each(function(){
-                            if($(this).find("input").val() == tmp_mask){
-                                $("<div class='close_img'>").appendTo($(this));
-                                $(this).appendTo(tmp_img_cont);
-                            }
-                        });
-                    });
-                    container.find(".all_imgs").remove();
-                });
-                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
-                $(this).css("display", "none");
-                $("#wgt_display").css("display", "block");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){       
-        $(this).parent().remove();        
-    });
-    
-    //adding new category
-    $(".add_category").live("click",function(){
-        addCategory($(this).parent());
-    });
-    
-    //deleting the category
-    $(".del_category").live("click",function(){
-        if($(this).parent().parent().find(".imgs_cont").size() == 1){
-            $(this).parent().find(".img_block").remove();
-            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
-        } else {
-            $(this).parent().remove();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#wgt_edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.style = $("#style_select").find("option:selected").val();
-            cont_obj.mode = "edit";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find(".img_block").size();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.link = $(this).find("img").attr("src");
-                    img_obj.ht = $(this).find("img").height();
-                    img_obj.wd = $(this).find("img").width();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.style = $("#style_select").find("option:selected").val();
-            cont_obj.mode = "display";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find("input[name='count']").val();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.link = $(this).find("img").attr("src");
-                    img_obj.ht = $(this).find("img").height();
-                    img_obj.wd = $(this).find("img").width();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            cont_obj.all_imgs = [];
-            $(this).find(".all_imgs .img_block").each(function(){
-                var img = new Object();
-                img.value = $(this).find("input").val();
-                img.link = $(this).find("img").attr("src");
-                img.ht = $(this).find("img").height();
-                img.wd = $(this).find("img").width();
-                cont_obj.all_imgs.push(img);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    
-    if($(".cont").size() == 0){
-        var cont_obj = new Object();
-        cont_obj.style = $("#style_select").find("option:selected").val();
-        cont_obj.tmp = "clear";
-        array_to_export.push(cont_obj);
-    }
-    if(window.sankore)
-        sankore.setPreference("categoriser_images", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].tmp){
-            changeStyle(data[i].style);
-            $("#style_select").val(data[i].style);
-        } else {
-            if(i == 0){
-                changeStyle(data[i].style);
-                $("#style_select").val(data[i].style);
-            }
-            if(data[i].mode == "edit"){          
-                var tmp_array = [];
-                var container = $("<div class='cont'>");
-                var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        
-                for(var j in data[i].conts){
-                    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
-                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                    for(var k in data[i].conts[j].imgs){
-                        var block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
-                        var img = $("<img src=\"" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);                        
-                        img.height(data[i].conts[j].imgs[k].ht);
-                        if((120 - data[i].conts[j].imgs[k].ht) > 0)
-                            img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
-                        tmp_array.push(block_img);
-                    }
-                
-                    imgs_container.droppable({
-                        hoverClass: 'dropHere',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                var tmp_ui = $(ui.draggable).parent();
-                                $(this).append($(ui.draggable));
-                                checkCorrectness(tmp_ui);
-                            }
-                        }
-                    });                                
-                }
-            
-                var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            
-                tmp_array = shuffle(tmp_array);
-                for(j in tmp_array){
-                    tmp_array[j].draggable({
-                        helper:'clone',
-                        zIndex:100,
-                        appendTo: '#data'
-                    });
-                    tmp_array[j].appendTo(all_imgs);
-                }
-            
-                all_imgs.sortable();
-            
-                all_imgs.droppable({
-                    hoverClass: 'dropBack',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            if(this != $(ui.draggable).parent()[0]){
-                                var tmp_ui = $(ui.draggable).parent();                    
-                                $(this).append($(ui.draggable));
-                                checkCorrectness(tmp_ui);
-                            }
-                        }
-                    }
-                });
-            
-                container.appendTo("#data");
-            } else {
-                container = $("<div class='cont'>");
-                sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
-        
-                for(j in data[i].conts){
-                    var tmp_img_array = [];
-                    imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
-                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                    tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
-                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                    for(k in data[i].conts[j].imgs){
-                        block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
-                        img = $("<img src=\"" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
-                        img.height(data[i].conts[j].imgs[k].ht);
-                        if((120 - data[i].conts[j].imgs[k].ht) > 0)
-                            img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
-                        tmp_img_array.push(block_img);
-                    }
-                
-                    tmp_img_array = shuffle(tmp_img_array);
-                    for(k in tmp_img_array){
-                        tmp_img_array[k].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: '#data'
-                        });
-                        tmp_img_array[k].appendTo(imgs_container);
-                    }
-                
-                    imgs_container.droppable({
-                        hoverClass: 'dropHere',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                var tmp_ui = $(ui.draggable).parent();
-                                $(this).append($(ui.draggable));
-                                checkCorrectness(tmp_ui);
-                            }
-                        }
-                    });          
-                }
-            
-                all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-                var all_imgs_arr = [];
-                for(j in data[i].all_imgs){            
-                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);
-                    img = $("<img src=\"" + data[i].all_imgs[j].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
-                    img.height(data[i].all_imgs[j].ht);
-                    if((120 - data[i].all_imgs[j].ht) > 0)
-                        img.css("margin",(120 - data[i].all_imgs[j].ht)/2 + "px 0");
-                    all_imgs_arr.push(block_img);
-                } 
-            
-                all_imgs_arr = shuffle(all_imgs_arr);
-                for(k in all_imgs_arr){
-                    all_imgs_arr[k].draggable({
-                        helper:'clone',
-                        zIndex:100,
-                        appendTo: '#data'
-                    });
-                    all_imgs_arr[k].appendTo(all_imgs);
-                }
-            
-                all_imgs.sortable();
-            
-                all_imgs.droppable({
-                    hoverClass: 'dropBack',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            if(this != $(ui.draggable).parent()[0]){
-                                var tmp_ui = $(ui.draggable).parent();                    
-                                $(this).append($(ui.draggable));
-                                checkCorrectness(tmp_ui);
-                            }
-                        }
-                    }
-                });            
-                container.appendTo("#data");
-                checkCorrectness(all_imgs);
-            }
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    changeStyle("3");
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("#data");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
-    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
-    var tmp_div_one = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_one);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
-    
-    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
-    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
-    var tmp_div_two = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_two);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
-    
-    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img1);
-    $("<img src=\"objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img2);
-    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img3);
-    $("<img src=\"objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img4);
-    $("<img src=\"objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img5);
-    $("<img src=\"objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: '#data'
-        });
-        tmp_array[i].appendTo(all_imgs);
-    }
-    all_imgs.sortable();
-    
-    imgs_container_one.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                $(this).append($(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    imgs_container_two.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                $(this).append($(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    all_imgs.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_ui = $(ui.draggable).parent();                    
-                    $(this).append($(ui.draggable));
-                    checkCorrectness(tmp_ui);
-                }
-            }
-        }
-    });
-}
-
-//function that allows to add new category
-function addCategory(obj){
-    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
-    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
-    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
-    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
-    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
-    container.insertBefore($(".add_block"));
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-//changing the style
-function changeStyle(val){
-    switch(val){
-        case "1":
-            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
-            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
-            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
-            $("#wgt_name").removeClass("pad_color");
-            $("#wgt_display").addClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").addClass("radius_ft");
-            break;
-        case "2":
-            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").removeClass("radius_ft");
-            break;
-        case "3":
-            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
-            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
-            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
-            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
-            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
-            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
-            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
-            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").addClass("without_radius").removeClass("radius_ft");
-            break;
-    }
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//return id
-function returnId(){
-    var tmp = Math.random().toString();
-    return tmp.substr(2);
-}
-
-//a func for checking when smth will drop
-function checkOnDrop(dest){
-    var tmp_count = dest.find("input[name='count']").val();
-    var tmp_mask = dest.find("input[name='mask']").val();
-    if(dest.find(".img_block").size() == tmp_count){
-        var tmp_right = true;                    
-        dest.find(".img_block").each(function(){
-            if($(this).find("input").val() != tmp_mask)
-                tmp_right = false;
-        });          
-        if(tmp_right)
-            dest.removeClass("def_cont").removeClass("red_cont").addClass("green_cont");
-        else
-            dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
-    } else 
-        dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
-}
-
-//checking source on correctness
-function checkCorrectness(source){
-    if(!source.hasClass("all_imgs")){
-        if(source.parent().find(".all_imgs").find(".img_block").size() == 0){
-            source.parent().find(".imgs_cont").each(function(){
-                checkOnDrop($(this))
-            })
-        } else {
-            source.parent().find(".imgs_cont").each(function(){
-                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
-            })
-        }
-    } else {
-        if(source.find(".img_block").size() > 0){
-            source.parent().find(".imgs_cont").each(function(){
-                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
-            })
-        } else {
-            source.parent().find(".imgs_cont").each(function(){
-                checkOnDrop($(this))
-            })
-        }
-    }
-}
-
-function onDropTarget(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        if(textData.getElementsByTagName("ready")[0].firstChild.textContent == "true"){
-            var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-            var img_block = $("<div class='img_block' style='text-align: center;'>");
-            $("<div class='close_img'>").appendTo(img_block);            
-            $("<input type='hidden' value='" + $(obj).find("input[name='mask']").val() + "'/>").appendTo(img_block);
-            var tmp_img = $("<img style='display: inline;'/>").attr("src", tmp).appendTo(img_block);
-            img_block.draggable({
-                helper:'clone',
-                zIndex:100,
-                appendTo: '#data'
-            });
-            $(obj).append(img_block);
-            
-            if(tmp_img.height() == 0){
-                var tmp_id = setInterval(function(){
-                    if(tmp_img.height() != 0){
-                        if(tmp_img.height() >= tmp_img.width())
-                            tmp_img.attr("height", "120");
-                        else{
-                            tmp_img.attr("width","120");
-                            var h = tmp_img.height();
-                            tmp_img.attr("height",h);
-                            tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                        }
-                        clearInterval(tmp_id);
-                    }
-                }, 10);
-            } else {
-                if(tmp_img.height() >= tmp_img.width())
-                    tmp_img.attr("height", "120");
-                else{
-                    tmp_img.attr("width","120");
-                    var h = tmp_img.height();
-                    tmp_img.attr("height",h);
-                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                }
-            }  
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/en/index.html b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/en/index.html
new file mode 100644
index 0000000..f21b641
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/en/index.html	
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){    
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                start();                   
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/en/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/en/js/script.js
new file mode 100644
index 0000000..b02c750
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/en/js/script.js	
@@ -0,0 +1,811 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    first_desc: "Odd numbers", 
+    second_desc: "Even numbers", 
+    enter: "Enter your category name here ...",
+    add: "Add new block",
+    wgt_name: "Categorize pictures",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p> <h2> Categorize pictures </h2> </p>" +
+"<p> <h3> Sort pictures according to the name of the category</h3> </p>" +
+
+"<p> Drag and drop pictures in the corresponding category. All pictures should be placed to get a feed back from interactivity. If the result is incorrect, the area turns in red. If the result is correct, the area turns in green.</p> "+
+
+"<p> “Reload” button resets the exercises. </p>" +
+
+"<p> Enter the “Edit” mode to : </p>" +
+"<ul> <li> choose the theme of interactivity : pad, slate or none (none by default),</li>" +
+"<li> modify the exercise.</li> </ul>" +
+
+"<p>In edition mode : </p>" +
+"<ul> <li> edit the category clicking on the text field,</li>" +
+"<li> add an another category clicking on the “+”,</li>" +
+"<li> drag and drop pictures from your library on the correct category,</li>" +
+"<li> delete a picture clicking on the cross button on the frame,</li>" +
+"<li> remove a category clicking on the “-” sign on the right,</li>" +
+"<li>“Display” button comes back to the activity.</li></ul>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("categoriser_images","")){
+            var data = jQuery.parseJSON(sankore.preference("categoriser_images",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+//                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_right = "";
+                    var tmp_array = [];
+                    
+//                    container.find(".close_cont").remove();
+                    container.find(".imgs_cont").each(function(){                        
+                        $(this).find(".del_category").remove();
+                        $(this).find(".add_category").remove();                        
+                        $(this).removeAttr("ondragenter")
+                        .removeAttr("ondragleave")
+                        .removeAttr("ondragover")
+                        .removeAttr("ondrop")                        
+                        .find(".cat_desc").attr("disabled","disabled");
+                        var tmp_count = $(this).find(".img_block").size();
+                        $(this).find("input[name='count']").val(tmp_count);
+                        $(this).find(".img_block").each(function(){
+                            $(this).find(".close_img").remove();
+                            tmp_array.push($(this));
+                            $(this).remove();
+                        });
+                        $(this).droppable({
+                            hoverClass: 'dropHere',
+                            drop: function(event, ui) {
+                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                    var tmp_ui = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        });
+                        $(this).removeAttr("style");
+                    });
+                    
+                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(all_imgs);
+                    }
+                    
+                    all_imgs.droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_ui = $(ui.draggable).parent();                    
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        }
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+//                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".imgs_cont").each(function(){
+                        $("<button class='del_category'></button>").appendTo($(this));
+                        $("<button class='add_category'></button>").appendTo($(this));
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"#E6F6FF\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#C3E9FF\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"#E6F6FF\"); return onDropTarget(this,event);")
+                        .removeClass("red_cont")
+                        .removeClass("green_cont")
+                        .addClass("def_cont")
+                        .droppable("destroy")
+                        .find(".cat_desc").removeAttr("disabled");
+                        var tmp_img_cont = $(this);
+                        var tmp_mask = $(this).find("input[name='mask']").val();
+                        container.find(".img_block").each(function(){
+                            if($(this).find("input").val() == tmp_mask){
+                                $("<div class='close_img'>").appendTo($(this));
+                                $(this).appendTo(tmp_img_cont);
+                            }
+                        });
+                    });
+                    container.find(".all_imgs").remove();
+                });
+                
+                
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){       
+        $(this).parent().remove();        
+    });
+    
+    //adding new category
+    $(".add_category").live("click",function(){
+        addCategory($(this).parent());
+    });
+    
+    //deleting the category
+    $(".del_category").live("click",function(){
+        if($(this).parent().parent().find(".imgs_cont").size() == 1){
+            $(this).parent().find(".img_block").remove();
+            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
+        } else {
+            $(this).parent().remove();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.mode = "edit";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find(".img_block").size();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.link = $(this).find("img").attr("src").replace("../../",""); 
+                    img_obj.ht = $(this).find("img").height();
+                    img_obj.wd = $(this).find("img").width();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.mode = "display";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find("input[name='count']").val();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.link = $(this).find("img").attr("src").replace("../../",""); 
+                    img_obj.ht = $(this).find("img").height();
+                    img_obj.wd = $(this).find("img").width();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            cont_obj.all_imgs = [];
+            $(this).find(".all_imgs .img_block").each(function(){
+                var img = new Object();
+                img.value = $(this).find("input").val();
+                img.link = $(this).find("img").attr("src").replace("../../",""); 
+                img.ht = $(this).find("img").height();
+                img.wd = $(this).find("img").width();
+                cont_obj.all_imgs.push(img);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    if(window.sankore)
+        sankore.setPreference("categoriser_images", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        } else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            if(data[i].mode == "edit"){          
+                var tmp_array = [];
+                var container = $("<div class='cont'>");
+                var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+//                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+        
+                for(var j in data[i].conts){
+                    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(var k in data[i].conts[j].imgs){
+                        var block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
+                        var img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);                        
+                        img.height(data[i].conts[j].imgs[k].ht);
+                        if((120 - data[i].conts[j].imgs[k].ht) > 0)
+                            img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
+                        tmp_array.push(block_img);
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });                                
+                }
+            
+                var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+            
+                tmp_array = shuffle(tmp_array);
+                for(j in tmp_array){
+                    tmp_array[j].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    tmp_array[j].appendTo(all_imgs);
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });
+            
+                container.appendTo("#data");
+            } else {
+                container = $("<div class='cont'>");
+                sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+//                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+        
+                for(j in data[i].conts){
+                    var tmp_img_array = [];
+                    imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(k in data[i].conts[j].imgs){
+                        block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
+                        img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
+                        img.height(data[i].conts[j].imgs[k].ht);
+                        if((120 - data[i].conts[j].imgs[k].ht) > 0)
+                            img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
+                        tmp_img_array.push(block_img);
+                    }
+                
+                    tmp_img_array = shuffle(tmp_img_array);
+                    for(k in tmp_img_array){
+                        tmp_img_array[k].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_img_array[k].appendTo(imgs_container);
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });          
+                }
+            
+                all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+                var all_imgs_arr = [];
+                for(j in data[i].all_imgs){            
+                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                    $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);
+                    img = $("<img src=\"../../" + data[i].all_imgs[j].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
+                    img.height(data[i].all_imgs[j].ht);
+                    if((120 - data[i].all_imgs[j].ht) > 0)
+                        img.css("margin",(120 - data[i].all_imgs[j].ht)/2 + "px 0");
+                    all_imgs_arr.push(block_img);
+                } 
+            
+                all_imgs_arr = shuffle(all_imgs_arr);
+                for(k in all_imgs_arr){
+                    all_imgs_arr[k].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    all_imgs_arr[k].appendTo(all_imgs);
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });            
+                container.appendTo("#data");
+                checkCorrectness(all_imgs);
+            }
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
+    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
+    var tmp_div_one = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_one);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
+    
+    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
+    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
+    var tmp_div_two = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_two);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
+    
+    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img1);
+    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img3);
+    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img4);
+    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img5);
+    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].appendTo(all_imgs);
+    }
+    all_imgs.sortable();
+    
+    imgs_container_one.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    imgs_container_two.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    all_imgs.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_ui = $(ui.draggable).parent();                    
+                    $(this).append($(ui.draggable));
+                    checkCorrectness(tmp_ui);
+                }
+            }
+        }
+    });
+}
+
+//function that allows to add new category
+function addCategory(obj){
+    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    imgs_container.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
+    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
+    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
+}
+
+//add new container
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    
+//    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
+//    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+//    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+//    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
+//    $("<button class='del_category'></button>").appendTo(imgs_container);
+//    $("<button class='add_category'></button>").appendTo(imgs_container);
+//    imgs_container.attr("ondragenter", "return false;")
+//    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
+//    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
+//    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
+//    container.insertBefore($(".add_block"));
+//}
+
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//return id
+function returnId(){
+    var tmp = Math.random().toString();
+    return tmp.substr(2);
+}
+
+//a func for checking when smth will drop
+function checkOnDrop(dest){
+    var tmp_count = dest.find("input[name='count']").val();
+    var tmp_mask = dest.find("input[name='mask']").val();
+    if(dest.find(".img_block").size() == tmp_count){
+        var tmp_right = true;                    
+        dest.find(".img_block").each(function(){
+            if($(this).find("input").val() != tmp_mask)
+                tmp_right = false;
+        });          
+        if(tmp_right)
+            dest.removeClass("def_cont").removeClass("red_cont").addClass("green_cont");
+        else
+            dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+    } else 
+        dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+}
+
+//checking source on correctness
+function checkCorrectness(source){
+    if(!source.hasClass("all_imgs")){
+        if(source.parent().find(".all_imgs").find(".img_block").size() == 0){
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        }
+    } else {
+        if(source.find(".img_block").size() > 0){
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        }
+    }
+}
+
+function onDropTarget(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        if(textData.getElementsByTagName("ready")[0].firstChild.textContent == "true"){
+            var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+            var img_block = $("<div class='img_block' style='text-align: center;'>");
+            $("<div class='close_img'>").appendTo(img_block);            
+            $("<input type='hidden' value='" + $(obj).find("input[name='mask']").val() + "'/>").appendTo(img_block);
+            var tmp_img = $("<img style='display: inline;'/>").attr("src", "../../" + tmp).appendTo(img_block);
+            img_block.draggable({
+                helper:'clone',
+                zIndex:100,
+                appendTo: '#data'
+            });
+            $(obj).append(img_block);
+            
+            if(tmp_img.height() == 0){
+                var tmp_id = setInterval(function(){
+                    if(tmp_img.height() != 0){
+                        if(tmp_img.height() >= tmp_img.width())
+                            tmp_img.attr("height", "120");
+                        else{
+                            tmp_img.attr("width","120");
+                            var h = tmp_img.height();
+                            tmp_img.attr("height",h);
+                            tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                        }
+                        clearInterval(tmp_id);
+                    }
+                }, 10);
+            } else {
+                if(tmp_img.height() >= tmp_img.width())
+                    tmp_img.attr("height", "120");
+                else{
+                    tmp_img.attr("width","120");
+                    var h = tmp_img.height();
+                    tmp_img.attr("height",h);
+                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                }
+            }  
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/img/drop_img.png
deleted file mode 100644
index 231d0b2..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/img/drop_img.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/js/script.js
index 08afbca..0178c9d 100644
--- a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/js/script.js	
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/js/script.js	
@@ -19,18 +19,15 @@ var sankoreLang = {
 
     "<p>Le bouton “Modifier” vous permet :</p>"+
     "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun) ,</li>"+
-    "<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité.</li></ul>"+
+    "<li>de modifier l'exercice.</li></ul>"+
 
-    "<p>En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, une zone bleue apparaît, c’est une catégorie, puis</p>"+
-    "<ul><li>insérez le nom de la catégorie (par exemple “fruits”, “légumes”, “mammifères”...) en cliquant dans le champ de texte “Saisir le nom de la catégorie ici …”,</li>"+
+    "<p>En mode édition :</p>"+
+    "<ul><li>modifiez le nom de la catégorie (par exemple “fruits”, “légumes”, “mammifères”...) en cliquant dans le champ de texte,</li>"+
     "<li>insérez des images dans la catégorie par glisser-déposer des images à partir de votre bibliothèque,</li>"+
-    "<li>ajoutez ensuite une catégorie (ou plusieurs)  en cliquant sur le signe “+” situé à droite de la catégorie, complétez par son nom et ajoutez des images.</li></ul>"+
-    "<p>Pour supprimer une image, cliquez sur la croix située dans le coin supérieur droit de l’image.</p>"+ 
-    "<p>Pour supprimer une catégorie, cliquez sur le signe “-” situé à droite de celle-ci.</p>"+
-
-    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
-
-    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    "<li>ajoutez ensuite une catégorie (ou plusieurs)  en cliquant sur le signe “+” situé à droite de la catégorie, complétez par son nom et ajoutez des images,</li>"+
+    "<li>supprimez une image, en cliquant sur la croix située dans son coin supérieur droit,</li>"+ 
+    "<li>supprimez une catégorie, en cliquant sur le signe “-” situé à droite de celle-ci,</li>"+
+    "<li>le bouton “Afficher” vous permet d’utiliser l’activité.</li></ul>",
     theme: "Thème"
 };
 
@@ -106,15 +103,16 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display","none");
-                sankore.enableDropOnWidget(false);
-                $(".add_block").remove();
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     var tmp_i = 0;
                     var tmp_right = "";
                     var tmp_array = [];
                     
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     container.find(".imgs_cont").each(function(){                        
                         $(this).find(".del_category").remove();
                         $(this).find(".add_category").remove();                        
@@ -176,11 +174,12 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_display").removeClass("selected");
                 $("#parameters").css("display","block");
-                sankore.enableDropOnWidget(true);
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
                 $(".cont").each(function(){
                     var container = $(this);
                     
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find(".imgs_cont").each(function(){
                         $("<button class='del_category'></button>").appendTo($(this));
                         $("<button class='add_category'></button>").appendTo($(this));
@@ -206,7 +205,7 @@ function start(){
                 });
                 
                 
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
@@ -214,9 +213,9 @@ function start(){
     });
     
     //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
     
     //adding new img
     $(".add_img").live("click", function(){
@@ -224,10 +223,10 @@ function start(){
     });
     
     //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
     $(".close_img").live("click", function(){       
@@ -268,7 +267,7 @@ function exportData(){
                 $(this).find(".img_block").each(function(){
                     var img_obj = new Object();
                     img_obj.value = $(this).find("input").val();
-                    img_obj.link = $(this).find("img").attr("src").replace("../../","");                    
+                    img_obj.link = $(this).find("img").attr("src").replace("../../",""); 
                     img_obj.ht = $(this).find("img").height();
                     img_obj.wd = $(this).find("img").width();
                     img_cont.imgs.push(img_obj);
@@ -292,7 +291,7 @@ function exportData(){
                 $(this).find(".img_block").each(function(){
                     var img_obj = new Object();
                     img_obj.value = $(this).find("input").val();
-                    img_obj.link = $(this).find("img").attr("src").replace("../../","");                    
+                    img_obj.link = $(this).find("img").attr("src").replace("../../",""); 
                     img_obj.ht = $(this).find("img").height();
                     img_obj.wd = $(this).find("img").width();
                     img_cont.imgs.push(img_obj);
@@ -303,7 +302,7 @@ function exportData(){
             $(this).find(".all_imgs .img_block").each(function(){
                 var img = new Object();
                 img.value = $(this).find("input").val();
-                img.link = $(this).find("img").attr("src").replace("../../","");                
+                img.link = $(this).find("img").attr("src").replace("../../",""); 
                 img.ht = $(this).find("img").height();
                 img.wd = $(this).find("img").width();
                 cont_obj.all_imgs.push(img);
@@ -318,14 +317,13 @@ function exportData(){
         cont_obj.tmp = "clear";
         array_to_export.push(cont_obj);
     }
-    
-    sankore.setPreference("categoriser_images", JSON.stringify(array_to_export));
+    if(window.sankore)
+        sankore.setPreference("categoriser_images", JSON.stringify(array_to_export));
 }
 
 //import
 function importData(data){
-    
-    var tmp = 0;    
+       
     for(var i in data){
         if(data[i].tmp){
             changeStyle(data[i].style);
@@ -339,7 +337,7 @@ function importData(data){
                 var tmp_array = [];
                 var container = $("<div class='cont'>");
                 var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
         
                 for(var j in data[i].conts){
                     var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
@@ -351,7 +349,7 @@ function importData(data){
                     for(var k in data[i].conts[j].imgs){
                         var block_img = $("<div class='img_block' style='text-align: center;'></div>");
                         $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
-                        var img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
+                        var img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);                        
                         img.height(data[i].conts[j].imgs[k].ht);
                         if((120 - data[i].conts[j].imgs[k].ht) > 0)
                             img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
@@ -367,7 +365,7 @@ function importData(data){
                                 checkCorrectness(tmp_ui);
                             }
                         }
-                    });                
+                    });                                
                 }
             
                 var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
@@ -401,7 +399,7 @@ function importData(data){
             } else {
                 container = $("<div class='cont'>");
                 sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+//                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
         
                 for(j in data[i].conts){
                     var tmp_img_array = [];
@@ -439,8 +437,7 @@ function importData(data){
                                 checkCorrectness(tmp_ui);
                             }
                         }
-                    }); 
-                    checkCorrectness(imgs_container);
+                    });          
                 }
             
                 all_imgs = $("<div class='all_imgs'>").appendTo(container); 
@@ -498,7 +495,7 @@ function showExample(){
     var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
     var all_imgs = $("<div class='all_imgs'>").appendTo(container);
 
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
     
     $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
     $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
@@ -590,33 +587,33 @@ function addCategory(obj){
 }
 
 //add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
-    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
-    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
-    container.insertBefore($(".add_block"));
-}
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    
+//    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
+//    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+//    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+//    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
+//    $("<button class='del_category'></button>").appendTo(imgs_container);
+//    $("<button class='add_category'></button>").appendTo(imgs_container);
+//    imgs_container.attr("ondragenter", "return false;")
+//    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
+//    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
+//    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
+//    container.insertBefore($(".add_block"));
+//}
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 //shuffles an array
 function shuffle( arr )
@@ -633,19 +630,6 @@ function shuffle( arr )
     return arr;
 }
 
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-
 //changing the style
 function changeStyle(val){
     switch(val){
@@ -703,6 +687,18 @@ function changeStyle(val){
     }
 }
 
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
 //return id
 function returnId(){
     var tmp = Math.random().toString();
@@ -798,7 +794,6 @@ function onDropTarget(obj, event) {
                 }
             }  
         }
-        exportData();
     }
     else {
         alert ("Your browser does not support the dataTransfer object.");
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/img/drop_img.png
deleted file mode 100644
index 2796c02..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/img/drop_img.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/js/script.js
index 0684401..ad841e8 100644
--- a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/js/script.js	
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/js/script.js	
@@ -87,15 +87,16 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display","none");
-                sankore.enableDropOnWidget(false);
-                $(".add_block").remove();
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     var tmp_i = 0;
                     var tmp_right = "";
                     var tmp_array = [];
                     
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     container.find(".imgs_cont").each(function(){                        
                         $(this).find(".del_category").remove();
                         $(this).find(".add_category").remove();                        
@@ -157,11 +158,12 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_display").removeClass("selected");
                 $("#parameters").css("display","block");
-                sankore.enableDropOnWidget(true);
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
                 $(".cont").each(function(){
                     var container = $(this);
                     
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find(".imgs_cont").each(function(){
                         $("<button class='del_category'></button>").appendTo($(this));
                         $("<button class='add_category'></button>").appendTo($(this));
@@ -187,7 +189,7 @@ function start(){
                 });
                 
                 
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
@@ -195,9 +197,9 @@ function start(){
     });
     
     //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
     
     //adding new img
     $(".add_img").live("click", function(){
@@ -205,10 +207,10 @@ function start(){
     });
     
     //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
     $(".close_img").live("click", function(){       
@@ -249,7 +251,7 @@ function exportData(){
                 $(this).find(".img_block").each(function(){
                     var img_obj = new Object();
                     img_obj.value = $(this).find("input").val();
-                    img_obj.link = $(this).find("img").attr("src").replace("../../","");                    
+                    img_obj.link = $(this).find("img").attr("src").replace("../../",""); 
                     img_obj.ht = $(this).find("img").height();
                     img_obj.wd = $(this).find("img").width();
                     img_cont.imgs.push(img_obj);
@@ -273,7 +275,7 @@ function exportData(){
                 $(this).find(".img_block").each(function(){
                     var img_obj = new Object();
                     img_obj.value = $(this).find("input").val();
-                    img_obj.link = $(this).find("img").attr("src").replace("../../","");                    
+                    img_obj.link = $(this).find("img").attr("src").replace("../../",""); 
                     img_obj.ht = $(this).find("img").height();
                     img_obj.wd = $(this).find("img").width();
                     img_cont.imgs.push(img_obj);
@@ -284,7 +286,7 @@ function exportData(){
             $(this).find(".all_imgs .img_block").each(function(){
                 var img = new Object();
                 img.value = $(this).find("input").val();
-                img.link = $(this).find("img").attr("src").replace("../../","");                
+                img.link = $(this).find("img").attr("src").replace("../../",""); 
                 img.ht = $(this).find("img").height();
                 img.wd = $(this).find("img").width();
                 cont_obj.all_imgs.push(img);
@@ -299,14 +301,13 @@ function exportData(){
         cont_obj.tmp = "clear";
         array_to_export.push(cont_obj);
     }
-    
-    sankore.setPreference("categoriser_images", JSON.stringify(array_to_export));
+    if(window.sankore)
+        sankore.setPreference("categoriser_images", JSON.stringify(array_to_export));
 }
 
 //import
 function importData(data){
-    
-    var tmp = 0;    
+      
     for(var i in data){
         if(data[i].tmp){
             changeStyle(data[i].style);
@@ -320,7 +321,7 @@ function importData(data){
                 var tmp_array = [];
                 var container = $("<div class='cont'>");
                 var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
         
                 for(var j in data[i].conts){
                     var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
@@ -332,7 +333,7 @@ function importData(data){
                     for(var k in data[i].conts[j].imgs){
                         var block_img = $("<div class='img_block' style='text-align: center;'></div>");
                         $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
-                        var img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
+                        var img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);                        
                         img.height(data[i].conts[j].imgs[k].ht);
                         if((120 - data[i].conts[j].imgs[k].ht) > 0)
                             img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
@@ -348,7 +349,7 @@ function importData(data){
                                 checkCorrectness(tmp_ui);
                             }
                         }
-                    });                
+                    });                                
                 }
             
                 var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
@@ -382,7 +383,7 @@ function importData(data){
             } else {
                 container = $("<div class='cont'>");
                 sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+//                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
         
                 for(j in data[i].conts){
                     var tmp_img_array = [];
@@ -420,8 +421,7 @@ function importData(data){
                                 checkCorrectness(tmp_ui);
                             }
                         }
-                    }); 
-                    checkCorrectness(imgs_container);
+                    });          
                 }
             
                 all_imgs = $("<div class='all_imgs'>").appendTo(container); 
@@ -479,7 +479,7 @@ function showExample(){
     var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
     var all_imgs = $("<div class='all_imgs'>").appendTo(container);
 
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
     
     $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
     $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
@@ -571,33 +571,33 @@ function addCategory(obj){
 }
 
 //add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
-    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
-    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
-    container.insertBefore($(".add_block"));
-}
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    
+//    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
+//    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+//    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+//    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
+//    $("<button class='del_category'></button>").appendTo(imgs_container);
+//    $("<button class='add_category'></button>").appendTo(imgs_container);
+//    imgs_container.attr("ondragenter", "return false;")
+//    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
+//    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
+//    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
+//    container.insertBefore($(".add_block"));
+//}
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 //shuffles an array
 function shuffle( arr )
@@ -614,19 +614,6 @@ function shuffle( arr )
     return arr;
 }
 
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-
 //changing the style
 function changeStyle(val){
     switch(val){
@@ -684,6 +671,18 @@ function changeStyle(val){
     }
 }
 
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
 //return id
 function returnId(){
     var tmp = Math.random().toString();
@@ -779,7 +778,6 @@ function onDropTarget(obj, event) {
                 }
             }  
         }
-        exportData();
     }
     else {
         alert ("Your browser does not support the dataTransfer object.");
@@ -792,4 +790,4 @@ function onDropTarget(obj, event) {
         event.cancelBubble = true;
     }
     return false;
-}
\ No newline at end of file
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/config.xml
index 10d1fb0..9c4ca87 100644
--- a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/config.xml	
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/config.xml	
@@ -4,8 +4,8 @@
         id="http://uniboard.mnemis.com/widgets/notes" 
         version="1.2"
         width="990"
-        height="560" 
-        ub:resizable="true">     
+        height="600" 
+        ub:resizable="false">     
    
     <name>Notes</name>
     <author href="http://www.getuniboard.com"
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/index.html
index e79952a..cc33b21 100644
--- a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/index.html	
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/index.html	
@@ -3,86 +3,30 @@
     <head>
         <title>D'n'd</title>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
         <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url:'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }
+                    }
+                });      
             });
         </script>
     </head>
     <body>        
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>                    
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-       
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="data">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
         
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
     </body>
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/js/script.js
deleted file mode 100644
index da40ece..0000000
--- a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/js/script.js	
+++ /dev/null
@@ -1,750 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    first_desc: "Fruits", 
-    second_desc: "Vegetables",
-    potatoes: "Potato",
-    carrot: "Carrot",
-    onion: "Onion",
-    apple: "Apple",
-    pear: "Pear",
-    enter: "Enter your category name here ...",
-    add: "Add new block",
-    text: "Some text",
-    wgt_name: "Categorize text",
-    reload: "Reload",
-    slate: "slate",
-    pad: "pad",
-    none: "none",
-    help: "Help",
-    help_content: 
-"<p><h2>Categorize text</h2></p>" +
-"<p><h3>Sort labels according to the name of the category</h3></p>" +
-"<p>Drag and drop labels in the corresponding category. All pictures should be placed to get a feed back from interactivity. If the result is incorrect, the area turns in red. If the result is correct, the area turns in green.</p>" +
-"<p>“Reload” button resets the exercises.</p>" +
-"<p>Enter the “Edit” mode to :</p>" +
-"<ul><li>choose the theme of interactivity : pad, slate or none (none by default),</li>" +
-"<li>modify an exercise or create a new one.</li></ul>" +
-"<p>To create a new exercise :</p>" +
-"<ul><li>click on “New block”,</li>" +
-"<li>edit the category clicking on the text field “Enter your category name here ... ”,</li>" +
-"<li>add an another category clicking on the “+” (small one),</li>" +
-"<li>add a label clicking on the “+” (big one) on the correct category,</li>" +
-"<li>modify the text field clicking on it.</li></ul>" +
-"<p>To remove a label, click on the cross button on the frame.</p>" +
-"<p>To delete a category, click on the “-” sign on the right.</p>" +
-"<p>To delete a whole block, click on the cross on the left.</p>" +
-"<p>“Display” button comes back to the activity.</p>",
-    theme: "Theme"
-};
-
-//main function
-function start(){
-    
-    $("#wgt_display").text(sankoreLang.display);
-    $("#wgt_edit").text(sankoreLang.edit);
-    $("#wgt_name").text(sankoreLang.wgt_name);
-    $("#wgt_reload").text(sankoreLang.reload);
-    $("#wgt_help").text(sankoreLang.help);
-    $("#help").html(sankoreLang.help_content);
-    $("#style_select option[value='1']").text(sankoreLang.slate);
-    $("#style_select option[value='2']").text(sankoreLang.pad);
-    $("#style_select option[value='3']").text(sankoreLang.none);
-    var tmpl = $("div.inline label").html();
-    $("div.inline label").html(sankoreLang.theme + tmpl)
-    
-    if(window.sankore){
-        if(sankore.preference("categoriser_text","")){
-            var data = jQuery.parseJSON(sankore.preference("categoriser_text",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#wgt_help").click(function(){
-        var tmp = $(this);
-        if($(this).hasClass("open")){
-            $(this).removeClass("help_pad").removeClass("help_wood")
-            $("#help").slideUp("100", function(){
-                tmp.removeClass("open");
-                $("#data").show();
-            });
-        } else {
-            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
-            $("#data").hide();
-            $("#help").slideDown("100", function(){
-                tmp.addClass("open");
-            });
-        }
-    });
-    
-    $("#wgt_reload").click(function(){
-        if($("#wgt_display").hasClass("selected")){
-            $("#wgt_edit").trigger("click");
-            $("#wgt_display").trigger("click");
-        } else {
-            $("#wgt_display").trigger("click");
-        }
-    });
-    
-    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
-        exportData();
-    });
-    
-    $("#style_select").change(function (event){
-        changeStyle($(this).find("option:selected").val());
-    })
-    
-    $("#wgt_display, #wgt_edit").click(function(event){
-        if(this.id == "wgt_display"){
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#wgt_edit").removeClass("selected");
-                $("#parameters").css("display","none");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_right = "";
-                    var tmp_array = [];
-                    
-                    container.find(".close_cont").remove();
-                    container.find(".imgs_cont").each(function(){                        
-                        $(this).find(".del_category").remove();
-                        $(this).find(".add_img").remove();
-                        $(this).find(".add_category").remove();                        
-                        $(this).removeAttr("ondragenter")
-                        .removeAttr("ondragleave")
-                        .removeAttr("ondragover")
-                        .removeAttr("ondrop")                        
-                        .find(".cat_desc").attr("disabled","disabled");
-                        var tmp_count = $(this).find(".img_block").size();
-                        $(this).find("input[name='count']").val(tmp_count);
-                        $(this).find(".img_block").each(function(){
-                            $(this).find(".close_img").remove();
-                            var tmp_text = $(this).find(".text_cont");
-                            tmp_text.removeAttr("contenteditable")
-                            .css("margin", ($(this).height() - tmp_text.height())/2 + "px 0px");
-                            tmp_array.push($(this));
-                            $(this).remove();
-                        });
-                        $(this).droppable({
-                            hoverClass: 'dropHere',
-                            drop: function(event, ui) {
-                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                    var tmp_ui = $(ui.draggable).parent();
-                                    $(this).append($(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        });
-                        $(this).removeAttr("style");
-                    });
-                    
-                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: '#data'
-                        });
-                        tmp_array[i].appendTo(all_imgs);
-                    }
-                    
-                    all_imgs.droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_ui = $(ui.draggable).parent();                    
-                                    $(this).append($(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        }
-                    });
-                });
-                $(this).css("display", "none");
-                $("#wgt_edit").css("display", "block");
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#wgt_display").removeClass("selected");
-                $("#parameters").css("display","block");
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").each(function(){
-                        $("<button class='del_category'></button>").appendTo($(this));
-                        $("<button class='add_category'></button>").appendTo($(this));
-                        $(this).removeClass("red_cont")
-                        .removeClass("green_cont")
-                        .addClass("def_cont")
-                        .droppable("destroy")
-                        .find(".cat_desc").removeAttr("disabled");
-                        var tmp_img_cont = $(this);
-                        var tmp_mask = $(this).find("input[name='mask']").val();
-                        container.find(".img_block").each(function(){
-                            $(this).draggable("destroy")
-                            .find(".text_cont").attr("contenteditable","true")
-                            .removeAttr("style");
-                            if($(this).find("input").val() == tmp_mask){
-                                $("<div class='close_img'>").appendTo($(this));
-                                $(this).appendTo(tmp_img_cont);
-                            }
-                        });
-                        $("<div class='add_img'>").appendTo($(this));
-                    });
-                    container.find(".all_imgs").remove();
-                });
-                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
-                $(this).css("display", "none");
-                $("#wgt_display").css("display", "block");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addText($(this).parent(), $(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){       
-        $(this).parent().remove();        
-    });
-    
-    //adding new category
-    $(".add_category").live("click",function(){
-        addCategory($(this).parent());
-    });
-    
-    //deleting the category
-    $(".del_category").live("click",function(){
-        if($(this).parent().parent().find(".imgs_cont").size() == 1){
-            $(this).parent().find(".img_block").remove();
-            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
-        } else {
-            $(this).parent().remove();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#wgt_edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "edit";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                cont_obj.style = $("#style_select").find("option:selected").val();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find(".img_block").size();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.text = $(this).find(".text_cont").text();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "display";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                cont_obj.style = $("#style_select").find("option:selected").val();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find("input[name='count']").val();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.text = $(this).find(".text_cont").text();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            cont_obj.all_imgs = [];
-            $(this).find(".all_imgs .img_block").each(function(){
-                var img = new Object();
-                img.value = $(this).find("input").val();
-                img.text = $(this).find(".text_cont").text();
-                cont_obj.all_imgs.push(img);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    
-    if($(".cont").size() == 0){
-        var cont_obj = new Object();
-        cont_obj.style = $("#style_select").find("option:selected").val();
-        cont_obj.tmp = "clear";
-        array_to_export.push(cont_obj);
-    }
-    if(window.sankore)
-        sankore.setPreference("categoriser_text", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].tmp){
-            changeStyle(data[i].style);
-            $("#style_select").val(data[i].style);
-        }
-        else {
-            if(i == 0){
-                changeStyle(data[i].style);
-                $("#style_select").val(data[i].style);
-            }
-            if(data[i].mode == "edit"){          
-                var tmp_array = [];
-                var container = $("<div class='cont'>").appendTo("#data");
-                var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        
-                for(var j in data[i].conts){
-                    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
-                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                    for(var k in data[i].conts[j].imgs){
-                        var block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                    
-                        $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
-                        tmp_array.push(block_img);
-                    }
-                
-                    imgs_container.droppable({
-                        hoverClass: 'dropHere',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                var tmp_ui = $(ui.draggable).parent();
-                                $(this).append($(ui.draggable));
-                                checkCorrectness(tmp_ui);
-                            }
-                        }
-                    });                                
-                }
-            
-                var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            
-                tmp_array = shuffle(tmp_array);
-                for(j in tmp_array){
-                    tmp_array[j].draggable({
-                        helper:'clone',
-                        zIndex:100,
-                        appendTo: '#data'
-                    });
-                    tmp_array[j].appendTo(all_imgs);
-                    var tmp_text = tmp_array[j].find(".text_cont");
-                    tmp_text.css("margin", (tmp_array[j].height() - tmp_text.height())/2 + "px 0px");
-                }
-            
-                all_imgs.sortable();
-            
-                all_imgs.droppable({
-                    hoverClass: 'dropBack',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            if(this != $(ui.draggable).parent()[0]){
-                                var tmp_ui = $(ui.draggable).parent();                    
-                                $(this).append($(ui.draggable));
-                                checkCorrectness(tmp_ui);
-                            }
-                        }
-                    }
-                });
-            } else {
-                container = $("<div class='cont'>").appendTo("#data");
-                sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
-        
-                for(j in data[i].conts){
-                    var tmp_img_array = [];
-                    imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
-                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                    tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
-                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                    for(k in data[i].conts[j].imgs){
-                        block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                   
-                        $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
-                        tmp_img_array.push(block_img);
-                    }
-                
-                    tmp_img_array = shuffle(tmp_img_array);
-                    for(k in tmp_img_array){
-                        tmp_img_array[k].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: '#data'
-                        });
-                        tmp_img_array[k].appendTo(imgs_container);
-                        tmp_text = tmp_img_array[k].find(".text_cont");
-                        tmp_text.css("margin", (tmp_img_array[k].height() - tmp_text.height())/2 + "px 0px");
-                    }
-                
-                    imgs_container.droppable({
-                        hoverClass: 'dropHere',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                var tmp_ui = $(ui.draggable).parent();
-                                $(this).append($(ui.draggable));
-                                checkCorrectness(tmp_ui);
-                            }
-                        }
-                    });                    
-                }
-            
-                all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-                var all_imgs_arr = [];
-                for(j in data[i].all_imgs){            
-                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);                
-                    $("<div class='text_cont'>" + data[i].all_imgs[j].text + "</div>").appendTo(block_img);
-                    all_imgs_arr.push(block_img);
-                } 
-            
-                all_imgs_arr = shuffle(all_imgs_arr);
-                for(k in all_imgs_arr){
-                    all_imgs_arr[k].draggable({
-                        helper:'clone',
-                        zIndex:100,
-                        appendTo: '#data'
-                    });
-                    all_imgs_arr[k].appendTo(all_imgs);
-                    tmp_text = all_imgs_arr[k].find(".text_cont");
-                    tmp_text.css("margin", (all_imgs_arr[k].height() - tmp_text.height())/2 + "px 0px");
-                }
-            
-                all_imgs.sortable();
-            
-                all_imgs.droppable({
-                    hoverClass: 'dropBack',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            if(this != $(ui.draggable).parent()[0]){
-                                var tmp_ui = $(ui.draggable).parent();                    
-                                $(this).append($(ui.draggable));
-                                checkCorrectness(tmp_ui);
-                            }
-                        }
-                    }
-                });   
-                checkCorrectness(all_imgs);
-            }
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    changeStyle("3");
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("#data");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
-    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
-    var tmp_div_one = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_one);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
-    
-    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
-    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
-    var tmp_div_two = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_two);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
-    
-    var text1 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(text1);
-    $("<div class='text_cont'>" + sankoreLang.potatoes + "</div>").appendTo(text1);
-    var text2 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(text2);
-    $("<div class='text_cont'>" + sankoreLang.apple + "</div>").appendTo(text2);
-    var text3 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(text3);
-    $("<div class='text_cont'>" + sankoreLang.carrot + "</div>").appendTo(text3);
-    var text4 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(text4);
-    $("<div class='text_cont'>" + sankoreLang.pear + "</div>").appendTo(text4);
-    var text5 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(text5);
-    $("<div class='text_cont'>" + sankoreLang.onion + "</div>").appendTo(text5);  
-    
-    tmp_array.push(text1, text2, text3, text4, text5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: '#data'
-        });
-        tmp_array[i].find(".text_cont").css("margin", "21px 0px");
-        tmp_array[i].appendTo(all_imgs);
-    }
-    all_imgs.sortable();
-    
-    imgs_container_one.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                $(this).append($(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    imgs_container_two.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                $(this).append($(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    all_imgs.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_ui = $(ui.draggable).parent();                    
-                    $(this).append($(ui.draggable));
-                    checkCorrectness(tmp_ui);
-                }
-            }
-        }
-    });
-}
-
-//add text block
-function addText(dest, source){
- 
-    var text_block = $("<div class='img_block' style='text-align: center;'>").insertBefore(source);
-    $("<div class='close_img'>").appendTo(text_block);            
-    $("<input type='hidden' value='" + dest.find("input[name='mask']").val() + "'/>").appendTo(text_block);
-    $("<div class='text_cont' contenteditable='true'>" + sankoreLang.text + "</div>").appendTo(text_block);    
-}
-
-//function that allows to add new category
-function addCategory(obj){
-    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    $("<div class='add_img'>").appendTo(imgs_container);
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//return id
-function returnId(){
-    var tmp = Math.random().toString();
-    return tmp.substr(2);
-}
-
-//changing the style
-function changeStyle(val){
-    switch(val){
-        case "1":
-            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
-            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
-            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
-            $("#wgt_name").removeClass("pad_color");
-            $("#wgt_display").addClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").addClass("radius_ft");
-            break;
-        case "2":
-            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").removeClass("radius_ft");
-            break;
-        case "3":
-            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
-            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
-            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
-            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
-            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
-            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
-            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
-            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").addClass("without_radius").removeClass("radius_ft");
-            break;
-    }
-}
-
-//a func for checking when smth will drop
-function checkOnDrop(dest){
-    var tmp_count = dest.find("input[name='count']").val();
-    var tmp_mask = dest.find("input[name='mask']").val();
-    if(dest.find(".img_block").size() == tmp_count){
-        var tmp_right = true;                    
-        dest.find(".img_block").each(function(){
-            if($(this).find("input").val() != tmp_mask)
-                tmp_right = false;
-        });          
-        if(tmp_right)
-            dest.removeClass("def_cont").removeClass("red_cont").addClass("green_cont");
-        else
-            dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
-    } else 
-        dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
-}
-
-//checking source on correctness
-function checkCorrectness(source){
-    if(!source.hasClass("all_imgs")){
-        if(source.parent().find(".all_imgs").find(".img_block").size() == 0){
-            source.parent().find(".imgs_cont").each(function(){
-                checkOnDrop($(this))
-            })
-        } else {
-            source.parent().find(".imgs_cont").each(function(){
-                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
-            })
-        }
-    } else {
-        if(source.find(".img_block").size() > 0){
-            source.parent().find(".imgs_cont").each(function(){
-                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
-            })
-        } else {
-            source.parent().find(".imgs_cont").each(function(){
-                checkOnDrop($(this))
-            })
-        }
-    }
-}
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/en/index.html b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/en/index.html
new file mode 100644
index 0000000..d5a03e2
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/en/index.html	
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){    
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                start();                   
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/en/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/en/js/script.js
new file mode 100644
index 0000000..c5e1847
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/en/js/script.js	
@@ -0,0 +1,747 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    first_desc: "Fruits", 
+    second_desc: "Vegetables",
+    potatoes: "Potato",
+    carrot: "Carrot",
+    onion: "Onion",
+    apple: "Apple",
+    pear: "Pear",
+    enter: "Enter your category name here ...",
+    add: "Add new block",
+    text: "Some text",
+    wgt_name: "Categorize text",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2>Categorize text</h2></p>" +
+"<p><h3>Sort labels according to the name of the category</h3></p>" +
+"<p>Drag and drop labels in the corresponding category. All pictures should be placed to get a feed back from interactivity. If the result is incorrect, the area turns in red. If the result is correct, the area turns in green.</p>" +
+"<p>“Reload” button resets the exercises.</p>" +
+"<p>Enter the “Edit” mode to :</p>" +
+"<ul><li>choose the theme of interactivity : pad, slate or none (none by default),</li>" +
+"<li>modify the exercise.</li></ul>" +
+"<p>In edition mode :</p>" +
+"<ul><li>edit the category clicking on the text field,</li>" +
+"<li>add an another category clicking on the “+” (small one),</li>" +
+"<li>add a label clicking on the “+” (big one) on the correct category,</li>" +
+"<li>modify the text field clicking on it,</li>" +
+"<li>remove a label clicking on the cross button on the frame,</li>" +
+"<li>delete a category clicking on the “-” sign on the right,</li>" +
+"<li>“Display” button comes back to the activity.</li></ul>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("categoriser_text","")){
+            var data = jQuery.parseJSON(sankore.preference("categoriser_text",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+//                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_right = "";
+                    var tmp_array = [];
+                    
+//                    container.find(".close_cont").remove();
+                    container.find(".imgs_cont").each(function(){                        
+                        $(this).find(".del_category").remove();
+                        $(this).find(".add_img").remove();
+                        $(this).find(".add_category").remove();                        
+                        $(this).removeAttr("ondragenter")
+                        .removeAttr("ondragleave")
+                        .removeAttr("ondragover")
+                        .removeAttr("ondrop")                        
+                        .find(".cat_desc").attr("disabled","disabled");
+                        var tmp_count = $(this).find(".img_block").size();
+                        $(this).find("input[name='count']").val(tmp_count);
+                        $(this).find(".img_block").each(function(){
+                            $(this).find(".close_img").remove();
+                            var tmp_text = $(this).find(".text_cont");
+                            tmp_text.removeAttr("contenteditable")
+                            .css("margin", ($(this).height() - tmp_text.height())/2 + "px 0px");
+                            tmp_array.push($(this));
+                            $(this).remove();
+                        });
+                        $(this).droppable({
+                            hoverClass: 'dropHere',
+                            drop: function(event, ui) {
+                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                    var tmp_ui = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        });
+                        $(this).removeAttr("style");
+                    });
+                    
+                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(all_imgs);
+                    }
+                    
+                    all_imgs.droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_ui = $(ui.draggable).parent();                    
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        }
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+//                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".imgs_cont").each(function(){
+                        $("<button class='del_category'></button>").appendTo($(this));
+                        $("<button class='add_category'></button>").appendTo($(this));
+                        $(this).removeClass("red_cont")
+                        .removeClass("green_cont")
+                        .addClass("def_cont")
+                        .droppable("destroy")
+                        .find(".cat_desc").removeAttr("disabled");
+                        var tmp_img_cont = $(this);
+                        var tmp_mask = $(this).find("input[name='mask']").val();
+                        container.find(".img_block").each(function(){
+                            $(this).draggable("destroy")
+                            .find(".text_cont").attr("contenteditable","true")
+                            .removeAttr("style");
+                            if($(this).find("input").val() == tmp_mask){
+                                $("<div class='close_img'>").appendTo($(this));
+                                $(this).appendTo(tmp_img_cont);
+                            }
+                        });
+                        $("<div class='add_img'>").appendTo($(this));
+                    });
+                    container.find(".all_imgs").remove();
+                });
+                
+                
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+//    //add new block
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addText($(this).parent(), $(this));
+    });
+    
+//    //deleting a block
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){       
+        $(this).parent().remove();        
+    });
+    
+    //adding new category
+    $(".add_category").live("click",function(){
+        addCategory($(this).parent());
+    });
+    
+    //deleting the category
+    $(".del_category").live("click",function(){
+        if($(this).parent().parent().find(".imgs_cont").size() == 1){
+            $(this).parent().find(".img_block").remove();
+            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
+        } else {
+            $(this).parent().remove();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.mode = "edit";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                cont_obj.style = $("#style_select").find("option:selected").val();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find(".img_block").size();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.text = $(this).find(".text_cont").text();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.mode = "display";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                cont_obj.style = $("#style_select").find("option:selected").val();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find("input[name='count']").val();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.text = $(this).find(".text_cont").text();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            cont_obj.all_imgs = [];
+            $(this).find(".all_imgs .img_block").each(function(){
+                var img = new Object();
+                img.value = $(this).find("input").val();
+                img.text = $(this).find(".text_cont").text();
+                cont_obj.all_imgs.push(img);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    if(window.sankore)
+        sankore.setPreference("categoriser_text", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+      
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        }
+        else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            if(data[i].mode == "edit"){          
+                var tmp_array = [];
+                var container = $("<div class='cont'>").appendTo("#data");
+                var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+//                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+        
+                for(var j in data[i].conts){
+                    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(var k in data[i].conts[j].imgs){
+                        var block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                    
+                        $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
+                        tmp_array.push(block_img);
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });                                
+                }
+            
+                var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+            
+                tmp_array = shuffle(tmp_array);
+                for(j in tmp_array){
+                    tmp_array[j].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    tmp_array[j].appendTo(all_imgs);
+                    var tmp_text = tmp_array[j].find(".text_cont");
+                    tmp_text.css("margin", (tmp_array[j].height() - tmp_text.height())/2 + "px 0px");
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });
+            } else {
+                container = $("<div class='cont'>").appendTo("#data");
+                sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+//                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+        
+                for(j in data[i].conts){
+                    var tmp_img_array = [];
+                    imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(k in data[i].conts[j].imgs){
+                        block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                   
+                        $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
+                        tmp_img_array.push(block_img);
+                    }
+                
+                    tmp_img_array = shuffle(tmp_img_array);
+                    for(k in tmp_img_array){
+                        tmp_img_array[k].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_img_array[k].appendTo(imgs_container);
+                        tmp_text = tmp_img_array[k].find(".text_cont");
+                        tmp_text.css("margin", (tmp_img_array[k].height() - tmp_text.height())/2 + "px 0px");
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });                    
+                }
+            
+                all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+                var all_imgs_arr = [];
+                for(j in data[i].all_imgs){            
+                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                    $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);                
+                    $("<div class='text_cont'>" + data[i].all_imgs[j].text + "</div>").appendTo(block_img);
+                    all_imgs_arr.push(block_img);
+                } 
+            
+                all_imgs_arr = shuffle(all_imgs_arr);
+                for(k in all_imgs_arr){
+                    all_imgs_arr[k].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    all_imgs_arr[k].appendTo(all_imgs);
+                    tmp_text = all_imgs_arr[k].find(".text_cont");
+                    tmp_text.css("margin", (all_imgs_arr[k].height() - tmp_text.height())/2 + "px 0px");
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });   
+                checkCorrectness(all_imgs);
+            }
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
+    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
+    var tmp_div_one = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_one);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
+    
+    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
+    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
+    var tmp_div_two = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_two);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
+    
+    var text1 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(text1);
+    $("<div class='text_cont'>" + sankoreLang.potatoes + "</div>").appendTo(text1);
+    var text2 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(text2);
+    $("<div class='text_cont'>" + sankoreLang.apple + "</div>").appendTo(text2);
+    var text3 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(text3);
+    $("<div class='text_cont'>" + sankoreLang.carrot + "</div>").appendTo(text3);
+    var text4 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(text4);
+    $("<div class='text_cont'>" + sankoreLang.pear + "</div>").appendTo(text4);
+    var text5 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(text5);
+    $("<div class='text_cont'>" + sankoreLang.onion + "</div>").appendTo(text5);  
+    
+    tmp_array.push(text1, text2, text3, text4, text5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].find(".text_cont").css("margin", "21px 0px");
+        tmp_array[i].appendTo(all_imgs);
+    }
+    all_imgs.sortable();
+    
+    imgs_container_one.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    imgs_container_two.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    all_imgs.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_ui = $(ui.draggable).parent();                    
+                    $(this).append($(ui.draggable));
+                    checkCorrectness(tmp_ui);
+                }
+            }
+        }
+    });
+}
+
+//add text block
+function addText(dest, source){
+ 
+    var text_block = $("<div class='img_block' style='text-align: center;'>").insertBefore(source);
+    $("<div class='close_img'>").appendTo(text_block);            
+    $("<input type='hidden' value='" + dest.find("input[name='mask']").val() + "'/>").appendTo(text_block);
+    $("<div class='text_cont' contenteditable='true'>" + sankoreLang.text + "</div>").appendTo(text_block);    
+}
+
+//function that allows to add new category
+function addCategory(obj){
+    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    $("<div class='add_img'>").appendTo(imgs_container);
+}
+
+//add new container
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    
+//    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
+//    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+//    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+//    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
+//    $("<button class='del_category'></button>").appendTo(imgs_container);
+//    $("<button class='add_category'></button>").appendTo(imgs_container);
+//    $("<div class='add_img'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
+
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//return id
+function returnId(){
+    var tmp = Math.random().toString();
+    return tmp.substr(2);
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+//a func for checking when smth will drop
+function checkOnDrop(dest){
+    var tmp_count = dest.find("input[name='count']").val();
+    var tmp_mask = dest.find("input[name='mask']").val();
+    if(dest.find(".img_block").size() == tmp_count){
+        var tmp_right = true;                    
+        dest.find(".img_block").each(function(){
+            if($(this).find("input").val() != tmp_mask)
+                tmp_right = false;
+        });          
+        if(tmp_right)
+            dest.removeClass("def_cont").removeClass("red_cont").addClass("green_cont");
+        else
+            dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+    } else 
+        dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+}
+
+//checking source on correctness
+function checkCorrectness(source){
+    if(!source.hasClass("all_imgs")){
+        if(source.parent().find(".all_imgs").find(".img_block").size() == 0){
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        }
+    } else {
+        if(source.find(".img_block").size() > 0){
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        }
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/fr/js/script.js
index e823229..142e49b 100644
--- a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/fr/js/script.js	
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/fr/js/script.js	
@@ -26,20 +26,16 @@ var sankoreLang = {
 
     "<p>Le bouton “Modifier” vous permet :</p>"+
     "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
-    "<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité.</li></ul>"+
+    "<li>de modifier l'exercice.</li></ul>"+
 
-"<p>En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, une zone bleue apparaît, c’est une catégorie, puis :</p>"+
-"<ul><li>insérez le nom de la catégorie (par exemple “fruits”, “légumes”, “mammifères”...) en cliquant dans le champ de texte “Saisir le nom de la catégorie ici …”,</li>"+
+"<p>En mode édition :</p>"+
+"<ul><li>modifier le nom de la catégorie (par exemple “fruits”, “légumes”, “mammifères”...) en cliquant dans le champ de texte,</li>"+
 "<li>cliquez sur le gros “+” situé à gauche de la catégorie ce qui vous permet de rajouter des étiquettes de mots,</li>"+
 "<li>entrez des mots dans ces étiquettes,</li>"+
-"<li>ajoutez ensuite une catégorie (ou plusieurs) en cliquant sur le signe “+” situé à droite de la catégorie, complétez par son nom et ajoutez des étiquettes de mots.</li></ul>"+
-"<p>Pour supprimer une étiquette de mots, cliquez sur la croix située dans le coin supérieur droit de celle-ci.</p>"+
-"<p>Pour supprimer une catégorie, cliquez sur le signe “-” situé à droite de celle-ci.</p>"+
-
-
-    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
-
-    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+"<li>ajoutez ensuite une catégorie (ou plusieurs) en cliquant sur le signe “+” situé à droite de la catégorie, complétez par son nom et ajoutez des étiquettes de mots,</li>"+
+"<li>supprimez une étiquette de mots, en cliquant sur la croix située dans son coin supérieur droit,</li>"+
+"<li>supprimez une catégorie, en cliquant sur le signe “-” situé à droite de celle-ci,</li>"+
+"<li>le bouton “Afficher” vous permet d’utiliser l’activité.</li></ul>",
     theme: "Thème"
 };
 
@@ -115,14 +111,14 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display","none");
-                $(".add_block").remove();
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     var tmp_i = 0;
                     var tmp_right = "";
                     var tmp_array = [];
                     
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     container.find(".imgs_cont").each(function(){                        
                         $(this).find(".del_category").remove();
                         $(this).find(".add_img").remove();
@@ -191,7 +187,7 @@ function start(){
                 $(".cont").each(function(){
                     var container = $(this);
                     
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find(".imgs_cont").each(function(){
                         $("<button class='del_category'></button>").appendTo($(this));
                         $("<button class='add_category'></button>").appendTo($(this));
@@ -217,28 +213,28 @@ function start(){
                 });
                 
                 
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
         }
     });
     
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
+//    //add new block
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
     
     //adding new img
     $(".add_img").live("click", function(){
         addText($(this).parent(), $(this));
     });
     
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    //deleting a block
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
     $(".close_img").live("click", function(){       
@@ -323,14 +319,13 @@ function exportData(){
         cont_obj.tmp = "clear";
         array_to_export.push(cont_obj);
     }
-    
-    sankore.setPreference("categoriser_text", JSON.stringify(array_to_export));
+    if(window.sankore)
+        sankore.setPreference("categoriser_text", JSON.stringify(array_to_export));
 }
 
 //import
 function importData(data){
-    
-    var tmp = 0;    
+      
     for(var i in data){
         if(data[i].tmp){
             changeStyle(data[i].style);
@@ -345,7 +340,7 @@ function importData(data){
                 var tmp_array = [];
                 var container = $("<div class='cont'>").appendTo("#data");
                 var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
         
                 for(var j in data[i].conts){
                     var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
@@ -404,7 +399,7 @@ function importData(data){
             } else {
                 container = $("<div class='cont'>").appendTo("#data");
                 sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+//                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
         
                 for(j in data[i].conts){
                     var tmp_img_array = [];
@@ -441,8 +436,7 @@ function importData(data){
                                 checkCorrectness(tmp_ui);
                             }
                         }
-                    });        
-                    checkCorrectness(imgs_container);
+                    });                    
                 }
             
                 all_imgs = $("<div class='all_imgs'>").appendTo(container); 
@@ -479,7 +473,7 @@ function importData(data){
                             }
                         }
                     }
-                });       
+                });   
                 checkCorrectness(all_imgs);
             }
         }
@@ -498,7 +492,7 @@ function showExample(){
     var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
     var all_imgs = $("<div class='all_imgs'>").appendTo(container);
 
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
     
     $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
     $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
@@ -597,30 +591,30 @@ function addCategory(obj){
 }
 
 //add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    
+//    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
+//    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+//    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+//    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
+//    $("<button class='del_category'></button>").appendTo(imgs_container);
+//    $("<button class='add_category'></button>").appendTo(imgs_container);
+//    $("<div class='add_img'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 //shuffles an array
 function shuffle( arr )
@@ -753,4 +747,4 @@ function checkCorrectness(source){
             })
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/ru/js/script.js
index 7a4ac96..ba16eec 100644
--- a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/ru/js/script.js	
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/ru/js/script.js	
@@ -93,14 +93,14 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display","none");
-                $(".add_block").remove();
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     var tmp_i = 0;
                     var tmp_right = "";
                     var tmp_array = [];
                     
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     container.find(".imgs_cont").each(function(){                        
                         $(this).find(".del_category").remove();
                         $(this).find(".add_img").remove();
@@ -169,7 +169,7 @@ function start(){
                 $(".cont").each(function(){
                     var container = $(this);
                     
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find(".imgs_cont").each(function(){
                         $("<button class='del_category'></button>").appendTo($(this));
                         $("<button class='add_category'></button>").appendTo($(this));
@@ -195,28 +195,28 @@ function start(){
                 });
                 
                 
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
         }
     });
     
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
+//    //add new block
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
     
     //adding new img
     $(".add_img").live("click", function(){
         addText($(this).parent(), $(this));
     });
     
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    //deleting a block
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
     $(".close_img").live("click", function(){       
@@ -301,14 +301,13 @@ function exportData(){
         cont_obj.tmp = "clear";
         array_to_export.push(cont_obj);
     }
-    
-    sankore.setPreference("categoriser_text", JSON.stringify(array_to_export));
+    if(window.sankore)
+        sankore.setPreference("categoriser_text", JSON.stringify(array_to_export));
 }
 
 //import
 function importData(data){
-    
-    var tmp = 0;    
+      
     for(var i in data){
         if(data[i].tmp){
             changeStyle(data[i].style);
@@ -323,7 +322,7 @@ function importData(data){
                 var tmp_array = [];
                 var container = $("<div class='cont'>").appendTo("#data");
                 var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
         
                 for(var j in data[i].conts){
                     var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
@@ -382,7 +381,7 @@ function importData(data){
             } else {
                 container = $("<div class='cont'>").appendTo("#data");
                 sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+//                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
         
                 for(j in data[i].conts){
                     var tmp_img_array = [];
@@ -419,8 +418,7 @@ function importData(data){
                                 checkCorrectness(tmp_ui);
                             }
                         }
-                    });        
-                    checkCorrectness(imgs_container);
+                    });                    
                 }
             
                 all_imgs = $("<div class='all_imgs'>").appendTo(container); 
@@ -457,7 +455,7 @@ function importData(data){
                             }
                         }
                     }
-                });       
+                });   
                 checkCorrectness(all_imgs);
             }
         }
@@ -476,7 +474,7 @@ function showExample(){
     var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
     var all_imgs = $("<div class='all_imgs'>").appendTo(container);
 
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
     
     $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
     $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
@@ -575,30 +573,30 @@ function addCategory(obj){
 }
 
 //add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    
+//    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
+//    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+//    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+//    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
+//    $("<button class='del_category'></button>").appendTo(imgs_container);
+//    $("<button class='add_category'></button>").appendTo(imgs_container);
+//    $("<div class='add_img'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 //shuffles an array
 function shuffle( arr )
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/config.xml
index 84911f0..6a59efd 100644
--- a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/config.xml
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/config.xml
@@ -4,8 +4,8 @@
         id="http://uniboard.mnemis.com/widgets/webbrowser" 
         version="1.1"
         width="920"
-        height="500" 
-		ub:resizable="true">   
+        height="450" 
+		ub:resizable="false">   
 		     
   		<name>Choisir</name>
 		<author href="http://www.getuniboard.com"
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/css/basic.css
index d297aed..1450928 100644
--- a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/css/basic.css
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/css/basic.css
@@ -48,6 +48,7 @@ body{
     margin: 2px;
     font-family: sans-serif;
     font-size: large;
+    display: none;
 }
 
 .addQstButton{    
@@ -112,6 +113,7 @@ body{
     font-weight: bold;
     cursor: pointer;
     border-radius: 10px;
+    margin-bottom: 8px;
 }
 
 .applyChanges{
@@ -186,6 +188,7 @@ body{
     color: black;
     cursor: pointer;
     border-radius: 10px;
+    margin-top: 5px;
 }
 
 .newAnswer{
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/index.html
index 054a03f..19b8283 100644
--- a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/index.html
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/index.html
@@ -1,90 +1,32 @@
-<!--
-To change this template, choose Tools | Templates
-and open the template in the editor.
--->
 <!DOCTYPE html>
 <html>
     <head>
         <title></title>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
         <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="scripts/selQuestionApp.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    //sankore.enableDropOnWidget(false);
-                    init();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                init();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url:'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }
-            });            
+                    }
+                });      
+            });           
         </script>
     </head>
     <body>
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>                    
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-       
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="data">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
         
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
     </body>
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/en/index.html b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/en/index.html
new file mode 100644
index 0000000..3198046
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/en/index.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title></title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="scripts/selQuestionApp.js"></script>
+        <script type="text/javascript">
+            
+            $(document).ready(function(){
+                init();
+            });
+            
+        </script>
+    </head>
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/en/scripts/selQuestionApp.js b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/en/scripts/selQuestionApp.js
new file mode 100644
index 0000000..d5648f3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/en/scripts/selQuestionApp.js
@@ -0,0 +1,792 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+var sankoreLang = {
+    edit: "Edit",
+    display:"Display",
+    question:"Question",
+    example_question:"This is an example of the question",
+    answer:"This is one possible answer",
+    q:"Q",
+    add_new_question:" Add a new question ...",
+    options:"Options",
+    close:"Close",
+    delete_question:"Delete question",
+    delete_answer:"Delete the possibility",
+    right_answer:"Right answer",
+    template_question:"Enter your question here ...",
+    template_answer:"Enter one possible answer here ...",
+    add_answer:"Add one possible answer",
+    select_text:"Choose the right answer",
+    options_desc:"You can choose one of the three options of displaying possibilities.",
+    radio_desc:"One right answer only and the possibilities are displayed as radio buttons.",
+    checkbox_desc:"Several right answers and possibilities are displayed as checkboxes.",
+    select_desc:"One right answer only and possibilities are displayed as pull-down menu.",
+    a:"A",
+    wgt_name: "Choose the right answer",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2> Choose the right answer</h2></p>" +
+"<p><h3> Multiple-Choice Question (MCQ)</h3></p>" +
+"<p>Multiple-choice question. The goal is to choose the correct answer.</p>" +
+"<p>“Reload” button resets the exercises.</p>" +
+
+"<p> Enter the “Edit” mode to :</p>" +
+"<ul><li> choose the theme of interactivity : pad, slate or none (none by default),</li>" +
+"<li> modify the exercise.</li></ul>" +
+
+"<p>In edition mode :</p>" +
+"<ul> <li> click on “Add a new question”,</li>" +
+"<li>edit the text field clicking on the text field “Enter your question here ... ”,</li>" +
+"<li>click on “Options” to select the type of our MCQ (one correct answer, multiple correct answers, drop down) and close it,</li>" +
+"<li>add a new possible answer if needed,</li>" +
+"<li>modify the text field clicking on it,</li>" +
+"<li>set the correct answer by clicking in the checkbox to the left of the text field,</li>" +
+"<li>remove a label clicking on the cross button on the frame,</li>" +
+"<li>delete a possible answer clicking on the cross on the left,</li>" +
+"<li>“Display” button comes back to the activity.</li></ul>",
+    theme: "Theme"
+};
+
+var questionArray;
+var currentQstId = "";
+var lang = ""; //locale language
+var begin = true;
+
+function init(){
+
+    //variables
+    var toggleFlag = false;
+    var endFlag = false;
+    var mode = true;
+    questionArray = new Array();  
+    var popupFlag = false
+    var flagForSelect = false;    
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    //popup message
+    var popupText = $("<div id='popupWordInfo' class='popupWordInfo'></div>").appendTo("#data");
+    
+    // adding question block
+    var addQstDiv = $("<div id='addQstDiv' class='addQstDiv'>").appendTo("#data");
+    var addQstButton = $("<button id='addQstButton' class='addQstButton'>").appendTo("#addQstDiv");    
+    var addQsqSpan1 = $("<span id='addQsqSpan1'>" + sankoreLang.q + "1</span>").appendTo("#addQstButton");
+    var addQsqSpan2 = $("<span id='addQsqSpan2'>" + sankoreLang.add_new_question + "</span>").appendTo("#addQstButton");
+    
+    //import saved data
+    if(window.sankore){
+        if(sankore.preference("qstArrayData","") && sankore.preference("qstArrayData","") != "[]")
+            questionArray = jQuery.parseJSON(sankore.preference("qstArrayData",""));         
+        else
+            questionArray = jQuery.parseJSON('[{"text":"' + sankoreLang.example_question + '","type":"1","id":538,"rightAns":"2","answers":[{"id":953,"text":"' + sankoreLang.answer + ' 1.","value":1,"state":"","was":false},{"id":526,"text":"' + sankoreLang.answer + ' 2.","value":2,"state":"","was":false},{"id":473,"text":"' + sankoreLang.answer + ' 3.","value":3,"state":"","was":false}]}]');
+        
+        for(i in questionArray){
+            addQstBlock(questionArray[i].id, questionArray[i].text, questionArray[i].type,"style='display: none;'");
+            for(j in questionArray[i].answers)
+                addAnsBlock(questionArray[i].answers[j].id, questionArray[i].id, questionArray[i].answers[j].text, true, questionArray[i].rightAns, questionArray[i].type);
+        }
+        displayData();
+    }
+    else{ 
+        questionArray = jQuery.parseJSON('[{"text":"' + sankoreLang.example_question + '","type":"1","id":538,"rightAns":"2","answers":[{"id":953,"text":"' + sankoreLang.answer + ' 1.","value":1,"state":"","was":false},{"id":526,"text":"' + sankoreLang.answer + ' 2.","value":2,"state":"","was":false},{"id":473,"text":"' + sankoreLang.answer + ' 3.","value":3,"state":"","was":false}]}]');
+        for(i in questionArray){
+            addQstBlock(questionArray[i].id, questionArray[i].text, questionArray[i].type,"style='display: none;'");
+            for(j in questionArray[i].answers)
+                addAnsBlock(questionArray[i].answers[j].id, questionArray[i].id, questionArray[i].answers[j].text, true, questionArray[i].rightAns, questionArray[i].type);
+        }
+        displayData();
+    }
+    
+    //saving widget data into sankore object for a correct import
+    if (window.widget) {
+        window.widget.onleave = function(){
+            sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+            sankore.setPreference("choisir_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    if(window.sankore)
+        if(sankore.preference("choisir_style","")){
+            changeStyle(sankore.preference("choisir_style",""));
+            $("#style_select").val(sankore.preference("choisir_style",""));
+        } else
+            changeStyle("3")
+
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                displayData(true);
+                mode = true;
+                if(window.sankore){
+                    sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+                    sankore.setPreference("choisir_style", $("#style_select").find("option:selected").val());
+                }
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                editData();
+                mode = false;
+            }
+        }
+    });
+
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if($("#wgt_edit").css("display") == "none")
+            $("#wgt_display").trigger("click");
+        else{
+            editData();
+            mode = false;
+            displayData(true);
+            mode = true;
+        }
+    });
+    
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    // add question
+    addQstButton.click(function(){        
+        //question block
+        var id = Math.round(Math.random()*1000);       
+        var obj = new Question();
+        obj.id = id;
+        questionArray.push(obj);
+        
+        addQstBlock(id, sankoreLang.template_question, "","");
+                
+        if(window.sankore)
+            sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+    });
+    
+    //set used at this moment question id into the variable 
+    $(".qstDiv").live('mouseover', function() {
+        currentQstId = this.id;
+    });
+    
+    //set used at this moment question id into the variable 
+    $(".qstDivDisplay").live('mouseover', function() {
+        if(!flagForSelect)
+            currentQstId = this.id.replace("qstDivDisplay","");
+    });
+       
+    //adding new answer
+    $(".ansAdd").live('click', function(){
+        
+        var id = Math.round(Math.random()*1000);        
+        var obj = new Answer();
+        obj.id = id;
+        getNeededElement(questionArray, currentQstId).answers.push(obj);
+        
+        addAnsBlock(id, currentQstId, sankoreLang.template_answer);
+    });
+    
+    //set answer text
+    $(".ansContent").live('keyup', function(event){
+        var id = $(event.target).attr("id").replace("ansContent","");
+        getNeededElement(getNeededElement(questionArray, currentQstId).answers,id).text = $(event.target).text();
+    });
+    
+    //set question text
+    $(".qstContent").live('keyup', function(event){
+        var id = $(event.target).attr("id").replace("qstContent","");
+        getNeededElement(questionArray, id).text = $(event.target).text();
+    });
+    
+    //question div border
+    $(".qstContent").live('mouseover', function(event){
+        $(event.target).css({
+            border:"3px solid #00C6FF"
+        });
+    });
+    
+    // deleting question div border
+    $(".qstContent").live('mouseout', function(event){
+        $(event.target).css({
+            border:"3px solid #ccc"
+        });
+    });
+    
+    //answer div border
+    $(".ansContent").live('mouseover', function(event){
+        $(event.target).css({
+            border:"3px solid #00C6FF"
+        });
+    });
+    
+    // deleting answer div border
+    $(".ansContent").live('mouseout', function(event){
+        $(event.target).css({
+            border:"3px solid #ccc"
+        });
+    });
+    
+    //delete answer
+    $(".ansDelete").live('click', function(){
+        popupText.hide();
+        var id = this.id.replace("ansDelete","");
+        $("#" + currentQstId + " #" + id).remove();
+        for(var i in questionArray)
+            if(questionArray[i].id == currentQstId){
+                questionArray[i].rightAns = questionArray[i].rightAns.replace($("#" + currentQstId + " #" + id + " input:checkbox").val(),"");
+                for(var j in questionArray[i].answers)
+                    if(questionArray[i].answers[j].id == id){
+                        if(j == 0)
+                            questionArray[i].answers.shift();
+                        else
+                        if((j+1) == questionArray[i].answers.length)
+                            questionArray[i].answers.pop();
+                        else
+                            questionArray[i].answers = questionArray[i].answers.slice(0,j).concat(questionArray[i].answers.slice(j+1));  
+                        break;
+                    }
+            }
+        refreshAns();
+    });
+    
+    //delete question
+//    $(".qstDelete").live('click', function(){
+//        popupText.hide();
+//        $("#" + currentQstId).remove();
+//        for(var i in questionArray)
+//            if(questionArray[i].id == currentQstId){
+//                if(i == 0)
+//                    questionArray.shift();
+//                else
+//                if((i+1) == questionArray.length)
+//                    questionArray.pop();
+//                else
+//                    questionArray = questionArray.slice(0,i).concat(questionArray.slice(i+1));                
+//                break;
+//            }
+//        refreshQst();
+//    });
+    
+    //change options
+    $(".changeOptions").live('click', function(){
+        $("#" + currentQstId + "qstOptions .changeOptions").hide();
+        $("#" + currentQstId + "qstOptions .applyChanges").show();
+        $("#" + currentQstId + "qstOptChoice").show('fast');
+    });
+    
+    //apply changes
+    $(".applyChanges").live('click', function(){
+        $("#" + currentQstId + "qstOptions .applyChanges").hide();
+        $("#" + currentQstId + "qstOptions .changeOptions").show();
+        $("#" + currentQstId + "qstOptChoice").hide('fast');
+    });
+    
+    //select option
+    $(".qstOptChoice input:radio").live('click', function(event){
+        if(!mode){
+            $("#" + currentQstId + "qstOptChoice input:radio").removeAttr("checked");
+            $(event.target).attr("checked", "checked");
+            getNeededElement(questionArray, currentQstId).type = $(event.target).attr("value");
+        }
+    });
+    
+    //select right ansver in edit mode and answer question in display mode
+    $(".newAnswer input").live('click', function(event){
+
+        if(!mode){
+            if(getNeededElement(questionArray, currentQstId).type == "1" || getNeededElement(questionArray, currentQstId).type == "3"){
+                $("#" + currentQstId + "ansDiv input").removeAttr("checked");
+                $(event.target).attr("checked", "checked");
+                getNeededElement(questionArray, currentQstId).rightAns = $(event.target).attr("value");
+            } else {
+                (event.target.checked) ? $(event.target).attr("checked", "checked") : $(event.target).removeAttr("checked", "checked");
+                getNeededElement(questionArray, currentQstId).rightAns = "";
+                for(var i in $("#" + currentQstId + "ansDiv input")){
+                    if($("#" + currentQstId + "ansDiv input")[i].checked)
+                        getNeededElement(questionArray, currentQstId).rightAns += $("#" + currentQstId + "ansDiv input")[i].value + ", ";
+                }
+            }
+        } else {
+            if(event.target.type == "radio"){
+                checkingAnswers("radio", getNeededElement(questionArray, currentQstId).answers, event.target.value);
+                if(event.target.value == getNeededElement(questionArray, currentQstId).rightAns)
+                    $(event.target).next().next().css("background-color","#6c0");
+                else
+                    $(event.target).next().next().css("background-color","red");
+            } else {
+                checkingAnswers("box", getNeededElement(questionArray, currentQstId).answers, event.target.value, event.target.checked);
+                if(getNeededElement(questionArray, currentQstId).rightAns.replace(/,/g,"").indexOf(event.target.value + " ", 0) != -1)
+                    $(event.target).next().next().css("background-color","#6c0");
+                else
+                    $(event.target).next().next().css("background-color","red");
+            }
+        }
+    });
+    
+    //popup messages
+//    $(".qstDelete").live('mouseover', function(evt){
+//        popupFlag = true;
+//        popupText.text(sankoreLang.delete_question)
+//        .css("top", evt.pageY + 15)
+//        .css("left", evt.pageX - 40)
+//        .css({
+//            width:"130px"
+//        })
+//        .show("fast", function(){
+//            if(!popupFlag)
+//                popupText.hide();
+//        });
+//    });
+    
+    $(".ansDelete").live('mouseover', function(evt){
+        popupFlag = true;
+        popupText.text(sankoreLang.delete_answer)
+        .css("top", evt.pageY + 15)
+        .css("left", evt.pageX - 40)
+        .css({
+            width:"130px"
+        })
+        .show("fast", function(){
+            if(!popupFlag)
+                popupText.hide();
+        });
+    });
+    
+    $(".newAnswer input").live('mouseover', function(evt){
+        if(!mode){
+            popupFlag = true;
+            popupText.text(sankoreLang.right_answer)
+            .css("top", evt.pageY + 15)
+            .css("left", evt.pageX - 40)
+            .css({
+                width:"130px"
+            })
+            .show("fast", function(){
+                if(!popupFlag)
+                    popupText.hide();
+            });
+        }
+    });
+    
+    $(".ansDelete, .newAnswer input").live('mousemove', function(evt){
+        if(!mode){
+            popupText.css("top", evt.pageY + 15)
+            .css("left", evt.pageX - 40);
+        }
+    });
+    
+    $(".ansDelete, .newAnswer input").live('mouseout', function(evt){
+        if(!mode){
+            popupFlag = false;
+            popupText.hide();
+        }
+    });
+
+    //answer the questions
+    
+    $("select").live('change', function(evt){
+        if(mode){
+            checkingAnswers("sel", getNeededElement(questionArray, currentQstId).answers, event.target.value);
+            if(event.target.value == getNeededElement(questionArray, currentQstId).rightAns)
+                $(event.target).css("background-color","#6c0");
+            else
+                $(event.target).css("background-color","red");
+            if(event.target.value == 0)
+                $(event.target).css("background-color","");
+            flagForSelect = false;
+        }
+    });
+    
+    $("select").live('mousedown', function(evt){
+        if(mode){
+            flagForSelect = true;
+        }
+    });
+    
+    //toggle button click trigger
+    //toggleButton.trigger("click");
+    //show data in display mode
+    function displayData(){
+//        $("#addQstDiv").hide();
+        $(".qstDiv").hide();
+        addToPage(questionArray);
+    }
+    
+    //set widget in edit mode
+    function editData(){
+        for(var i in questionArray)            
+            for(var j in questionArray[i].answers){
+                questionArray[i].answers[j].state = "";
+                questionArray[i].answers[j].was = false
+            }               
+                
+        $(".qstDivDisplay").remove();
+        
+//        $("#addQstDiv").show('fast');
+        $(".qstDiv").show('fast');
+    }
+    
+    // show questions and answers in display mode
+    function addToPage(array){
+            var counter = 1;
+            for(var i in array){
+
+                var qstDiv = $("<div class='qstDivDisplay' id='" + array[i].id + "qstDivDisplay'>");        
+                var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);             
+//                var qstNumber = $("<span class='qstNumber'>" + sankoreLang.question + " " + counter + "</span>").appendTo(spanOptConn);        
+                var qstContent = $("<div class='qstContentDisplay'>" + array[i].text + "</div>").appendTo(qstDiv);        
+                var ansDiv = $("<div class='ansDiv' id='" + array[i].id + "ansDiv'>").appendTo(qstDiv);
+
+                var ansCount = 1;
+                var type = array[i].type;
+                var selInput = $("<select>");
+                if(type == 3){
+                    var newAnswer = $("<div class='newAnswer'>"); 
+                    newAnswer.appendTo(ansDiv);
+                    var selectSpan = $("<span id='answerText'>").appendTo(newAnswer);
+                    selInput.appendTo(selectSpan);
+                    $("<option value='0'>" + sankoreLang.select_text + "</option>").appendTo(selInput);
+                }
+                for(var j in array[i].answers){  
+                    switch(type){
+                        case "1":
+                            var local_state = "";
+                            var local_color = "";
+                            if(begin){
+                                local_state = array[i].answers[j].state;
+                                local_color = (array[i].answers[j].value == array[i].rightAns)?((array[i].answers[j].was)?"style='background-color: #6c0;'":""):((array[i].answers[j].was)?"style='background-color: red;'":"");
+                            }
+                            newAnswer = $("<div class='newAnswer'>");
+                            var ansInput = $("<input type='radio' name='" + counter + "' value='" + array[i].answers[j].value + "' " + local_state + " style='float: left; margin-right: 10px;'/>").appendTo(newAnswer);
+                            var ansSpan = $("<span class='ansSpanDisplay'>" + ansCount + ".</span>").appendTo(newAnswer);                        
+                            var ansContent = $("<div class='ansContentDisplay' " + local_color + "><span id='answerText'>" + array[i].answers[j].text + "</span></div>").appendTo(newAnswer);
+                            newAnswer.appendTo(ansDiv);
+                            break;
+                        case "2":
+                            local_state = "";
+                            local_color = "";
+                            if(begin){
+                                local_state = (array[i].answers[j].state)?"checked":"";
+                                local_color = (array[i].rightAns.replace(/,/g,"").indexOf(array[i].answers[j].value + " ", 0) != -1)?((array[i].answers[j].was)?"style='background-color: #6c0;'":""):((array[i].answers[j].was)?"style='background-color: red;'":"");
+                            }
+                            newAnswer = $("<div class='newAnswer'>");
+                            ansInput = $("<input type='checkbox' value='" + array[i].answers[j].value + "' " + local_state + " style='float: left; margin-right: 10px;'/>").appendTo(newAnswer);
+                            ansSpan = $("<span class='ansSpanDisplay'>" + ansCount + ".</span>").appendTo(newAnswer);                        
+                            ansContent = $("<div class='ansContentDisplay' " + local_color + "><span id='answerText'>" + array[i].answers[j].text + "</span></div>").appendTo(newAnswer);
+                            newAnswer.appendTo(ansDiv);
+                            break;
+                        case "3":
+                            local_state = "";
+                            local_color = "";
+                            if(begin){
+                                local_state = (array[i].answers[j].state)?"selected":"";
+                                local_color = (array[i].answers[j].value == array[i].rightAns)?((array[i].answers[j].was)?"#6c0":""):((array[i].answers[j].was)?"red":"");
+                            }
+                            ansInput = $("<option value='" + array[i].answers[j].value + "' " + local_state + ">" + array[i].answers[j].text + "</option>").appendTo(selInput);
+                            if(local_state && local_color)
+                                selInput.css("background-color",local_color);
+                            break;
+                    }               
+                    ansCount++;
+                }
+                qstDiv.appendTo("#data");
+                counter++;
+            }
+            begin = false;
+    }
+}
+
+//add new question block in a edit mode
+function addQstBlock(id, text, type, style){
+    var qstDiv = $("<div class='qstDiv' id='" + id + "' " + style + ">");
+    var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);
+        
+//    var count = $(".qstNumber").size();       
+//    var qstNumber = $("<span class='qstNumber'>" + sankoreLang.q + (count + 1) + "</span>").appendTo(spanOptConn);
+        
+    var qstOptions = $("<div class='qstOptions' id='" + id + "qstOptions'>").appendTo(spanOptConn);
+    var changeOptions = $("<button class='changeOptions'>" + sankoreLang.options + "</button>").appendTo(qstOptions);
+    var applyChanges = $("<button class='applyChanges' style='display: none;'>" + sankoreLang.close + "</button>").appendTo(qstOptions);
+//    var qstDelete = $("<button class='qstDelete'>").appendTo(qstOptions);
+        
+    var qstOptChoice = $("<div class='qstOptChoice' id='" + id + "qstOptChoice' style='display: none;'>").appendTo(qstDiv);
+    var optDesc = $("<div style='height: 65px;'>").appendTo(qstOptChoice);
+    var optDescImg = $("<div class='optDescImg'>").appendTo(optDesc);
+    var optDescText = $("<div class='optDescText'>" + sankoreLang.options_desc + "</div>").appendTo(optDesc);
+        
+    var type1 = $("<div class='type'>").appendTo(qstOptChoice);
+    var contentType1 = $("<div class='contentType'>").appendTo(type1);
+    var divType1 = $("<div class='divType1'>").appendTo(contentType1);
+    var textType1 = $("<div class='textType'>" + sankoreLang.radio_desc + "</div>").appendTo(contentType1);
+        
+    var type2 = $("<div class='type'>").appendTo(qstOptChoice);
+    var contentType2 = $("<div class='contentType'>").appendTo(type2);
+    var divType2 = $("<div class='divType2'>").appendTo(contentType2);
+    var textType2 = $("<div class='textType'>" + sankoreLang.checkbox_desc + "</div>").appendTo(contentType2);
+        
+    var type3 = $("<div class='type'>").appendTo(qstOptChoice);
+    var contentType3 = $("<div class='contentType'>").appendTo(type3);
+    var divType3 = $("<div class='divType3'>").appendTo(contentType3);
+    var textType3 = $("<div class='textType'>" + sankoreLang.select_desc + "</div>").appendTo(contentType3);
+
+    switch(type){
+        case "1":
+            var radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1' checked/><div></div>").appendTo(type1);
+            var radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2'/><div></div>").appendTo(type2);
+            var radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3'/><div></div>").appendTo(type3);
+            break;
+        case "2":
+            radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1'/><div></div>").appendTo(type1);
+            radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2' checked/><div></div>").appendTo(type2);
+            radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3'/><div></div>").appendTo(type3);
+            break;
+        case "3":
+            radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1'/><div></div>").appendTo(type1);
+            radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2'/><div></div>").appendTo(type2);
+            radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3' checked/><div></div>").appendTo(type3);
+            break;
+        default:
+            radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1'/><div></div>").appendTo(type1);
+            radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2'/><div></div>").appendTo(type2);
+            radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3'/><div></div>").appendTo(type3);
+            break;
+    }
+    
+    var qstContent = $("<div class='qstContent' id='" + id + "qstContent' contenteditable='true'>" + text + "</div>").appendTo(qstDiv);
+        
+    var ansDiv = $("<div class='ansDiv' id='" + id + "ansDiv'>").appendTo(qstDiv);
+    var ansAdd = $("<button class='ansAdd'>" + sankoreLang.add_answer + "</button>").appendTo(ansDiv);
+    qstDiv.insertBefore("#addQstDiv");
+//    $("#addQsqSpan1").text(sankoreLang.q + (count + 2));
+}
+
+//add answers
+function addAnsBlock(id, currId, text, stage, rightAns, type){
+    var newAnswer = $("<div class='newAnswer' id='" + id + "'>");
+    var value;
+    var check = "";
+    if(stage){
+        value = getNeededElement(getNeededElement(questionArray, currId).answers,id).value;
+        if(type != "2"){
+            if(rightAns == value)
+                check = "checked='true'";
+        }
+        else {
+            rightAns = rightAns.replace(/,/g,"");
+            if(rightAns.indexOf(value + " ", 0) != -1)
+                check = "checked='true'";                
+        }
+    }
+    else {
+        value = ($("#" + currId + " .newAnswer input:checkbox").last().val()) ? parseInt($("#" + currId + " .newAnswer input:checkbox").last().val()) + 1 : 1;
+        getNeededElement(getNeededElement(questionArray, currId).answers,id).value = value;
+    }
+    var count = $("#" + currId + " .newAnswer").size() + 1;
+    var input = $("<input type='checkbox' style='float: left;' value='" + value + "' " + check + ">").appendTo(newAnswer);
+    var ansSpan = $("<span class='ansSpan'>" + sankoreLang.a + count + "</span>").appendTo(newAnswer);
+    var ansContent = $("<div class='ansContent' id='" + id +"ansContent' contenteditable='true'>" + text + "</div>").appendTo(newAnswer);
+    var ansDelete = $("<button class='ansDelete' id='" + id + "ansDelete'>").appendTo(newAnswer);
+    newAnswer.insertBefore("#" + currId + "ansDiv .ansAdd");    
+        
+    if(window.sankore)
+        sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+}
+
+//get needed array element
+function getNeededElement(array,id){
+    for(var i in array)
+        if(array[i].id == id)
+            return array[i];
+}
+
+//check on fill
+function checkArrayOnFill(array){
+    var count = 0;
+    
+    for(var i in array)
+        count++;
+    
+    return count;
+}
+
+//refresh answers numbers
+function refreshAns(){
+    var count = $("#" + currentQstId + " .newAnswer").size();        
+    for(var i = 0; i < count; i ++)
+        $($("#" + currentQstId + " .newAnswer span")[i]).text(sankoreLang.a + (i+1));
+}
+
+//refresh questions numbers
+function refreshQst(){
+    var count = $(".qstNumber").size();        
+    for(var i = 0; i < count; i ++)
+        $($(".qstNumber")[i]).text(sankoreLang.q + (i+1));
+    $("#addQsqSpan1").text(sankoreLang.q + ++count);
+}
+
+//check answers
+function checkingAnswers(type, array, value, state){
+    switch(type){
+        case "radio":
+            for(var i in array)
+                if(array[i].value == value){
+                    array[i].state = "checked";
+                    array[i].was = true;
+                } else 
+                    array[i].state = "";                
+            break;
+        case "box":
+            for(i in array)
+                if(array[i].value == value){
+                    array[i].state = state;
+                    array[i].was = true;
+                }     
+            break;
+        case "sel":
+            for(i in array)
+                if(array[i].value == value){
+                    array[i].state = "selected";
+                    array[i].was = true;
+                } else 
+                    array[i].state = ""; 
+            break;
+    }
+}
+
+//question constructor
+function Question(){
+
+    this.text = "";
+    
+    this.type = "1";
+    
+    this.id = "";
+    
+    this.rightAns = "";
+    
+    this.answers = new Array();
+
+}
+
+//answer constructor
+function Answer(){
+    
+    this.id = "";
+    
+    this.text = "";
+    
+    this.value = "";
+    
+    this.state = "";
+    
+    this.was = false;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/index.html
index 925a066..3198046 100644
--- a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/index.html
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/index.html
@@ -1,7 +1,3 @@
-<!--
-To change this template, choose Tools | Templates
-and open the template in the editor.
--->
 <!DOCTYPE html>
 <html>
     <head>
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/scripts/selQuestionApp.js b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/scripts/selQuestionApp.js
index 720c3b5..7b0abad 100644
--- a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/scripts/selQuestionApp.js
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/scripts/selQuestionApp.js
@@ -50,18 +50,15 @@ var sankoreLang = {
 
 "<p>Le bouton “Modifier” vous permet :</p>"+
 "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
-"<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité.</li></ul>"+
+"<li>de modifier l'exercice.</li></ul>"+
 
-"<p>En mode édition, pour créer un nouvel exercice, cliquez sur “Ajouter une nouvelle question …”, puis :</p>"+
+"<p>En mode édition :</p>"+
 "<ul><li>insérez la question en cliquant sur le champ de texte “Saisir la question ici ...”,</li>"+
 "<li>cliquez sur ”Options” pour choisir l’affichage des propositions (une seule bonne réponse, plusieurs bonnes réponses, liste déroulante). Cliquez sur “Fermer”,</li>"+
 "<li>cliquez sur ”Ajouter une proposition” et saisissez la proposition dans le champ de texte,</li>"+
-"<li>définissez la ou les propositions correctes en cliquant sur la case à cocher à gauche des bonnes réponses.</li>"+
-"<li>Pour supprimer une proposition, cliquez sur la croix située à droite de celle-ci.</li></ul>"+
-
-"<p>Pour supprimer un exercice, cliquez sur la croix à droite du numéro de ”Options”.</p>"+
-
-"<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+"<li>définissez la ou les propositions correctes en cliquant sur la case à cocher à gauche des bonnes réponses,</li>"+
+"<li>supprimez une proposition, en cliquant sur la croix située à droite de celle-ci,</li>"+
+"<li>le bouton “Afficher” vous permet d’utiliser l’activité.</li></ul>",
 theme: "Thème"
 };
 
@@ -303,22 +300,22 @@ function init(){
     });
     
     //delete question
-    $(".qstDelete").live('click', function(){
-        popupText.hide();
-        $("#" + currentQstId).remove();
-        for(var i in questionArray)
-            if(questionArray[i].id == currentQstId){
-                if(i == 0)
-                    questionArray.shift();
-                else
-                if((i+1) == questionArray.length)
-                    questionArray.pop();
-                else
-                    questionArray = questionArray.slice(0,i).concat(questionArray.slice(i+1));                
-                break;
-            }
-        refreshQst();
-    });
+//    $(".qstDelete").live('click', function(){
+//        popupText.hide();
+//        $("#" + currentQstId).remove();
+//        for(var i in questionArray)
+//            if(questionArray[i].id == currentQstId){
+//                if(i == 0)
+//                    questionArray.shift();
+//                else
+//                if((i+1) == questionArray.length)
+//                    questionArray.pop();
+//                else
+//                    questionArray = questionArray.slice(0,i).concat(questionArray.slice(i+1));                
+//                break;
+//            }
+//        refreshQst();
+//    });
     
     //change options
     $(".changeOptions").live('click', function(){
@@ -377,19 +374,19 @@ function init(){
     });
     
     //popup messages
-    $(".qstDelete").live('mouseover', function(evt){
-        popupFlag = true;
-        popupText.text(sankoreLang.delete_question)
-        .css("top", evt.pageY + 15)
-        .css("left", evt.pageX - 40)
-        .css({
-            width:"130px"
-        })
-        .show("fast", function(){
-            if(!popupFlag)
-                popupText.hide();
-        });
-    });
+//    $(".qstDelete").live('mouseover', function(evt){
+//        popupFlag = true;
+//        popupText.text(sankoreLang.delete_question)
+//        .css("top", evt.pageY + 15)
+//        .css("left", evt.pageX - 40)
+//        .css({
+//            width:"130px"
+//        })
+//        .show("fast", function(){
+//            if(!popupFlag)
+//                popupText.hide();
+//        });
+//    });
     
     $(".ansDelete").live('mouseover', function(evt){
         popupFlag = true;
@@ -421,14 +418,14 @@ function init(){
         }
     });
     
-    $(".qstDelete, .ansDelete, .newAnswer input").live('mousemove', function(evt){
+    $(".ansDelete, .newAnswer input").live('mousemove', function(evt){
         if(!mode){
             popupText.css("top", evt.pageY + 15)
             .css("left", evt.pageX - 40);
         }
     });
     
-    $(".qstDelete, .ansDelete, .newAnswer input").live('mouseout', function(evt){
+    $(".ansDelete, .newAnswer input").live('mouseout', function(evt){
         if(!mode){
             popupFlag = false;
             popupText.hide();
@@ -460,7 +457,7 @@ function init(){
     //toggleButton.trigger("click");
     //show data in display mode
     function displayData(){
-        $("#addQstDiv").hide();
+//        $("#addQstDiv").hide();
         $(".qstDiv").hide();
         addToPage(questionArray);
     }
@@ -475,7 +472,7 @@ function init(){
                 
         $(".qstDivDisplay").remove();
         
-        $("#addQstDiv").show('fast');
+//        $("#addQstDiv").show('fast');
         $(".qstDiv").show('fast');
     }
     
@@ -486,7 +483,7 @@ function init(){
 
                 var qstDiv = $("<div class='qstDivDisplay' id='" + array[i].id + "qstDivDisplay'>");        
                 var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);             
-                var qstNumber = $("<span class='qstNumber'>" + sankoreLang.question + " " + counter + "</span>").appendTo(spanOptConn);        
+//                var qstNumber = $("<span class='qstNumber'>" + sankoreLang.question + " " + counter + "</span>").appendTo(spanOptConn);        
                 var qstContent = $("<div class='qstContentDisplay'>" + array[i].text + "</div>").appendTo(qstDiv);        
                 var ansDiv = $("<div class='ansDiv' id='" + array[i].id + "ansDiv'>").appendTo(qstDiv);
 
@@ -554,13 +551,13 @@ function addQstBlock(id, text, type, style){
     var qstDiv = $("<div class='qstDiv' id='" + id + "' " + style + ">");
     var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);
         
-    var count = $(".qstNumber").size();       
-    var qstNumber = $("<span class='qstNumber'>" + sankoreLang.q + (count + 1) + "</span>").appendTo(spanOptConn);
+//    var count = $(".qstNumber").size();       
+//    var qstNumber = $("<span class='qstNumber'>" + sankoreLang.q + (count + 1) + "</span>").appendTo(spanOptConn);
         
     var qstOptions = $("<div class='qstOptions' id='" + id + "qstOptions'>").appendTo(spanOptConn);
     var changeOptions = $("<button class='changeOptions'>" + sankoreLang.options + "</button>").appendTo(qstOptions);
     var applyChanges = $("<button class='applyChanges' style='display: none;'>" + sankoreLang.close + "</button>").appendTo(qstOptions);
-    var qstDelete = $("<button class='qstDelete'>").appendTo(qstOptions);
+//    var qstDelete = $("<button class='qstDelete'>").appendTo(qstOptions);
         
     var qstOptChoice = $("<div class='qstOptChoice' id='" + id + "qstOptChoice' style='display: none;'>").appendTo(qstDiv);
     var optDesc = $("<div style='height: 65px;'>").appendTo(qstOptChoice);
@@ -610,7 +607,7 @@ function addQstBlock(id, text, type, style){
     var ansDiv = $("<div class='ansDiv' id='" + id + "ansDiv'>").appendTo(qstDiv);
     var ansAdd = $("<button class='ansAdd'>" + sankoreLang.add_answer + "</button>").appendTo(ansDiv);
     qstDiv.insertBefore("#addQstDiv");
-    $("#addQsqSpan1").text(sankoreLang.q + (count + 2));
+//    $("#addQsqSpan1").text(sankoreLang.q + (count + 2));
 }
 
 //add answers
@@ -790,4 +787,4 @@ function changeStyle(val){
             $("body, html").addClass("without_radius").removeClass("radius_ft");
             break;
     }
-}
\ No newline at end of file
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/ru/scripts/selQuestionApp.js b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/ru/scripts/selQuestionApp.js
index 5c75cf3..97572e9 100644
--- a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/ru/scripts/selQuestionApp.js
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/ru/scripts/selQuestionApp.js
@@ -283,22 +283,22 @@ function init(){
     });
     
     //delete question
-    $(".qstDelete").live('click', function(){
-        popupText.hide();
-        $("#" + currentQstId).remove();
-        for(var i in questionArray)
-            if(questionArray[i].id == currentQstId){
-                if(i == 0)
-                    questionArray.shift();
-                else
-                if((i+1) == questionArray.length)
-                    questionArray.pop();
-                else
-                    questionArray = questionArray.slice(0,i).concat(questionArray.slice(i+1));                
-                break;
-            }
-        refreshQst();
-    });
+//    $(".qstDelete").live('click', function(){
+//        popupText.hide();
+//        $("#" + currentQstId).remove();
+//        for(var i in questionArray)
+//            if(questionArray[i].id == currentQstId){
+//                if(i == 0)
+//                    questionArray.shift();
+//                else
+//                if((i+1) == questionArray.length)
+//                    questionArray.pop();
+//                else
+//                    questionArray = questionArray.slice(0,i).concat(questionArray.slice(i+1));                
+//                break;
+//            }
+//        refreshQst();
+//    });
     
     //change options
     $(".changeOptions").live('click', function(){
@@ -357,19 +357,19 @@ function init(){
     });
     
     //popup messages
-    $(".qstDelete").live('mouseover', function(evt){
-        popupFlag = true;
-        popupText.text(sankoreLang.delete_question)
-        .css("top", evt.pageY + 15)
-        .css("left", evt.pageX - 40)
-        .css({
-            width:"130px"
-        })
-        .show("fast", function(){
-            if(!popupFlag)
-                popupText.hide();
-        });
-    });
+//    $(".qstDelete").live('mouseover', function(evt){
+//        popupFlag = true;
+//        popupText.text(sankoreLang.delete_question)
+//        .css("top", evt.pageY + 15)
+//        .css("left", evt.pageX - 40)
+//        .css({
+//            width:"130px"
+//        })
+//        .show("fast", function(){
+//            if(!popupFlag)
+//                popupText.hide();
+//        });
+//    });
     
     $(".ansDelete").live('mouseover', function(evt){
         popupFlag = true;
@@ -401,14 +401,14 @@ function init(){
         }
     });
     
-    $(".qstDelete, .ansDelete, .newAnswer input").live('mousemove', function(evt){
+    $(".ansDelete, .newAnswer input").live('mousemove', function(evt){
         if(!mode){
             popupText.css("top", evt.pageY + 15)
             .css("left", evt.pageX - 40);
         }
     });
     
-    $(".qstDelete, .ansDelete, .newAnswer input").live('mouseout', function(evt){
+    $(".ansDelete, .newAnswer input").live('mouseout', function(evt){
         if(!mode){
             popupFlag = false;
             popupText.hide();
@@ -440,7 +440,7 @@ function init(){
     //toggleButton.trigger("click");
     //show data in display mode
     function displayData(){
-        $("#addQstDiv").hide();
+//        $("#addQstDiv").hide();
         $(".qstDiv").hide();
         addToPage(questionArray);
     }
@@ -455,7 +455,7 @@ function init(){
                 
         $(".qstDivDisplay").remove();
         
-        $("#addQstDiv").show('fast');
+//        $("#addQstDiv").show('fast');
         $(".qstDiv").show('fast');
     }
     
@@ -466,7 +466,7 @@ function init(){
 
                 var qstDiv = $("<div class='qstDivDisplay' id='" + array[i].id + "qstDivDisplay'>");        
                 var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);             
-                var qstNumber = $("<span class='qstNumber'>" + sankoreLang.question + " " + counter + "</span>").appendTo(spanOptConn);        
+//                var qstNumber = $("<span class='qstNumber'>" + sankoreLang.question + " " + counter + "</span>").appendTo(spanOptConn);        
                 var qstContent = $("<div class='qstContentDisplay'>" + array[i].text + "</div>").appendTo(qstDiv);        
                 var ansDiv = $("<div class='ansDiv' id='" + array[i].id + "ansDiv'>").appendTo(qstDiv);
 
@@ -534,13 +534,13 @@ function addQstBlock(id, text, type, style){
     var qstDiv = $("<div class='qstDiv' id='" + id + "' " + style + ">");
     var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);
         
-    var count = $(".qstNumber").size();       
-    var qstNumber = $("<span class='qstNumber'>" + sankoreLang.q + (count + 1) + "</span>").appendTo(spanOptConn);
+//    var count = $(".qstNumber").size();       
+//    var qstNumber = $("<span class='qstNumber'>" + sankoreLang.q + (count + 1) + "</span>").appendTo(spanOptConn);
         
     var qstOptions = $("<div class='qstOptions' id='" + id + "qstOptions'>").appendTo(spanOptConn);
     var changeOptions = $("<button class='changeOptions'>" + sankoreLang.options + "</button>").appendTo(qstOptions);
     var applyChanges = $("<button class='applyChanges' style='display: none;'>" + sankoreLang.close + "</button>").appendTo(qstOptions);
-    var qstDelete = $("<button class='qstDelete'>").appendTo(qstOptions);
+//    var qstDelete = $("<button class='qstDelete'>").appendTo(qstOptions);
         
     var qstOptChoice = $("<div class='qstOptChoice' id='" + id + "qstOptChoice' style='display: none;'>").appendTo(qstDiv);
     var optDesc = $("<div style='height: 65px;'>").appendTo(qstOptChoice);
@@ -590,7 +590,7 @@ function addQstBlock(id, text, type, style){
     var ansDiv = $("<div class='ansDiv' id='" + id + "ansDiv'>").appendTo(qstDiv);
     var ansAdd = $("<button class='ansAdd'>" + sankoreLang.add_answer + "</button>").appendTo(ansDiv);
     qstDiv.insertBefore("#addQstDiv");
-    $("#addQsqSpan1").text(sankoreLang.q + (count + 2));
+//    $("#addQsqSpan1").text(sankoreLang.q + (count + 2));
 }
 
 //add answers
@@ -770,4 +770,4 @@ function changeStyle(val){
             $("body, html").addClass("without_radius").removeClass("radius_ft");
             break;
     }
-}
\ No newline at end of file
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/scripts/selQuestionApp.js b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/scripts/selQuestionApp.js
deleted file mode 100644
index aa323e0..0000000
--- a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/scripts/selQuestionApp.js
+++ /dev/null
@@ -1,793 +0,0 @@
-/*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-var sankoreLang = {
-    edit: "Edit",
-    display:"Display",
-    question:"Question",
-    example_question:"This is an example of the question",
-    answer:"This is one possible answer",
-    q:"Q",
-    add_new_question:" Add a new question ...",
-    options:"Options",
-    close:"Close",
-    delete_question:"Delete question",
-    delete_answer:"Delete the possibility",
-    right_answer:"Right answer",
-    template_question:"Enter your question here ...",
-    template_answer:"Enter one possible answer here ...",
-    add_answer:"Add one possible answer",
-    select_text:"Choose the right answer",
-    options_desc:"You can choose one of the three options of displaying possibilities.",
-    radio_desc:"One right answer only and the possibilities are displayed as radio buttons.",
-    checkbox_desc:"Several right answers and possibilities are displayed as checkboxes.",
-    select_desc:"One right answer only and possibilities are displayed as pull-down menu.",
-    a:"A",
-    wgt_name: "Choose the right answer",
-    reload: "Reload",
-    slate: "slate",
-    pad: "pad",
-    none: "none",
-    help: "Help",
-    help_content: 
-"<p><h2> Choose the right answer</h2></p>" +
-"<p><h3> Multiple-Choice Question (MCQ)</h3></p>" +
-"<p>Multiple-choice question. The goal is to choose the correct answer.</p>" +
-"<p>“Reload” button resets the exercises.</p>" +
-
-"<p> Enter the “Edit” mode to :</p>" +
-"<ul><li> choose the theme of interactivity : pad, slate or none (none by default),</li>" +
-"<li> modify an exercise or create a new one.</li></ul>" +
-
-"<p>To create a new exercise :</p>" +
-"<ul> <li> click on “Add a new question”,</li>" +
-"<li>edit the text field clicking on the text field “Enter your question here ... ”,</li>" +
-"<li>click on “Options” to select the type of our MCQ (one correct answer, multiple correct answers, drop down) and close it,</li>" +
-"<li>add a new possible answer if needed,</li>" +
-"<li>modify the text field clicking on it.</li>" +
-"<li>set the correct answer by clicking in the checkbox to the left of the text field.</li></ul>" +
-"<p>To remove a label, click on the cross button on the frame.</p>" +
-"<p>To delete a possible answer click on the cross on the left.</p>" +
-"<p>To delete a question, click on the cross on the left.</p>" +
-"<p>“Display” button comes back to the activity.</p>",
-    theme: "Theme"
-};
-
-var questionArray;
-var currentQstId = "";
-var lang = ""; //locale language
-var begin = true;
-
-function init(){
-
-    //variables
-    var toggleFlag = false;
-    var endFlag = false;
-    var mode = true;
-    questionArray = new Array();  
-    var popupFlag = false
-    var flagForSelect = false;    
-    
-    $("#wgt_display").text(sankoreLang.display);
-    $("#wgt_edit").text(sankoreLang.edit);
-    $("#wgt_name").text(sankoreLang.wgt_name);
-    $("#wgt_reload").text(sankoreLang.reload);
-    $("#wgt_help").text(sankoreLang.help);
-    $("#help").html(sankoreLang.help_content);
-    $("#style_select option[value='1']").text(sankoreLang.slate);
-    $("#style_select option[value='2']").text(sankoreLang.pad);
-    $("#style_select option[value='3']").text(sankoreLang.none);
-    var tmpl = $("div.inline label").html();
-    $("div.inline label").html(sankoreLang.theme + tmpl)
-    
-    //popup message
-    var popupText = $("<div id='popupWordInfo' class='popupWordInfo'></div>").appendTo("#data");
-    
-    // adding question block
-    var addQstDiv = $("<div id='addQstDiv' class='addQstDiv'>").appendTo("#data");
-    var addQstButton = $("<button id='addQstButton' class='addQstButton'>").appendTo("#addQstDiv");    
-    var addQsqSpan1 = $("<span id='addQsqSpan1'>" + sankoreLang.q + "1</span>").appendTo("#addQstButton");
-    var addQsqSpan2 = $("<span id='addQsqSpan2'>" + sankoreLang.add_new_question + "</span>").appendTo("#addQstButton");
-    
-    //import saved data
-    if(window.sankore){
-        if(sankore.preference("qstArrayData","") && sankore.preference("qstArrayData","") != "[]")
-            questionArray = jQuery.parseJSON(sankore.preference("qstArrayData",""));         
-        else
-            questionArray = jQuery.parseJSON('[{"text":"' + sankoreLang.example_question + '","type":"1","id":538,"rightAns":"2","answers":[{"id":953,"text":"' + sankoreLang.answer + ' 1.","value":1,"state":"","was":false},{"id":526,"text":"' + sankoreLang.answer + ' 2.","value":2,"state":"","was":false},{"id":473,"text":"' + sankoreLang.answer + ' 3.","value":3,"state":"","was":false}]}]');
-        
-        for(i in questionArray){
-            addQstBlock(questionArray[i].id, questionArray[i].text, questionArray[i].type,"style='display: none;'");
-            for(j in questionArray[i].answers)
-                addAnsBlock(questionArray[i].answers[j].id, questionArray[i].id, questionArray[i].answers[j].text, true, questionArray[i].rightAns, questionArray[i].type);
-        }
-        displayData();
-    }
-    else{ 
-        questionArray = jQuery.parseJSON('[{"text":"' + sankoreLang.example_question + '","type":"1","id":538,"rightAns":"2","answers":[{"id":953,"text":"' + sankoreLang.answer + ' 1.","value":1,"state":"","was":false},{"id":526,"text":"' + sankoreLang.answer + ' 2.","value":2,"state":"","was":false},{"id":473,"text":"' + sankoreLang.answer + ' 3.","value":3,"state":"","was":false}]}]');
-        for(i in questionArray){
-            addQstBlock(questionArray[i].id, questionArray[i].text, questionArray[i].type,"style='display: none;'");
-            for(j in questionArray[i].answers)
-                addAnsBlock(questionArray[i].answers[j].id, questionArray[i].id, questionArray[i].answers[j].text, true, questionArray[i].rightAns, questionArray[i].type);
-        }
-        displayData();
-    }
-    
-    //saving widget data into sankore object for a correct import
-    if (window.widget) {
-        window.widget.onleave = function(){
-            sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
-            sankore.setPreference("choisir_style", $("#style_select").find("option:selected").val());
-        }
-    }
-    
-    if(window.sankore)
-        if(sankore.preference("choisir_style","")){
-            changeStyle(sankore.preference("choisir_style",""));
-            $("#style_select").val(sankore.preference("choisir_style",""));
-        } else
-            changeStyle("3")
-
-    $("#wgt_display, #wgt_edit").click(function(event){
-        if(this.id == "wgt_display"){
-            if(!$(this).hasClass("selected")){                
-                $(this).addClass("selected");
-                $("#wgt_edit").removeClass("selected");
-                $("#parameters").css("display","none");                
-                $(this).css("display", "none");
-                $("#wgt_edit").css("display", "block");
-                displayData(true);
-                mode = true;
-                if(window.sankore){
-                    sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
-                    sankore.setPreference("choisir_style", $("#style_select").find("option:selected").val());
-                }
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#wgt_display").removeClass("selected");
-                $("#parameters").css("display","block");                
-                $(this).css("display", "none");
-                $("#wgt_display").css("display", "block");
-                editData();
-                mode = false;
-            }
-        }
-    });
-
-    $("#wgt_help").click(function(){
-        var tmp = $(this);
-        if($(this).hasClass("open")){
-            $(this).removeClass("help_pad").removeClass("help_wood")
-            $("#help").slideUp("100", function(){
-                tmp.removeClass("open");
-                $("#data").show();
-            });
-        } else {
-            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
-            $("#data").hide();
-            $("#help").slideDown("100", function(){
-                tmp.addClass("open");
-            });
-        }
-    });
-
-    $("#wgt_reload").text(sankoreLang.reload).click(function(){
-        if($("#wgt_edit").css("display") == "none")
-            $("#wgt_display").trigger("click");
-        else{
-            editData();
-            mode = false;
-            displayData(true);
-            mode = true;
-        }
-    });
-    
-    $("#style_select option[value='1']").text(sankoreLang.slate);
-    $("#style_select option[value='2']").text(sankoreLang.pad);
-    
-    $("#style_select").change(function (event){
-        changeStyle($(this).find("option:selected").val());
-    })
-    
-    // add question
-    addQstButton.click(function(){        
-        //question block
-        var id = Math.round(Math.random()*1000);       
-        var obj = new Question();
-        obj.id = id;
-        questionArray.push(obj);
-        
-        addQstBlock(id, sankoreLang.template_question, "","");
-                
-        if(window.sankore)
-            sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
-    });
-    
-    //set used at this moment question id into the variable 
-    $(".qstDiv").live('mouseover', function() {
-        currentQstId = this.id;
-    });
-    
-    //set used at this moment question id into the variable 
-    $(".qstDivDisplay").live('mouseover', function() {
-        if(!flagForSelect)
-            currentQstId = this.id.replace("qstDivDisplay","");
-    });
-       
-    //adding new answer
-    $(".ansAdd").live('click', function(){
-        
-        var id = Math.round(Math.random()*1000);        
-        var obj = new Answer();
-        obj.id = id;
-        getNeededElement(questionArray, currentQstId).answers.push(obj);
-        
-        addAnsBlock(id, currentQstId, sankoreLang.template_answer);
-    });
-    
-    //set answer text
-    $(".ansContent").live('keyup', function(event){
-        var id = $(event.target).attr("id").replace("ansContent","");
-        getNeededElement(getNeededElement(questionArray, currentQstId).answers,id).text = $(event.target).text();
-    });
-    
-    //set question text
-    $(".qstContent").live('keyup', function(event){
-        var id = $(event.target).attr("id").replace("qstContent","");
-        getNeededElement(questionArray, id).text = $(event.target).text();
-    });
-    
-    //question div border
-    $(".qstContent").live('mouseover', function(event){
-        $(event.target).css({
-            border:"3px solid #00C6FF"
-        });
-    });
-    
-    // deleting question div border
-    $(".qstContent").live('mouseout', function(event){
-        $(event.target).css({
-            border:"3px solid #ccc"
-        });
-    });
-    
-    //answer div border
-    $(".ansContent").live('mouseover', function(event){
-        $(event.target).css({
-            border:"3px solid #00C6FF"
-        });
-    });
-    
-    // deleting answer div border
-    $(".ansContent").live('mouseout', function(event){
-        $(event.target).css({
-            border:"3px solid #ccc"
-        });
-    });
-    
-    //delete answer
-    $(".ansDelete").live('click', function(){
-        popupText.hide();
-        var id = this.id.replace("ansDelete","");
-        $("#" + currentQstId + " #" + id).remove();
-        for(var i in questionArray)
-            if(questionArray[i].id == currentQstId){
-                questionArray[i].rightAns = questionArray[i].rightAns.replace($("#" + currentQstId + " #" + id + " input:checkbox").val(),"");
-                for(var j in questionArray[i].answers)
-                    if(questionArray[i].answers[j].id == id){
-                        if(j == 0)
-                            questionArray[i].answers.shift();
-                        else
-                        if((j+1) == questionArray[i].answers.length)
-                            questionArray[i].answers.pop();
-                        else
-                            questionArray[i].answers = questionArray[i].answers.slice(0,j).concat(questionArray[i].answers.slice(j+1));  
-                        break;
-                    }
-            }
-        refreshAns();
-    });
-    
-    //delete question
-    $(".qstDelete").live('click', function(){
-        popupText.hide();
-        $("#" + currentQstId).remove();
-        for(var i in questionArray)
-            if(questionArray[i].id == currentQstId){
-                if(i == 0)
-                    questionArray.shift();
-                else
-                if((i+1) == questionArray.length)
-                    questionArray.pop();
-                else
-                    questionArray = questionArray.slice(0,i).concat(questionArray.slice(i+1));                
-                break;
-            }
-        refreshQst();
-    });
-    
-    //change options
-    $(".changeOptions").live('click', function(){
-        $("#" + currentQstId + "qstOptions .changeOptions").hide();
-        $("#" + currentQstId + "qstOptions .applyChanges").show();
-        $("#" + currentQstId + "qstOptChoice").show('fast');
-    });
-    
-    //apply changes
-    $(".applyChanges").live('click', function(){
-        $("#" + currentQstId + "qstOptions .applyChanges").hide();
-        $("#" + currentQstId + "qstOptions .changeOptions").show();
-        $("#" + currentQstId + "qstOptChoice").hide('fast');
-    });
-    
-    //select option
-    $(".qstOptChoice input:radio").live('click', function(event){
-        if(!mode){
-            $("#" + currentQstId + "qstOptChoice input:radio").removeAttr("checked");
-            $(event.target).attr("checked", "checked");
-            getNeededElement(questionArray, currentQstId).type = $(event.target).attr("value");
-        }
-    });
-    
-    //select right ansver in edit mode and answer question in display mode
-    $(".newAnswer input").live('click', function(event){
-
-        if(!mode){
-            if(getNeededElement(questionArray, currentQstId).type == "1" || getNeededElement(questionArray, currentQstId).type == "3"){
-                $("#" + currentQstId + "ansDiv input").removeAttr("checked");
-                $(event.target).attr("checked", "checked");
-                getNeededElement(questionArray, currentQstId).rightAns = $(event.target).attr("value");
-            } else {
-                (event.target.checked) ? $(event.target).attr("checked", "checked") : $(event.target).removeAttr("checked", "checked");
-                getNeededElement(questionArray, currentQstId).rightAns = "";
-                for(var i in $("#" + currentQstId + "ansDiv input")){
-                    if($("#" + currentQstId + "ansDiv input")[i].checked)
-                        getNeededElement(questionArray, currentQstId).rightAns += $("#" + currentQstId + "ansDiv input")[i].value + ", ";
-                }
-            }
-        } else {
-            if(event.target.type == "radio"){
-                checkingAnswers("radio", getNeededElement(questionArray, currentQstId).answers, event.target.value);
-                if(event.target.value == getNeededElement(questionArray, currentQstId).rightAns)
-                    $(event.target).next().next().css("background-color","#6c0");
-                else
-                    $(event.target).next().next().css("background-color","red");
-            } else {
-                checkingAnswers("box", getNeededElement(questionArray, currentQstId).answers, event.target.value, event.target.checked);
-                if(getNeededElement(questionArray, currentQstId).rightAns.replace(/,/g,"").indexOf(event.target.value + " ", 0) != -1)
-                    $(event.target).next().next().css("background-color","#6c0");
-                else
-                    $(event.target).next().next().css("background-color","red");
-            }
-        }
-    });
-    
-    //popup messages
-    $(".qstDelete").live('mouseover', function(evt){
-        popupFlag = true;
-        popupText.text(sankoreLang.delete_question)
-        .css("top", evt.pageY + 15)
-        .css("left", evt.pageX - 40)
-        .css({
-            width:"130px"
-        })
-        .show("fast", function(){
-            if(!popupFlag)
-                popupText.hide();
-        });
-    });
-    
-    $(".ansDelete").live('mouseover', function(evt){
-        popupFlag = true;
-        popupText.text(sankoreLang.delete_answer)
-        .css("top", evt.pageY + 15)
-        .css("left", evt.pageX - 40)
-        .css({
-            width:"130px"
-        })
-        .show("fast", function(){
-            if(!popupFlag)
-                popupText.hide();
-        });
-    });
-    
-    $(".newAnswer input").live('mouseover', function(evt){
-        if(!mode){
-            popupFlag = true;
-            popupText.text(sankoreLang.right_answer)
-            .css("top", evt.pageY + 15)
-            .css("left", evt.pageX - 40)
-            .css({
-                width:"130px"
-            })
-            .show("fast", function(){
-                if(!popupFlag)
-                    popupText.hide();
-            });
-        }
-    });
-    
-    $(".qstDelete, .ansDelete, .newAnswer input").live('mousemove', function(evt){
-        if(!mode){
-            popupText.css("top", evt.pageY + 15)
-            .css("left", evt.pageX - 40);
-        }
-    });
-    
-    $(".qstDelete, .ansDelete, .newAnswer input").live('mouseout', function(evt){
-        if(!mode){
-            popupFlag = false;
-            popupText.hide();
-        }
-    });
-
-    //answer the questions
-    
-    $("select").live('change', function(evt){
-        if(mode){
-            checkingAnswers("sel", getNeededElement(questionArray, currentQstId).answers, event.target.value);
-            if(event.target.value == getNeededElement(questionArray, currentQstId).rightAns)
-                $(event.target).css("background-color","#6c0");
-            else
-                $(event.target).css("background-color","red");
-            if(event.target.value == 0)
-                $(event.target).css("background-color","");
-            flagForSelect = false;
-        }
-    });
-    
-    $("select").live('mousedown', function(evt){
-        if(mode){
-            flagForSelect = true;
-        }
-    });
-    
-    //toggle button click trigger
-    //toggleButton.trigger("click");
-    //show data in display mode
-    function displayData(){
-        $("#addQstDiv").hide();
-        $(".qstDiv").hide();
-        addToPage(questionArray);
-    }
-    
-    //set widget in edit mode
-    function editData(){
-        for(var i in questionArray)            
-            for(var j in questionArray[i].answers){
-                questionArray[i].answers[j].state = "";
-                questionArray[i].answers[j].was = false
-            }               
-                
-        $(".qstDivDisplay").remove();
-        
-        $("#addQstDiv").show('fast');
-        $(".qstDiv").show('fast');
-    }
-    
-    // show questions and answers in display mode
-    function addToPage(array){
-            var counter = 1;
-            for(var i in array){
-
-                var qstDiv = $("<div class='qstDivDisplay' id='" + array[i].id + "qstDivDisplay'>");        
-                var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);             
-                var qstNumber = $("<span class='qstNumber'>" + sankoreLang.question + " " + counter + "</span>").appendTo(spanOptConn);        
-                var qstContent = $("<div class='qstContentDisplay'>" + array[i].text + "</div>").appendTo(qstDiv);        
-                var ansDiv = $("<div class='ansDiv' id='" + array[i].id + "ansDiv'>").appendTo(qstDiv);
-
-                var ansCount = 1;
-                var type = array[i].type;
-                var selInput = $("<select>");
-                if(type == 3){
-                    var newAnswer = $("<div class='newAnswer'>"); 
-                    newAnswer.appendTo(ansDiv);
-                    var selectSpan = $("<span id='answerText'>").appendTo(newAnswer);
-                    selInput.appendTo(selectSpan);
-                    $("<option value='0'>" + sankoreLang.select_text + "</option>").appendTo(selInput);
-                }
-                for(var j in array[i].answers){  
-                    switch(type){
-                        case "1":
-                            var local_state = "";
-                            var local_color = "";
-                            if(begin){
-                                local_state = array[i].answers[j].state;
-                                local_color = (array[i].answers[j].value == array[i].rightAns)?((array[i].answers[j].was)?"style='background-color: #6c0;'":""):((array[i].answers[j].was)?"style='background-color: red;'":"");
-                            }
-                            newAnswer = $("<div class='newAnswer'>");
-                            var ansInput = $("<input type='radio' name='" + counter + "' value='" + array[i].answers[j].value + "' " + local_state + " style='float: left; margin-right: 10px;'/>").appendTo(newAnswer);
-                            var ansSpan = $("<span class='ansSpanDisplay'>" + ansCount + ".</span>").appendTo(newAnswer);                        
-                            var ansContent = $("<div class='ansContentDisplay' " + local_color + "><span id='answerText'>" + array[i].answers[j].text + "</span></div>").appendTo(newAnswer);
-                            newAnswer.appendTo(ansDiv);
-                            break;
-                        case "2":
-                            local_state = "";
-                            local_color = "";
-                            if(begin){
-                                local_state = (array[i].answers[j].state)?"checked":"";
-                                local_color = (array[i].rightAns.replace(/,/g,"").indexOf(array[i].answers[j].value + " ", 0) != -1)?((array[i].answers[j].was)?"style='background-color: #6c0;'":""):((array[i].answers[j].was)?"style='background-color: red;'":"");
-                            }
-                            newAnswer = $("<div class='newAnswer'>");
-                            ansInput = $("<input type='checkbox' value='" + array[i].answers[j].value + "' " + local_state + " style='float: left; margin-right: 10px;'/>").appendTo(newAnswer);
-                            ansSpan = $("<span class='ansSpanDisplay'>" + ansCount + ".</span>").appendTo(newAnswer);                        
-                            ansContent = $("<div class='ansContentDisplay' " + local_color + "><span id='answerText'>" + array[i].answers[j].text + "</span></div>").appendTo(newAnswer);
-                            newAnswer.appendTo(ansDiv);
-                            break;
-                        case "3":
-                            local_state = "";
-                            local_color = "";
-                            if(begin){
-                                local_state = (array[i].answers[j].state)?"selected":"";
-                                local_color = (array[i].answers[j].value == array[i].rightAns)?((array[i].answers[j].was)?"#6c0":""):((array[i].answers[j].was)?"red":"");
-                            }
-                            ansInput = $("<option value='" + array[i].answers[j].value + "' " + local_state + ">" + array[i].answers[j].text + "</option>").appendTo(selInput);
-                            if(local_state && local_color)
-                                selInput.css("background-color",local_color);
-                            break;
-                    }               
-                    ansCount++;
-                }
-                qstDiv.appendTo("#data");
-                counter++;
-            }
-            begin = false;
-    }
-}
-
-//add new question block in a edit mode
-function addQstBlock(id, text, type, style){
-    var qstDiv = $("<div class='qstDiv' id='" + id + "' " + style + ">");
-    var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);
-        
-    var count = $(".qstNumber").size();       
-    var qstNumber = $("<span class='qstNumber'>" + sankoreLang.q + (count + 1) + "</span>").appendTo(spanOptConn);
-        
-    var qstOptions = $("<div class='qstOptions' id='" + id + "qstOptions'>").appendTo(spanOptConn);
-    var changeOptions = $("<button class='changeOptions'>" + sankoreLang.options + "</button>").appendTo(qstOptions);
-    var applyChanges = $("<button class='applyChanges' style='display: none;'>" + sankoreLang.close + "</button>").appendTo(qstOptions);
-    var qstDelete = $("<button class='qstDelete'>").appendTo(qstOptions);
-        
-    var qstOptChoice = $("<div class='qstOptChoice' id='" + id + "qstOptChoice' style='display: none;'>").appendTo(qstDiv);
-    var optDesc = $("<div style='height: 65px;'>").appendTo(qstOptChoice);
-    var optDescImg = $("<div class='optDescImg'>").appendTo(optDesc);
-    var optDescText = $("<div class='optDescText'>" + sankoreLang.options_desc + "</div>").appendTo(optDesc);
-        
-    var type1 = $("<div class='type'>").appendTo(qstOptChoice);
-    var contentType1 = $("<div class='contentType'>").appendTo(type1);
-    var divType1 = $("<div class='divType1'>").appendTo(contentType1);
-    var textType1 = $("<div class='textType'>" + sankoreLang.radio_desc + "</div>").appendTo(contentType1);
-        
-    var type2 = $("<div class='type'>").appendTo(qstOptChoice);
-    var contentType2 = $("<div class='contentType'>").appendTo(type2);
-    var divType2 = $("<div class='divType2'>").appendTo(contentType2);
-    var textType2 = $("<div class='textType'>" + sankoreLang.checkbox_desc + "</div>").appendTo(contentType2);
-        
-    var type3 = $("<div class='type'>").appendTo(qstOptChoice);
-    var contentType3 = $("<div class='contentType'>").appendTo(type3);
-    var divType3 = $("<div class='divType3'>").appendTo(contentType3);
-    var textType3 = $("<div class='textType'>" + sankoreLang.select_desc + "</div>").appendTo(contentType3);
-
-    switch(type){
-        case "1":
-            var radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1' checked/><div></div>").appendTo(type1);
-            var radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2'/><div></div>").appendTo(type2);
-            var radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3'/><div></div>").appendTo(type3);
-            break;
-        case "2":
-            radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1'/><div></div>").appendTo(type1);
-            radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2' checked/><div></div>").appendTo(type2);
-            radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3'/><div></div>").appendTo(type3);
-            break;
-        case "3":
-            radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1'/><div></div>").appendTo(type1);
-            radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2'/><div></div>").appendTo(type2);
-            radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3' checked/><div></div>").appendTo(type3);
-            break;
-        default:
-            radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1'/><div></div>").appendTo(type1);
-            radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2'/><div></div>").appendTo(type2);
-            radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3'/><div></div>").appendTo(type3);
-            break;
-    }
-    
-    var qstContent = $("<div class='qstContent' id='" + id + "qstContent' contenteditable='true'>" + text + "</div>").appendTo(qstDiv);
-        
-    var ansDiv = $("<div class='ansDiv' id='" + id + "ansDiv'>").appendTo(qstDiv);
-    var ansAdd = $("<button class='ansAdd'>" + sankoreLang.add_answer + "</button>").appendTo(ansDiv);
-    qstDiv.insertBefore("#addQstDiv");
-    $("#addQsqSpan1").text(sankoreLang.q + (count + 2));
-}
-
-//add answers
-function addAnsBlock(id, currId, text, stage, rightAns, type){
-    var newAnswer = $("<div class='newAnswer' id='" + id + "'>");
-    var value;
-    var check = "";
-    if(stage){
-        value = getNeededElement(getNeededElement(questionArray, currId).answers,id).value;
-        if(type != "2"){
-            if(rightAns == value)
-                check = "checked='true'";
-        }
-        else {
-            rightAns = rightAns.replace(/,/g,"");
-            if(rightAns.indexOf(value + " ", 0) != -1)
-                check = "checked='true'";                
-        }
-    }
-    else {
-        value = ($("#" + currId + " .newAnswer input:checkbox").last().val()) ? parseInt($("#" + currId + " .newAnswer input:checkbox").last().val()) + 1 : 1;
-        getNeededElement(getNeededElement(questionArray, currId).answers,id).value = value;
-    }
-    var count = $("#" + currId + " .newAnswer").size() + 1;
-    var input = $("<input type='checkbox' style='float: left;' value='" + value + "' " + check + ">").appendTo(newAnswer);
-    var ansSpan = $("<span class='ansSpan'>" + sankoreLang.a + count + "</span>").appendTo(newAnswer);
-    var ansContent = $("<div class='ansContent' id='" + id +"ansContent' contenteditable='true'>" + text + "</div>").appendTo(newAnswer);
-    var ansDelete = $("<button class='ansDelete' id='" + id + "ansDelete'>").appendTo(newAnswer);
-    newAnswer.insertBefore("#" + currId + "ansDiv .ansAdd");    
-        
-    if(window.sankore)
-        sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
-}
-
-//get needed array element
-function getNeededElement(array,id){
-    for(var i in array)
-        if(array[i].id == id)
-            return array[i];
-}
-
-//check on fill
-function checkArrayOnFill(array){
-    var count = 0;
-    
-    for(var i in array)
-        count++;
-    
-    return count;
-}
-
-//refresh answers numbers
-function refreshAns(){
-    var count = $("#" + currentQstId + " .newAnswer").size();        
-    for(var i = 0; i < count; i ++)
-        $($("#" + currentQstId + " .newAnswer span")[i]).text(sankoreLang.a + (i+1));
-}
-
-//refresh questions numbers
-function refreshQst(){
-    var count = $(".qstNumber").size();        
-    for(var i = 0; i < count; i ++)
-        $($(".qstNumber")[i]).text(sankoreLang.q + (i+1));
-    $("#addQsqSpan1").text(sankoreLang.q + ++count);
-}
-
-//check answers
-function checkingAnswers(type, array, value, state){
-    switch(type){
-        case "radio":
-            for(var i in array)
-                if(array[i].value == value){
-                    array[i].state = "checked";
-                    array[i].was = true;
-                } else 
-                    array[i].state = "";                
-            break;
-        case "box":
-            for(i in array)
-                if(array[i].value == value){
-                    array[i].state = state;
-                    array[i].was = true;
-                }     
-            break;
-        case "sel":
-            for(i in array)
-                if(array[i].value == value){
-                    array[i].state = "selected";
-                    array[i].was = true;
-                } else 
-                    array[i].state = ""; 
-            break;
-    }
-}
-
-//question constructor
-function Question(){
-
-    this.text = "";
-    
-    this.type = "1";
-    
-    this.id = "";
-    
-    this.rightAns = "";
-    
-    this.answers = new Array();
-
-}
-
-//answer constructor
-function Answer(){
-    
-    this.id = "";
-    
-    this.text = "";
-    
-    this.value = "";
-    
-    this.state = "";
-    
-    this.was = false;
-}
-
-//changing the style
-function changeStyle(val){
-    switch(val){
-        case "1":
-            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
-            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
-            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
-            $("#wgt_name").removeClass("pad_color");
-            $("#wgt_display").addClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").addClass("radius_ft");
-            break;
-        case "2":
-            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").removeClass("radius_ft");
-            break;
-        case "3":
-            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
-            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
-            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
-            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
-            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
-            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
-            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
-            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").addClass("without_radius").removeClass("radius_ft");
-            break;
-    }
-}
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/config.xml
index c7b0cdb..33c3873 100644
--- a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/config.xml
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/config.xml
@@ -5,7 +5,7 @@
         version="1.1"
         width="920"
         height="600" 
-		ub:resizable="true">   
+		ub:resizable="false">   
 		     
   		<name>Choisir</name>
 		<author href="http://www.getuniboard.com"
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/css/basic.css
index 65f6e82..8f8a6b2 100644
--- a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/css/basic.css
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/css/basic.css
@@ -301,18 +301,7 @@ body{
 }
 
 #wgt_add{
-    margin-left: 10px;
-    padding-right: 10px;
-    border: 1px solid #666;
-    border-radius: 15px;
-    padding-left: 30px;
-    background: url(../images/plus.png) -2px -2px no-repeat;
-    display: inline-block;
-}
-
-#wgt_add:hover{
-    border-color: black;
-    cursor: pointer;
+    margin: 0 0 0 10px;
 }
 
 .btl_pad{
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/index.html
index ffce672..ef8827e 100644
--- a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/index.html
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/index.html
@@ -3,86 +3,30 @@
     <head>
         <title></title>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
         <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script src="scripts/jquery.disable.text.select.js" type="text/javascript"></script>
-        <script type="text/javascript" src="scripts/blackYellow.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en")
-                    init();
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                init();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url: 'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }                
-            });
-            
+                    }
+                });      
+            });                    
         </script>
     </head>
     <body>
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="parameters">
-                        <div class="inline">
-                            <label>
-                                <select id="style_select">
-                                    <option value="1"></option>
-                                    <option value="2"></option>
-                                    <option value="3"></option>
-                                </select>
-                            </label>
-                            <div id="wgt_add"></div>
-                        </div>
-                    </div>
-                    <div id="data">
-
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
-
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
+        
     </body>
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/en/index.html b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/en/index.html
new file mode 100644
index 0000000..a6cc2e9
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/en/index.html
@@ -0,0 +1,66 @@
+<!--
+To change this template, choose Tools | Templates
+and open the template in the editor.
+-->
+<!DOCTYPE html>
+<html>
+    <head>
+        <title></title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script src="../../scripts/jquery.disable.text.select.js" type="text/javascript"></script>
+        <script type="text/javascript" src="scripts/blackYellow.js"></script>
+        <script type="text/javascript">
+            
+            $(document).ready(function(){
+                init();
+            });
+            
+        </script>
+    </head>
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="parameters">
+                        <div class="inline">
+                            <label>
+                                <select id="style_select">
+                                    <option value="1"></option>
+                                    <option value="2"></option>
+                                    <option value="3"></option>
+                                </select>
+                            </label>
+                            <button id="wgt_add"></button>
+                        </div>
+                    </div>
+                    <div id="data">
+
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/scripts/blackYellow.js b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/en/scripts/blackYellow.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/Contraste.wgt/scripts/blackYellow.js
rename to Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/en/scripts/blackYellow.js
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/fr/index.html
index 6f4218e..a6cc2e9 100644
--- a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/fr/index.html
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/fr/index.html
@@ -46,7 +46,7 @@ and open the template in the editor.
                                     <option value="3"></option>
                                 </select>
                             </label>
-                            <div id="wgt_add"></div>
+                            <button id="wgt_add"></button>
                         </div>
                     </div>
                     <div id="data">
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/ru/index.html
index 3ea9874..cc98c95 100644
--- a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/ru/index.html
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/ru/index.html
@@ -46,7 +46,7 @@ and open the template in the editor.
                                     <option value="3"></option>
                                 </select>
                             </label>
-                            <div id="wgt_add"></div>
+                            <button id="wgt_add"></button>
                         </div>
                     </div>
                     <div id="data">
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help-template.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help-template.js
index f5cdf8c..0fef856 100644
--- a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help-template.js
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help-template.js
@@ -7,7 +7,7 @@
 <p>Enter the "Edit" mode to :</p>
 <ul>
 <li>choose the theme of the App : pad, slate, or none (by default : pad),</li>
-<li>determine the number of dices you want to use for your activity (2-6).</li>
+<li>determine the number of dices you want to use for your activity (1-6).</li>
 </ul>
 <p>The calculations and reasoning could be written on the page (outside the App).</p>
 <p>"Display" button comes back to the activity.</p>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help_fr-template.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help_fr-template.js
index 8e06acb..bb01029 100644
--- a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help_fr-template.js
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help_fr-template.js
@@ -10,7 +10,7 @@
 <p>Le bouton “Modifier” vous permet :</p>
 <ul>
 <li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut tablette), </li>
-<li>de déterminer le nombre de dés que vous voulez utiliser pour votre activité (de 2 à 6). </li>
+<li>de déterminer le nombre de dés que vous voulez utiliser pour votre activité (de 1 à 6). </li>
 </ul>
 
 <p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/templates.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/templates.js
index 670a9d7..cf24ec3 100644
--- a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/templates.js
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/templates.js
@@ -19,6 +19,7 @@ var parametersTemplate =
 			'<div class="inline">'+
 				'<label>{{fr.njin.i18n.de.parameters.label.count}}'+
 					'<select name="count" role="parameter">'+
+						'<option value="1">1</option>'+
 						'<option value="2">2</option>'+
 						'<option value="3">3</option>'+						
 						'<option value="4">4</option>'+						
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/config.xml
index 76ba351..2c9f1dd 100644
--- a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/config.xml
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/config.xml
@@ -3,9 +3,9 @@
 		xmlns:ub="http://uniboard.mnemis.com/widgets"
         id="http://www.njin.fr/sankore/apps/memory" 
         version="1.0"
-        width="760"
-        height="580" 
-        ub:resizable="true">     
+        width="850"
+        height="600" 
+        ub:resizable="false">     
    
 		<name>La boite</name>
 		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/ubw-main.css
index 66280eb..95ec118 100644
--- a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/ubw-main.css
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/ubw-main.css
@@ -1,308 +1,319 @@
-html, body {
-	margin:0;
-	padding: 0;
-	font-family: "helvetica neue";
-	font-size: 14px;
-	color: #666666;
-}
-
-#ubwidget {
-	position: absolute;
-	top: 0;
-	bottom: 0;
-	left: 0;
-	right: 0;
-	background: url("images/bg.png");
-}
-
-.theme-pad #ubwidget {
-	border-radius: 40px;
-	border-width: 52px;
-	
-	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
-	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
-			border-image: url("images/pad-bd.png") 52 repeat;
-}
-
-.theme-slate #ubwidget {
-	border-radius: 44px;
-	border-width: 52px;
-	
-	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
-	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
-			border-image: url("images/slate-bd.png") 52 repeat;
-}
-
-#ubwidget > .wrapper {
-	position: absolute;
-	top: 0px;
-	bottom: 0px;
-	left: 0px;
-	right: 0px;
-	overflow: hidden;
-}
-
-
-.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
-	position: absolute;
-	top: -49px;
-	bottom: -5px;
-	left: -5px;
-	right: -5px;
-	overflow: hidden;
-}
-
-#toolbar {
-	display: table;
-	width: 100%;
-	height: 44px;
-	font-size: 24px;
-	color: #FFCC99;
-	padding:0 10px;
-}
-
-.theme-pad #toolbar, .theme-slate #toolbar {
-	height: 38px;
-	padding: 6px 0 0;
-}
-
-.theme-slate #toolbar {
-	color: #7F613F;
-	text-shadow: #FFDCA9 0 1px 0;
-}
-
-
-#toolbar > * {
-	display: table-cell;
-	height: 100%;
-	vertical-align: middle;
-}
-
-#toolbar .actions {
-	text-align: right;
-}
-
-#toolbar button, h1 {
-	font-weight: normal;
-	font-size: 24px;
-	color: #FFCC99;
-	margin: 0;
-}
-
-.theme-slate #toolbar button, .theme-slate h1 {
-	color: #7F613F;
-	text-shadow: #FFDCA9 0 1px 0;
-}
-
-#toolbar button {
-	border: none;
-	padding: none;
-	outline: none;
-	background: none;
-	
-	cursor: pointer;
-	padding-left: 34px;
-	margin-left: 10px;
-	height: 32px;
-}
-
-#toolbar button span {
-	display: block;
-	line-height: 32px;
-}
-
-#toolbar button[role='edit'] {
-	background: url("images/toolbar-edit.png") left top no-repeat;	
-}
-
-#toolbar button[role='view'] {
-	display: none;
-	color: #FFF;
-	background: url("images/toolbar-edit.png") left -32px no-repeat;
-}
-
-#toolbar button[role='reload'] {
-	background: url("images/toolbar-reload.png") left top no-repeat;	
-}
-
-#toolbar button[role='help'] {
-	background: url("images/toolbar-help.png") left top no-repeat;	
-	display: none;
-}
-
-.hasHelp #toolbar button[role='help'] {
-	display: inline-block;
-}
-
-.showHelp #toolbar button[role='help'] {
-	color: #FFF;
-	background-position: left -32px;
-}
-
-.theme-slate #toolbar button[role='edit'] {
-	background-image: url("images/slate-toolbar-edit.png");
-}
-
-.theme-slate #toolbar button[role='view'] {
-	text-shadow: #7F613F 0 -1px 0;
-	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
-}
-
-.theme-slate #toolbar button[role='reload'] {
-	background-image: url("images/slate-toolbar-reload.png");
-}
-
-.theme-slate #toolbar button[role='help'] {
-	background-image: url("images/slate-toolbar-help.png");
-}
-
-.showHelp.theme-slate #toolbar button[role='help'] {
-	text-shadow: #7F613F 0 -1px 0;
-}
-
-
-.onEdit #toolbar button[role='view'] {
-	display: inline-block;
-}
-
-.onEdit #toolbar button[role='edit'] {
-	display: none;
-}
-
-#help {
-	width: 300px;
-	height: 400px;
-	position: absolute;
-	margin-top: 10px;
-	right: 10px;
-	z-index: 10000;
-	display: none;
-}
-
-.showHelp #help {
-	display: block;
-}
-
-#content {
-	position: absolute;
-	top: 44px;
-	bottom: 0;
-	overflow: auto;
-	left: 0;
-	right: 0;
-
-	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-}
-
-#parameters {
-	display:none;
-	padding: 10px 20px;
-	background: url("images/parameters-bg.png");
-	
-	-webkit-border-radius: 4px 4px 0 0;
-	   -moz-border-radius: 4px 4px 0 0;
-		-mz-border-radius: 4px 4px 0 0;
-			border-radius: 4px 4px 0 0;
-}
-
-#parameters label {
-	font-style: italic;
-}
-
-#parameters  label > select, #parameters  label > input{
-	margin-left: 10px;
-}
-
-#parameters > div.inline {
-	display: inline-block;
-}
-
-#parameters > div.inline+div.inline {
-	margin-left: 20px;
-}
-
-#parameters input[type=text],
-#parameters input[type=number] {
-	height: 26px;
-	border: 1px solid #BBB;
-	background-color: #FFF;
-	
-	padding: 0 4px;
-	
-	-webkit-border-radius: 4px;
-	   -moz-border-radius: 4px;
-	    -ms-border-radius: 4px;
-			border-radius: 4px;
-	
-	-webkit-box-shadow: 0 1px 0 #FFF;
-	   -moz-box-shadow: 0 1px 0 #FFF;
-	    -ms-box-shadow: 0 1px 0 #FFF;
-			box-shadow: 0 1px 0 #FFF;
-}
-
-#parameters input.tiny {
-	width: 40px;
-}
-
-#parameters input.small {
-	width: 80px;
-}
-
-#parameters input.medium {
-	width: 120px;
-}
-
-#parameters input.long {
-	width: 160px;
-}
-
-#scene {
-	padding: 20px;
-}
-
-#scene > * {
-	margin: 0 auto;
-}
-.onEdit #scene {
-}
-
-.onEdit #parameters {
-	display: block;
-}
-
-/*
-.card-container {
-  	-webkit-perspective: 600px;
-	width:100%;
-	height: 100%;
-}
-.card {
-	position: relative;
-	width:100%;
-	height: 100%;
-}
-.card > div {
-	position: absolute;
-	width:100%;
-	height: 100%;
-	-webkit-transform-style: preserve-3d;
-  	-webkit-transition: all .5s ease-in-out;
-	-webkit-backface-visibility: hidden;
-}
-.card > div:first-child {
-	-webkit-transform: rotateY( 0deg );
-}
-.card > div:last-child {
-	-webkit-transform: rotateY( -180deg );
-}
-.card.flip > div:first-child {
-	-webkit-transform: rotateY( 180deg );
-}
-.card.flip > div:last-child {
-	-webkit-transform: rotateY( 0deg );
-}
-*/
+html, body {
+    margin:0;
+    padding: 0;
+    font-family: "helvetica neue";
+    font-size: 14px;
+    color: #666666;
+}
+
+#ubwidget {
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    background: url("images/bg.png");
+}
+
+.theme-pad #ubwidget {
+    border-radius: 40px;
+    border-width: 52px;
+
+    -webkit-border-image: url("images/pad-bd.png") 52 repeat;
+    -moz-border-image: url("images/pad-bd.png") 52 repeat;
+    border-image: url("images/pad-bd.png") 52 repeat;
+}
+
+.theme-slate #ubwidget {
+    border-radius: 44px;
+    border-width: 52px;
+
+    -webkit-border-image: url("images/slate-bd.png") 52 repeat;
+    -moz-border-image: url("images/slate-bd.png") 52 repeat;
+    border-image: url("images/slate-bd.png") 52 repeat;
+}
+
+#ubwidget > .wrapper {
+    position: absolute;
+    top: 0px;
+    bottom: 0px;
+    left: 0px;
+    right: 0px;
+    overflow: hidden;
+}
+
+
+.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
+    position: absolute;
+    top: -49px;
+    bottom: -5px;
+    left: -5px;
+    right: -5px;
+    overflow: hidden;
+}
+
+#toolbar {
+    display: table;
+    width: 100%;
+    height: 44px;
+    font-size: 24px;
+    color: #FFCC99;
+    padding:0 10px;
+}
+
+.theme-pad #toolbar, .theme-slate #toolbar {
+    height: 38px;
+    padding: 6px 0 0;
+}
+
+.theme-slate #toolbar {
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+
+#toolbar > * {
+    display: table-cell;
+    height: 100%;
+    vertical-align: middle;
+}
+
+#toolbar .actions {
+    text-align: right;
+}
+
+#toolbar button, h1 {
+    font-weight: normal;
+    font-size: 24px;
+    color: #FFCC99;
+    margin: 0;
+}
+
+.theme-slate #toolbar button, .theme-slate h1 {
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#toolbar button {
+    border: none;
+    padding: none;
+    outline: none;
+    background: none;
+
+    cursor: pointer;
+    padding-left: 34px;
+    margin-left: 10px;
+    height: 32px;
+}
+
+#toolbar button span {
+    display: block;
+    line-height: 32px;
+}
+
+#toolbar button[role='edit'] {
+    background: url("images/toolbar-edit.png") left top no-repeat;	
+}
+
+#toolbar button[role='view'] {
+    display: none;
+    color: #FFF;
+    background: url("images/toolbar-edit.png") left -32px no-repeat;
+}
+
+#toolbar button[role='reload'] {
+    background: url("images/toolbar-reload.png") left top no-repeat;	
+}
+
+#toolbar button[role='help'] {
+    background: url("images/toolbar-help.png") left top no-repeat;	
+    display: none;
+}
+
+.hasHelp #toolbar button[role='help'] {
+    display: inline-block;
+}
+
+.showHelp #toolbar button[role='help'] {
+    color: #FFF;
+    background-position: left -32px;
+}
+
+.theme-slate #toolbar button[role='edit'] {
+    background-image: url("images/slate-toolbar-edit.png");
+}
+
+.theme-slate #toolbar button[role='view'] {
+    text-shadow: #7F613F 0 -1px 0;
+    background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+}
+
+.theme-slate #toolbar button[role='reload'] {
+    background-image: url("images/slate-toolbar-reload.png");
+}
+
+.theme-slate #toolbar button[role='help'] {
+    background-image: url("images/slate-toolbar-help.png");
+}
+
+.showHelp.theme-slate #toolbar button[role='help'] {
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+
+.onEdit #toolbar button[role='view'] {
+    display: inline-block;
+}
+
+.onEdit #toolbar button[role='edit'] {
+    display: none;
+}
+
+#help {
+    width: 300px;
+    height: 400px;
+    position: absolute;
+    margin-top: 10px;
+    right: 10px;
+    z-index: 10000;
+    display: none;
+}
+
+.showHelp #help {
+    display: block;
+}
+
+#content {
+    position: absolute;
+    top: 44px;
+    bottom: 0;
+    overflow: auto;
+    left: 0;
+    right: 0;
+
+    background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+}
+
+#parameters {
+    display:none;
+    padding: 10px 20px;
+    background: url("images/parameters-bg.png");
+    height: 24px;
+    -webkit-border-radius: 4px 4px 0 0;
+    -moz-border-radius: 4px 4px 0 0;
+    -mz-border-radius: 4px 4px 0 0;
+    border-radius: 4px 4px 0 0;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#parameters  label > select, #parameters  label > input{
+    margin-left: 10px;
+}
+
+#parameters > div.inline {
+    float: left;
+}
+
+#parameters > div.inline > div{
+    float: left; 
+    height: 28px; 
+    margin-right: 8px;  
+    padding-top: 5px;
+    font-family: "helvetica neue";
+    font-size: 14px;
+    color: #666666;
+    font-style: italic;
+}
+
+#parameters > div.inline+div.inline {
+    margin-left: 20px;
+}
+
+#parameters input[type=text],
+#parameters input[type=number] {
+    height: 26px;
+    border: 1px solid #BBB;
+    background-color: #FFF;
+
+    padding: 0 4px;
+
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    -ms-border-radius: 4px;
+    border-radius: 4px;
+
+    -webkit-box-shadow: 0 1px 0 #FFF;
+    -moz-box-shadow: 0 1px 0 #FFF;
+    -ms-box-shadow: 0 1px 0 #FFF;
+    box-shadow: 0 1px 0 #FFF;
+}
+
+#parameters input.tiny {
+    width: 40px;
+}
+
+#parameters input.small {
+    width: 80px;
+}
+
+#parameters input.medium {
+    width: 120px;
+}
+
+#parameters input.long {
+    width: 160px;
+}
+
+#scene {
+    padding: 20px;
+}
+
+#scene > * {
+    margin: 0 auto;
+}
+.onEdit #scene {
+}
+
+.onEdit #parameters {
+    display: block;
+}
+
+/*
+.card-container {
+        -webkit-perspective: 600px;
+        width:100%;
+        height: 100%;
+}
+.card {
+        position: relative;
+        width:100%;
+        height: 100%;
+}
+.card > div {
+        position: absolute;
+        width:100%;
+        height: 100%;
+        -webkit-transform-style: preserve-3d;
+        -webkit-transition: all .5s ease-in-out;
+        -webkit-backface-visibility: hidden;
+}
+.card > div:first-child {
+        -webkit-transform: rotateY( 0deg );
+}
+.card > div:last-child {
+        -webkit-transform: rotateY( -180deg );
+}
+.card.flip > div:first-child {
+        -webkit-transform: rotateY( 180deg );
+}
+.card.flip > div:last-child {
+        -webkit-transform: rotateY( 0deg );
+}
+*/
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/templates.js b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/templates.js
index 60513e9..6b3517b 100644
--- a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/templates.js
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/templates.js
@@ -1,33 +1,31 @@
-var toolbarTemplate = 	
-			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
-			'<div class="actions">'+
-				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
-				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
-				'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
-				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
-			'</div>';
-						
-var parametersTemplate = 
-			'<div class="inline">'+
-				'<label>{{fr.njin.i18n.parameters.label.themes}}'+
-					'<select name="themes" role="parameter">'+
-						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
-						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
-						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
-					'</select>'+
-				'</label>'+
-			'</div>'+
-			'<div class="inline">'+
-				'<label>{{fr.njin.i18n.boite.parameters.label.count}}'+
-					'<input class="tiny" type="number" name="count" role="parameter">'
-				'</label>'+
-			'</div>';
-			
-			
-var objectTemplate = 
-			'<div id="{{object}}">'+
-				'<!--<div class="tools">'+
-				'<button role="duplicate">{{fr.njin.i18n.boite.parameters.label.duplicate}}</button>'+
-				'<button role="remove">{{fr.njin.i18n.boite.parameters.label.remove}}</button>'+
-				'</div>-->'+
+var toolbarTemplate = 	
+			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
+			'<div class="actions">'+
+				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
+				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
+				'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
+				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
+			'</div>';
+						
+var parametersTemplate = 
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.parameters.label.themes}}'+
+					'<select name="themes" role="parameter">'+
+						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
+						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
+						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<div>{{fr.njin.i18n.boite.parameters.label.count}}</div>'+
+					'<input class="tiny" type="number" name="count" role="parameter"></div>';
+			
+			
+var objectTemplate = 
+			'<div id="{{object}}">'+
+				'<!--<div class="tools">'+
+				'<button role="duplicate">{{fr.njin.i18n.boite.parameters.label.duplicate}}</button>'+
+				'<button role="remove">{{fr.njin.i18n.boite.parameters.label.remove}}</button>'+
+				'</div>-->'+
 			'</div>';
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/config.xml
index 95c9e84..2c37bcf 100644
--- a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/config.xml
+++ b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/config.xml
@@ -5,7 +5,7 @@
         version="1.2"
         width="900"
         height="450" 
-        ub:resizable="true">     
+        ub:resizable="false">     
    
 		<name>Notes</name>
 		<author href="http://www.getuniboard.com"
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/index.html
index 002011f..f3ab689 100644
--- a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/index.html
+++ b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/index.html
@@ -3,90 +3,30 @@
     <head>
         <title>D'n'd</title>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
         <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/easySlider1.5.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){  
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url: 'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }
+                    }
+                });      
             });
         </script>
     </head>
     <body>       
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-       
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="slider">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                        <ul>							
-                        </ul>
-                    </div>
-                    <span id="prevBtn"><a href="javascript:void(0);"></a></span>
-                    <span id="nextBtn"><a href="javascript:void(0);"></a></span>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
         
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
     </body>
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/script.js
deleted file mode 100644
index bcdbf63..0000000
--- a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/script.js
+++ /dev/null
@@ -1,686 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    text_content: "This is an example. Instead of this text you can put your own content.", 
-    new_txt: "New text block",
-    new_slide: "This is new slide.",
-    wgt_name: "Slider",
-    slate: "slate",
-    pad: "tablet",
-    none: "none",
-    help: "Help",
-    help_content: 
-"<p><h2>Slider</h2></p>" +
-"<p><h3>Booklet pages.</h3></p>" +
-"<p>Slider is a booklet with pages. This booklet can be enriched with text, images, sound and videos.</p>" +
-"<p>Enter the “Edit” mode to :</p>" +
-"<ul><li>choose the theme of interactivity : pad, slate or none (none by default),</li>" +
-"<li>edit the pages of the booklet.</li></ul>" +
-"<p>On each page, you can :</p>" +
-"<ul><li> insert text boxes with the “T+” on the left (to modify these text boxes, click inside the text and write),</li>" +
-"<li>insert pictures, sounds and videos dragging and dropping files from the library,</li>" +
-"<li>move texts, pictures, sounds and videos inside the page by clicking and dragging the multidirectional arrows located on the frame,</li>" +
-"<li>enlarge the size of an element with the double arrow at the bottom right of the frame,</li>" +
-"<li>delete an item with the “X”.</li></ul>" +
-"<p>To add a page, click on the “+” green arrow at the bottom.</p>" +
-"<p>To delete a page, click on the red cross.</p>" +
-"<p>“Display” button comes back to the activity.</p>",
-    theme: "Theme"
-};
-
-//some flags
-var mouse_state = false;
-
-//object for resize
-var resize_obj = {
-    object: null,
-    top: 0,
-    left: 0,
-    clicked: false,
-    k: 0
-}
-
-//main function
-function start(){
-
-    $("#wgt_display").text(sankoreLang.display);
-    $("#wgt_edit").text(sankoreLang.edit);
-    $("#wgt_name").text(sankoreLang.wgt_name);
-    $("#wgt_help").text(sankoreLang.help);
-    $("#help").html(sankoreLang.help_content);
-    $("#style_select option[value='1']").text(sankoreLang.slate);
-    $("#style_select option[value='2']").text(sankoreLang.pad);
-    $("#style_select option[value='3']").text(sankoreLang.none);
-    var tmpl = $("div.inline label").html();
-    $("div.inline label").html(sankoreLang.theme + tmpl)
-    
-    if(window.sankore){
-        if(sankore.preference("etudier","")){
-            var data = jQuery.parseJSON(sankore.preference("etudier",""));
-            importData(data);
-        }
-        else 
-            showExample();
-        if(sankore.preference("etudier_style","")){
-            changeStyle(sankore.preference("etudier_style",""));
-            $("#style_select").val(sankore.preference("etudier_style",""));
-        } else
-            changeStyle("3")
-    } 
-    else 
-        showExample();
-    
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            if(!$("#wgt_help").hasClass("open")){
-                exportData();
-                sankore.setPreference("etudier_style", $("#style_select").find("option:selected").val());
-                sankore.setPreference("etudier_cur_page", $("#slider").getPage());
-                sankore.setPreference("etudier_left_nav", $("#prevBtn a").css("display"));
-                sankore.setPreference("etudier_right_nav", $("#nextBtn a").css("display"));
-            }
-        }
-    }
-    
-    $("#style_select").change(function (event){
-        changeStyle($(this).find("option:selected").val());
-    })
-    
-    $("#wgt_help").click(function(){
-        var tmp = $(this);
-        if($(this).hasClass("open")){
-            $(this).removeClass("help_pad").removeClass("help_wood")
-            $("#help").hide();
-            tmp.removeClass("open");
-            $("#slider").show();
-        } else {
-            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
-            exportData();
-            sankore.setPreference("etudier_style", $("#style_select").find("option:selected").val());
-            sankore.setPreference("etudier_cur_page", $("#slider").getPage());
-            sankore.setPreference("etudier_left_nav", $("#prevBtn a").css("display"));
-            sankore.setPreference("etudier_right_nav", $("#nextBtn a").css("display"));            
-            $("#slider").hide();
-            $("#help").show();
-            tmp.addClass("open");
-        }
-    });
-    
-    $("#wgt_display, #wgt_edit").click(function(event){
-        if(this.id == "wgt_display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#wgt_edit").removeClass("selected");
-                $("#parameters").css("display","none");
-                var tmpwh = $(window).height();
-                var tmpww = $(window).width();
-                window.resizeTo(tmpww, tmpwh - 44)
-                $("#slider li>div").each(function(){
-                    var container = $(this);
-                    container.removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop");
-                    
-                    container.find(".text_block").each(function(){
-                        $(this).draggable();
-                        $(this).find(".move_block").remove();
-                        $(this).find(".close_img").remove();
-                        $(this).find(".size_up").remove();
-                        $(this).find(".size_down").remove();
-                        $(this).find(".resize_block").remove();
-                        $(this).find(".real_text").removeAttr("contenteditable");
-                        $(this).removeClass("block_border");
-                        $(this).css("position","absolute");
-                    });
-                    
-                    container.find(".img_block").each(function(){
-                        $(this).draggable();
-                        $(this).find(".close_img").remove();
-                        $(this).find(".move_block").remove();
-                        $(this).find(".resize_block").remove();
-                        $(this).removeClass("block_border");
-                        $(this).css("position","absolute");
-                    });
-                    
-                    container.find(".audio_block").each(function(){
-                        $(this).find(".close_img").remove();
-                        $(this).removeClass("block_border");
-                        $(this).css("position","absolute");
-                    });
-                    
-                    container.find(".add_left").remove();
-                    container.find(".add_right").remove();
-                    container.find(".close_slide").remove();
-                    container.find(".add_text").remove();
-                });
-                $(this).css("display", "none");
-                $("#wgt_edit").css("display", "block");
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#wgt_display").removeClass("selected");
-                $("#parameters").css("display","block");
-                tmpwh = $(window).height();
-                tmpww = $(window).width();
-                window.resizeTo(tmpww, tmpwh + 44)
-                $("#slider li>div").each(function(){
-                    var container = $(this);
-                    container.attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).css(\"background\",\"none\"); return false;")
-                    .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                    .attr("ondrop", "$(this).css(\"background\",\"none\"); return onDropTarget(this,event);");
-                    
-                    container.find(".text_block").each(function(){
-                        $(this).draggable("destroy");
-                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
-                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
-                        $("<div class='size_up' contenteditable='false'>").appendTo($(this));
-                        $("<div class='size_down' contenteditable='false'>").appendTo($(this));
-                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
-                        $(this).find(".real_text").attr("contenteditable", "true");
-                        $(this).addClass("block_border");
-                    });
-                    
-                    container.find(".img_block").each(function(){
-                        $(this).draggable("destroy");
-                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
-                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
-                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
-                        $(this).addClass("block_border");
-                    });
-                    
-                    container.find(".audio_block").each(function(){
-                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
-                        $(this).addClass("block_border");
-                    });
-                    
-                    $("<div class='add_left'>").appendTo(container);
-                    $("<div class='add_right'>").appendTo(container);
-                    $("<div class='close_slide'>").appendTo(container);
-                    $("<div class='add_text'>").appendTo(container);
-                    $(window).trigger("resize")
-                });        
-                $(this).css("display", "none");
-                $("#wgt_display").css("display", "block");
-            }
-        }
-        
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-        
-    });
-     
-    //deleting the img block
-    $(".close_img").live("click", function(){    
-        $(this).parent().remove();        
-    });
-    
-    //increase a size of text
-    $(".size_up").live("click", function(){
-        $(this).parent().height("");
-        var fz = parseInt($(this).parent().css("font-size").replace("px", ""));
-        $(this).parent().css("font-size", fz+1 + "px");
-    });
-    
-    //decrease a size of text
-    $(".size_down").live("click", function(){    
-        var fz = parseInt($(this).parent().css("font-size").replace("px", ""));
-        fz = ((fz - 1) < 8)?8:fz-1;
-        $(this).parent().css("font-size", fz + "px");       
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-    
-    //moving objects
-    $(".move_block").live("mouseover",function(){
-        $(this).parent().draggable();
-    });
-
-    $(".move_block").live("mouseleave",function(){
-        if(!mouse_state)
-            $(this).parent().draggable("destroy");
-    });
-    
-    $(".move_block").live("mousedown",function(){
-        mouse_state = true;
-    });
-    
-    $(".move_block").live("mouseup",function(){
-        mouse_state = false;
-    });
-    
-    //resize block
-    $(".resize_block").live("mousedown", function(){
-        resize_obj.object = $(this);
-        resize_obj.top = event.clientY;
-        resize_obj.left = event.clientX;
-        resize_obj.clicked = true;
-        if($(this).parent().hasClass("img_block"))
-            resize_obj.k = $(this).parent().find("img").width() / $(this).parent().find("img").height();
-    })
-    
-    $("li>div").live("mouseup", function(){
-        resize_obj.object = null;
-        resize_obj.top = 0;
-        resize_obj.left = 0;
-        resize_obj.clicked = false;
-    })
-    
-    $("li>div").live("mousemove", function(){
-        if(resize_obj.clicked){
-            if(resize_obj.object.parent().hasClass("text_block")){ 
-                var width = resize_obj.object.parent().width() - resize_obj.left + event.clientX;
-                resize_obj.left = event.clientX;
-                resize_obj.top = event.clientY;
-                resize_obj.object.parent().width(width).height("");
-            } else {
-                var img_width = resize_obj.object.parent().find("img").width() - resize_obj.left + event.clientX;
-                var img_height = img_width / resize_obj.k;
-                resize_obj.left = event.clientX;
-                resize_obj.top = event.clientY;
-                resize_obj.object.parent().find("img").width(img_width).height(img_height);
-            }
-        }
-    });
-    
-    //closing a slide
-    $(".close_slide").live("click", function(){
-        $(this).parent().parent().remove();
-        $("#slider").removeSlide();
-    });
-    
-    //adding new slides
-    $(".add_left").live("click", function(){
-        var cur_li = $(this).parent().parent();
-        var new_li = $("<li>");
-        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
-        var new_div = $("<div>").appendTo(new_li);
-        new_div.attr("ondragenter", "return false;")
-        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
-        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);");
-        var example = $("<div class='text_block' style='position: absolute;'>").addClass("block_border");
-        $("<div class='real_text' contenteditable='true'>" + sankoreLang.new_slide + "</div>").appendTo(example);
-        $("<div class='move_block' contenteditable='false'>").appendTo(example);
-        $("<div class='close_img' contenteditable='false'>").appendTo(example);
-        $("<div class='size_up' contenteditable='false'>").appendTo(example);
-        $("<div class='size_down' contenteditable='false'>").appendTo(example);
-        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
-        example.css("top","40%").css("left","40%");
-        new_div.append(example);
-        $("<div class='add_left'>").appendTo(new_div);
-        $("<div class='add_right'>").appendTo(new_div);
-        $("<div class='close_slide'>").appendTo(new_div);
-        $("<div class='add_text'>").appendTo(new_div);
-        new_li.insertBefore(cur_li);
-        $("#slider").addSlide("before");
-    });
-    
-    $(".add_right").live("click", function(){
-        var cur_li = $(this).parent().parent();
-        var new_li = $("<li>");
-        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
-        var new_div = $("<div>").appendTo(new_li);
-        new_div.attr("ondragenter", "return false;")
-        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
-        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);");
-        var example = $("<div class='text_block' style='position: absolute;'>").addClass("block_border");
-        $("<div class='real_text' contenteditable='true'>" + sankoreLang.new_slide + "</div>").appendTo(example);
-        $("<div class='move_block' contenteditable='false'>").appendTo(example);
-        $("<div class='close_img' contenteditable='false'>").appendTo(example);
-        $("<div class='size_up' contenteditable='false'>").appendTo(example);
-        $("<div class='size_down' contenteditable='false'>").appendTo(example);
-        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
-        example.css("top","40%").css("left","40%");
-        new_div.append(example);
-        $("<div class='add_left'>").appendTo(new_div);
-        $("<div class='add_right'>").appendTo(new_div);
-        $("<div class='close_slide'>").appendTo(new_div);
-        $("<div class='add_text'>").appendTo(new_div);
-        new_li.insertAfter(cur_li);
-        $("#slider").addSlide("after");
-    });
-    
-    $(".add_text").live("click", function(){
-        var container = $(this).parent();
-        var text_block = $("<div class='text_block'><div class='real_text' contenteditable='true'>" + sankoreLang.new_txt + "</div></div>").appendTo(container);
-        $("<div class='move_block' contenteditable='false'>").appendTo(text_block);
-        $("<div class='close_img' contenteditable='false'>").appendTo(text_block);
-        $("<div class='size_up' contenteditable='false'>").appendTo(text_block);
-        $("<div class='size_down' contenteditable='false'>").appendTo(text_block);
-        $("<div class='resize_block' contenteditable='false'>").appendTo(text_block);
-        text_block.addClass("block_border");
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    $("#slider li>div").each(function(){
-        var cont_obj = new Object();
-        cont_obj.w = $(this).parent().width();
-        cont_obj.h = $(this).parent().height();
-        cont_obj.text = [];
-        $(this).find(".text_block").each(function(){
-            var txt_block = new Object();
-            txt_block.top = $(this).position().top;
-            txt_block.left = $(this).position().left;
-            txt_block.w = $(this).width();
-            txt_block.fz = $(this).css("font-size");
-            txt_block.val = $(this).find(".real_text").html();
-            cont_obj.text.push(txt_block);
-        });
-        cont_obj.imgs = [];
-        $(this).find(".img_block").each(function(){
-            var img_obj = new Object();
-            img_obj.link = $(this).find("img").attr("src");
-            img_obj.h = $(this).find("img").height();
-            img_obj.w = $(this).find("img").width();
-            img_obj.top = $(this).position().top;
-            img_obj.left = $(this).position().left;
-            cont_obj.imgs.push(img_obj);
-        });
-        cont_obj.audio = [];
-        $(this).find(".audio_block").each(function(){
-            var audio_block = new Object();
-            audio_block.top = $(this).position().top;
-            audio_block.left = $(this).position().left;
-            audio_block.val = $(this).find("source").attr("src");
-            cont_obj.audio.push(audio_block);
-        });
-        array_to_export.push(cont_obj);
-    });
-    sankore.setPreference("etudier", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var width = 0;
-    var height = 0;
-    
-    for(var i in data){
-        
-        width = data[i].w;
-        height = data[i].h;
-        var li = $("<li style='float: left; width: " + data[i].w + "; height: " + data[i].h + ";'>");
-        var div = $("<div>").appendTo(li);
-        
-        for(var j in data[i].text){
-            var text_div = $("<div class='text_block'><div class='real_text'>" + data[i].text[j].val + "</div></div>");
-            text_div.draggable().css("position","absolute")
-            .width(data[i].text[j].w)
-            .css("top", data[i].text[j].top)
-            .css("left", data[i].text[j].left)
-            .css("font-size", data[i].text[j].fz)
-            .appendTo(div);
-        }
-        
-        for(j in data[i].imgs){
-            var img_div = $("<div class='img_block' style='text-align: center;'>");            
-            img_div.draggable().css("position","absolute")
-            .css("top", data[i].imgs[j].top)
-            .css("left", data[i].imgs[j].left)
-            .appendTo(div);
-            $("<img src='" + data[i].imgs[j].link + "' style='display: inline;' width='" + data[i].imgs[j].w + "' height='" + data[i].imgs[j].h + "'/>").appendTo(img_div);
-        }
-        
-        for(j in data[i].audio){
-            var audio_div = $("<div class='audio_block'>");
-            $("<div class='play'>").appendTo(audio_div);
-            $("<div class='replay'>").appendTo(audio_div);
-            var tmp_audio = $("<audio>").appendTo(audio_div);
-            $("<source src='" + data[i].audio[j].val + "' />").appendTo(tmp_audio);
-            audio_div.draggable().css("position","absolute")
-            .css("top", data[i].audio[j].top)
-            .css("left", data[i].audio[j].left)
-            .appendTo(div);
-        }
-        
-        $("#slider ul").append(li);        
-    }
-    
-    $(window).trigger("resize")
-    $("#slider").width(width).height(height).easySlider({
-        prevText: '',
-        nextText: '',
-        controlsShow: false
-    });
-    $("#slider").goToSlide(sankore.preference("etudier_cur_page",""));
-    $("#prevBtn a").css("display", sankore.preference("etudier_left_nav",""));
-    $("#nextBtn a").css("display", sankore.preference("etudier_right_nav",""));
-}
-
-//example
-function showExample(){
-    
-    var li1 = $("<li>");
-    var div1 = $("<div>").appendTo(li1);
-    $("<div class='text_block'><div class='real_text'>" + sankoreLang.text_content + "</div></div>").draggable().appendTo(div1)
-    li1.width($("#slider").width()).height($("#slider").height());
-    $("#slider ul").append(li1);
-    var li2 = $("<li>");
-    var div2 = $("<div>").appendTo(li2);
-    var img = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div2);
-    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img);
-    li2.width($("#slider").width()).height($("#slider").height());
-    $("#slider ul").append(li2);
-    var li3 = $("<li>");
-    var div3 = $("<div>").appendTo(li3);
-    li3.width($("#slider").width()).height($("#slider").height());
-    $("<div class='text_block'><div class='real_text'>" + sankoreLang.text_content + "</div></div>").draggable().appendTo(div3);
-    var audio_block = $("<div class='audio_block'>").draggable().appendTo(div3);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "objects/bateaux.mp3");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("#slider ul").append(li3);
-    var li4 = $("<li>");
-    var div4 = $("<div>").appendTo(li4);
-    $("<div class='text_block'><div class='real_text'>" + sankoreLang.text_content + "</div></div>").draggable().appendTo(div4);
-    var img2 = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div4);
-    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var audio_block2 = $("<div class='audio_block'>").draggable().appendTo(div4);
-    $("<div class='play'>").appendTo(audio_block2);
-    $("<div class='replay'>").appendTo(audio_block2);
-    var source2 = $("<source/>").attr("src", "objects/bateaux.mp3");
-    var audio2 = $("<audio>").appendTo(audio_block2);
-    audio2.append(source2);
-    li4.width($("#slider").width()).height($("#slider").height());
-    $("#slider ul").append(li4);
-    $(".text_block, .audio_block, .img_block").each(function(){
-        $(this).css("position","absolute");
-    });
-    $("#slider").easySlider({
-        prevText: '',
-        nextText: '',
-        controlsShow: false
-    });
-}
-
-//string into xml-format
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//changing the style
-function changeStyle(val){
-    switch(val){
-        case "1":
-            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
-            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
-            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
-            $("#wgt_name").removeClass("pad_color");
-            $("#wgt_display").addClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").addClass("radius_ft");
-            break;
-        case "2":
-            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").removeClass("radius_ft");
-            break;
-        case "3":
-            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
-            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
-            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
-            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
-            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
-            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
-            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
-            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").addClass("without_radius").removeClass("radius_ft");
-            break;
-    }
-}
-
-//drop handler
-function onDropTarget(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){                              
-            var audio_block = $("<div class='audio_block'>").draggable().appendTo($(obj));
-            audio_block.css("position","absolute").css("top",event.clientY - 54).css("left",event.clientX - 54);
-            $("<div class='close_img' contenteditable='false'>").appendTo(audio_block);
-            audio_block.addClass("block_border");
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src", tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-        } else {
-            var img_block = $("<div class='img_block' style='text-align: center;'></div>").appendTo($(obj));
-            img_block.css("top",event.clientY - 54).css("left",event.clientX - 54);
-            $("<div class='move_block' contenteditable='false'>").appendTo(img_block);
-            $("<div class='close_img' contenteditable='false'>").appendTo(img_block);
-            $("<div class='resize_block' contenteditable='false'>").appendTo(img_block);
-            img_block.addClass("block_border");
-            var tmp_img = $("<img src=\"" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
-            setTimeout(function(){
-                if(tmp_img.height() >= tmp_img.width())
-                    tmp_img.attr("height", "120");
-                else{
-                    tmp_img.attr("width","120");
-                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                }
-            }, 6)
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-if (window.widget) {
-    window.widget.onremove = function(){
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-    }
-}
-
-$(window).resize(function(){
-    var slider = $("#slider");
-    slider.width($(this).width() - 108).height($(this).height() - 108);
-    $("#slider li").each(function(){
-        $(this).width(slider.width()).height(slider.height());
-    });
-    slider.setSize(slider.width(), slider.height());
-})
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/en/index.html b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/en/index.html
new file mode 100644
index 0000000..d2be018
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/en/index.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="../../js/easySlider1.5.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                start();                                
+            });
+        </script>
+    </head>
+    <body>       
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="slider">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                        <ul>							
+                        </ul>
+                    </div>
+                    <span id="prevBtn"><a href="javascript:void(0);"></a></span>
+                    <span id="nextBtn"><a href="javascript:void(0);"></a></span>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/en/js/script.js b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/en/js/script.js
new file mode 100644
index 0000000..b879fcc
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/en/js/script.js
@@ -0,0 +1,686 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    text_content: "This is an example. Instead of this text you can put your own content.", 
+    new_txt: "New text block",
+    new_slide: "This is new slide.",
+    wgt_name: "Slider",
+    slate: "slate",
+    pad: "tablet",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2>Slider</h2></p>" +
+"<p><h3>Booklet pages.</h3></p>" +
+"<p>Slider is a booklet with pages. This booklet can be enriched with text, images, sound and videos.</p>" +
+"<p>Enter the “Edit” mode to :</p>" +
+"<ul><li>choose the theme of interactivity : pad, slate or none (none by default),</li>" +
+"<li>edit the pages of the booklet.</li></ul>" +
+"<p>On each page, you can :</p>" +
+"<ul><li> insert text boxes with the “T+” on the left (to modify these text boxes, click inside the text and write),</li>" +
+"<li>insert pictures, sounds and videos dragging and dropping files from the library,</li>" +
+"<li>move texts, pictures, sounds and videos inside the page by clicking and dragging the multidirectional arrows located on the frame,</li>" +
+"<li>enlarge the size of an element with the double arrow at the bottom right of the frame,</li>" +
+"<li>delete an item with the “X”.</li></ul>" +
+"<p>To add a page, click on the “+” green arrow at the bottom.</p>" +
+"<p>To delete a page, click on the red cross.</p>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+//some flags
+var mouse_state = false;
+
+//object for resize
+var resize_obj = {
+    object: null,
+    top: 0,
+    left: 0,
+    clicked: false,
+    k: 0
+}
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("etudier","")){
+            var data = jQuery.parseJSON(sankore.preference("etudier",""));
+            importData(data);
+        }
+        else 
+            showExample();
+        if(sankore.preference("etudier_style","")){
+            changeStyle(sankore.preference("etudier_style",""));
+            $("#style_select").val(sankore.preference("etudier_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            if(!$("#wgt_help").hasClass("open")){
+                exportData();
+                sankore.setPreference("etudier_style", $("#style_select").find("option:selected").val());
+                sankore.setPreference("etudier_cur_page", $("#slider").getPage());
+                sankore.setPreference("etudier_left_nav", $("#prevBtn a").css("display"));
+                sankore.setPreference("etudier_right_nav", $("#nextBtn a").css("display"));
+            }
+        }
+    }
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").hide();
+            tmp.removeClass("open");
+            $("#slider").show();
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            exportData();
+            sankore.setPreference("etudier_style", $("#style_select").find("option:selected").val());
+            sankore.setPreference("etudier_cur_page", $("#slider").getPage());
+            sankore.setPreference("etudier_left_nav", $("#prevBtn a").css("display"));
+            sankore.setPreference("etudier_right_nav", $("#nextBtn a").css("display"));            
+            $("#slider").hide();
+            $("#help").show();
+            tmp.addClass("open");
+        }
+    });
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                var tmpwh = $(window).height();
+                var tmpww = $(window).width();
+                window.resizeTo(tmpww, tmpwh - 44)
+                $("#slider li>div").each(function(){
+                    var container = $(this);
+                    container.removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop");
+                    
+                    container.find(".text_block").each(function(){
+                        $(this).draggable();
+                        $(this).find(".move_block").remove();
+                        $(this).find(".close_img").remove();
+                        $(this).find(".size_up").remove();
+                        $(this).find(".size_down").remove();
+                        $(this).find(".resize_block").remove();
+                        $(this).find(".real_text").removeAttr("contenteditable");
+                        $(this).removeClass("block_border");
+                        $(this).css("position","absolute");
+                    });
+                    
+                    container.find(".img_block").each(function(){
+                        $(this).draggable();
+                        $(this).find(".close_img").remove();
+                        $(this).find(".move_block").remove();
+                        $(this).find(".resize_block").remove();
+                        $(this).removeClass("block_border");
+                        $(this).css("position","absolute");
+                    });
+                    
+                    container.find(".audio_block").each(function(){
+                        $(this).find(".close_img").remove();
+                        $(this).removeClass("block_border");
+                        $(this).css("position","absolute");
+                    });
+                    
+                    container.find(".add_left").remove();
+                    container.find(".add_right").remove();
+                    container.find(".close_slide").remove();
+                    container.find(".add_text").remove();
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                tmpwh = $(window).height();
+                tmpww = $(window).width();
+                window.resizeTo(tmpww, tmpwh + 44)
+                $("#slider li>div").each(function(){
+                    var container = $(this);
+                    container.attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).css(\"background\",\"none\"); return false;")
+                    .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                    .attr("ondrop", "$(this).css(\"background\",\"none\"); return onDropTarget(this,event);");
+                    
+                    container.find(".text_block").each(function(){
+                        $(this).draggable("destroy");
+                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
+                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
+                        $("<div class='size_up' contenteditable='false'>").appendTo($(this));
+                        $("<div class='size_down' contenteditable='false'>").appendTo($(this));
+                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
+                        $(this).find(".real_text").attr("contenteditable", "true");
+                        $(this).addClass("block_border");
+                    });
+                    
+                    container.find(".img_block").each(function(){
+                        $(this).draggable("destroy");
+                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
+                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
+                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
+                        $(this).addClass("block_border");
+                    });
+                    
+                    container.find(".audio_block").each(function(){
+                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
+                        $(this).addClass("block_border");
+                    });
+                    
+                    $("<div class='add_left'>").appendTo(container);
+                    $("<div class='add_right'>").appendTo(container);
+                    $("<div class='close_slide'>").appendTo(container);
+                    $("<div class='add_text'>").appendTo(container);
+                    $(window).trigger("resize")
+                });        
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+        
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+        
+    });
+     
+    //deleting the img block
+    $(".close_img").live("click", function(){    
+        $(this).parent().remove();        
+    });
+    
+    //increase a size of text
+    $(".size_up").live("click", function(){
+        $(this).parent().height("");
+        var fz = parseInt($(this).parent().css("font-size").replace("px", ""));
+        $(this).parent().css("font-size", fz+1 + "px");
+    });
+    
+    //decrease a size of text
+    $(".size_down").live("click", function(){    
+        var fz = parseInt($(this).parent().css("font-size").replace("px", ""));
+        fz = ((fz - 1) < 8)?8:fz-1;
+        $(this).parent().css("font-size", fz + "px");       
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+    
+    //moving objects
+    $(".move_block").live("mouseover",function(){
+        $(this).parent().draggable();
+    });
+
+    $(".move_block").live("mouseleave",function(){
+        if(!mouse_state)
+            $(this).parent().draggable("destroy");
+    });
+    
+    $(".move_block").live("mousedown",function(){
+        mouse_state = true;
+    });
+    
+    $(".move_block").live("mouseup",function(){
+        mouse_state = false;
+    });
+    
+    //resize block
+    $(".resize_block").live("mousedown", function(){
+        resize_obj.object = $(this);
+        resize_obj.top = event.clientY;
+        resize_obj.left = event.clientX;
+        resize_obj.clicked = true;
+        if($(this).parent().hasClass("img_block"))
+            resize_obj.k = $(this).parent().find("img").width() / $(this).parent().find("img").height();
+    })
+    
+    $("li>div").live("mouseup", function(){
+        resize_obj.object = null;
+        resize_obj.top = 0;
+        resize_obj.left = 0;
+        resize_obj.clicked = false;
+    })
+    
+    $("li>div").live("mousemove", function(){
+        if(resize_obj.clicked){
+            if(resize_obj.object.parent().hasClass("text_block")){ 
+                var width = resize_obj.object.parent().width() - resize_obj.left + event.clientX;
+                resize_obj.left = event.clientX;
+                resize_obj.top = event.clientY;
+                resize_obj.object.parent().width(width).height("");
+            } else {
+                var img_width = resize_obj.object.parent().find("img").width() - resize_obj.left + event.clientX;
+                var img_height = img_width / resize_obj.k;
+                resize_obj.left = event.clientX;
+                resize_obj.top = event.clientY;
+                resize_obj.object.parent().find("img").width(img_width).height(img_height);
+            }
+        }
+    });
+    
+    //closing a slide
+    $(".close_slide").live("click", function(){
+        $(this).parent().parent().remove();
+        $("#slider").removeSlide();
+    });
+    
+    //adding new slides
+    $(".add_left").live("click", function(){
+        var cur_li = $(this).parent().parent();
+        var new_li = $("<li>");
+        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
+        var new_div = $("<div>").appendTo(new_li);
+        new_div.attr("ondragenter", "return false;")
+        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);");
+        var example = $("<div class='text_block' style='position: absolute;'>").addClass("block_border");
+        $("<div class='real_text' contenteditable='true'>" + sankoreLang.new_slide + "</div>").appendTo(example);
+        $("<div class='move_block' contenteditable='false'>").appendTo(example);
+        $("<div class='close_img' contenteditable='false'>").appendTo(example);
+        $("<div class='size_up' contenteditable='false'>").appendTo(example);
+        $("<div class='size_down' contenteditable='false'>").appendTo(example);
+        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
+        example.css("top","40%").css("left","40%");
+        new_div.append(example);
+        $("<div class='add_left'>").appendTo(new_div);
+        $("<div class='add_right'>").appendTo(new_div);
+        $("<div class='close_slide'>").appendTo(new_div);
+        $("<div class='add_text'>").appendTo(new_div);
+        new_li.insertBefore(cur_li);
+        $("#slider").addSlide("before");
+    });
+    
+    $(".add_right").live("click", function(){
+        var cur_li = $(this).parent().parent();
+        var new_li = $("<li>");
+        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
+        var new_div = $("<div>").appendTo(new_li);
+        new_div.attr("ondragenter", "return false;")
+        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);");
+        var example = $("<div class='text_block' style='position: absolute;'>").addClass("block_border");
+        $("<div class='real_text' contenteditable='true'>" + sankoreLang.new_slide + "</div>").appendTo(example);
+        $("<div class='move_block' contenteditable='false'>").appendTo(example);
+        $("<div class='close_img' contenteditable='false'>").appendTo(example);
+        $("<div class='size_up' contenteditable='false'>").appendTo(example);
+        $("<div class='size_down' contenteditable='false'>").appendTo(example);
+        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
+        example.css("top","40%").css("left","40%");
+        new_div.append(example);
+        $("<div class='add_left'>").appendTo(new_div);
+        $("<div class='add_right'>").appendTo(new_div);
+        $("<div class='close_slide'>").appendTo(new_div);
+        $("<div class='add_text'>").appendTo(new_div);
+        new_li.insertAfter(cur_li);
+        $("#slider").addSlide("after");
+    });
+    
+    $(".add_text").live("click", function(){
+        var container = $(this).parent();
+        var text_block = $("<div class='text_block'><div class='real_text' contenteditable='true'>" + sankoreLang.new_txt + "</div></div>").appendTo(container);
+        $("<div class='move_block' contenteditable='false'>").appendTo(text_block);
+        $("<div class='close_img' contenteditable='false'>").appendTo(text_block);
+        $("<div class='size_up' contenteditable='false'>").appendTo(text_block);
+        $("<div class='size_down' contenteditable='false'>").appendTo(text_block);
+        $("<div class='resize_block' contenteditable='false'>").appendTo(text_block);
+        text_block.addClass("block_border");
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    $("#slider li>div").each(function(){
+        var cont_obj = new Object();
+        cont_obj.w = $(this).parent().width();
+        cont_obj.h = $(this).parent().height();
+        cont_obj.text = [];
+        $(this).find(".text_block").each(function(){
+            var txt_block = new Object();
+            txt_block.top = $(this).position().top;
+            txt_block.left = $(this).position().left;
+            txt_block.w = $(this).width();
+            txt_block.fz = $(this).css("font-size");
+            txt_block.val = $(this).find(".real_text").html();
+            cont_obj.text.push(txt_block);
+        });
+        cont_obj.imgs = [];
+        $(this).find(".img_block").each(function(){
+            var img_obj = new Object();
+            img_obj.link = $(this).find("img").attr("src").replace("../../","");
+            img_obj.h = $(this).find("img").height();
+            img_obj.w = $(this).find("img").width();
+            img_obj.top = $(this).position().top;
+            img_obj.left = $(this).position().left;
+            cont_obj.imgs.push(img_obj);
+        });
+        cont_obj.audio = [];
+        $(this).find(".audio_block").each(function(){
+            var audio_block = new Object();
+            audio_block.top = $(this).position().top;
+            audio_block.left = $(this).position().left;
+            audio_block.val = $(this).find("source").attr("src").replace("../../","");
+            cont_obj.audio.push(audio_block);
+        });
+        array_to_export.push(cont_obj);
+    });
+    sankore.setPreference("etudier", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var width = 0;
+    var height = 0;
+    
+    for(var i in data){
+        
+        width = data[i].w;
+        height = data[i].h;
+        var li = $("<li style='float: left; width: " + data[i].w + "; height: " + data[i].h + ";'>");
+        var div = $("<div>").appendTo(li);
+        
+        for(var j in data[i].text){
+            var text_div = $("<div class='text_block'><div class='real_text'>" + data[i].text[j].val + "</div></div>");
+            text_div.draggable().css("position","absolute")
+            .width(data[i].text[j].w)
+            .css("top", data[i].text[j].top)
+            .css("left", data[i].text[j].left)
+            .css("font-size", data[i].text[j].fz)
+            .appendTo(div);
+        }
+        
+        for(j in data[i].imgs){
+            var img_div = $("<div class='img_block' style='text-align: center;'>");            
+            img_div.draggable().css("position","absolute")
+            .css("top", data[i].imgs[j].top)
+            .css("left", data[i].imgs[j].left)
+            .appendTo(div);
+            $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;' width='" + data[i].imgs[j].w + "' height='" + data[i].imgs[j].h + "'/>").appendTo(img_div);
+        }
+        
+        for(j in data[i].audio){
+            var audio_div = $("<div class='audio_block'>");
+            $("<div class='play'>").appendTo(audio_div);
+            $("<div class='replay'>").appendTo(audio_div);
+            var tmp_audio = $("<audio>").appendTo(audio_div);
+            $("<source src='../../" + data[i].audio[j].val + "' />").appendTo(tmp_audio);
+            audio_div.draggable().css("position","absolute")
+            .css("top", data[i].audio[j].top)
+            .css("left", data[i].audio[j].left)
+            .appendTo(div);
+        }
+        
+        $("#slider ul").append(li);        
+    }
+    
+    $(window).trigger("resize")
+    $("#slider").width(width).height(height).easySlider({
+        prevText: '',
+        nextText: '',
+        controlsShow: false
+    });
+    $("#slider").goToSlide(sankore.preference("etudier_cur_page",""));
+    $("#prevBtn a").css("display", sankore.preference("etudier_left_nav",""));
+    $("#nextBtn a").css("display", sankore.preference("etudier_right_nav",""));
+}
+
+//example
+function showExample(){
+    
+    var li1 = $("<li>");
+    var div1 = $("<div>").appendTo(li1);
+    $("<div class='text_block'><div class='real_text'>" + sankoreLang.text_content + "</div></div>").draggable().appendTo(div1)
+    li1.width($("#slider").width()).height($("#slider").height());
+    $("#slider ul").append(li1);
+    var li2 = $("<li>");
+    var div2 = $("<div>").appendTo(li2);
+    var img = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img);
+    li2.width($("#slider").width()).height($("#slider").height());
+    $("#slider ul").append(li2);
+    var li3 = $("<li>");
+    var div3 = $("<div>").appendTo(li3);
+    li3.width($("#slider").width()).height($("#slider").height());
+    $("<div class='text_block'><div class='real_text'>" + sankoreLang.text_content + "</div></div>").draggable().appendTo(div3);
+    var audio_block = $("<div class='audio_block'>").draggable().appendTo(div3);
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "../../objects/bateaux.mp3");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("#slider ul").append(li3);
+    var li4 = $("<li>");
+    var div4 = $("<div>").appendTo(li4);
+    $("<div class='text_block'><div class='real_text'>" + sankoreLang.text_content + "</div></div>").draggable().appendTo(div4);
+    var img2 = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div4);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var audio_block2 = $("<div class='audio_block'>").draggable().appendTo(div4);
+    $("<div class='play'>").appendTo(audio_block2);
+    $("<div class='replay'>").appendTo(audio_block2);
+    var source2 = $("<source/>").attr("src", "../../objects/bateaux.mp3");
+    var audio2 = $("<audio>").appendTo(audio_block2);
+    audio2.append(source2);
+    li4.width($("#slider").width()).height($("#slider").height());
+    $("#slider ul").append(li4);
+    $(".text_block, .audio_block, .img_block").each(function(){
+        $(this).css("position","absolute");
+    });
+    $("#slider").easySlider({
+        prevText: '',
+        nextText: '',
+        controlsShow: false
+    });
+}
+
+//string into xml-format
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+//drop handler
+function onDropTarget(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){                              
+            var audio_block = $("<div class='audio_block'>").draggable().appendTo($(obj));
+            audio_block.css("position","absolute").css("top",event.clientY - 54).css("left",event.clientX - 54);
+            $("<div class='close_img' contenteditable='false'>").appendTo(audio_block);
+            audio_block.addClass("block_border");
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            var source = $("<source/>").attr("src", "../../" + tmp);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+        } else {
+            var img_block = $("<div class='img_block' style='text-align: center;'></div>").appendTo($(obj));
+            img_block.css("top",event.clientY - 54).css("left",event.clientX - 54);
+            $("<div class='move_block' contenteditable='false'>").appendTo(img_block);
+            $("<div class='close_img' contenteditable='false'>").appendTo(img_block);
+            $("<div class='resize_block' contenteditable='false'>").appendTo(img_block);
+            img_block.addClass("block_border");
+            var tmp_img = $("<img src=\"../../" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
+            setTimeout(function(){
+                if(tmp_img.height() >= tmp_img.width())
+                    tmp_img.attr("height", "120");
+                else{
+                    tmp_img.attr("width","120");
+                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                }
+            }, 6)
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+if (window.widget) {
+    window.widget.onremove = function(){
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+    }
+}
+
+$(window).resize(function(){
+    var slider = $("#slider");
+    slider.width($(this).width() - 108).height($(this).height() - 108);
+    $("#slider li").each(function(){
+        $(this).width(slider.width()).height(slider.height());
+    });
+    slider.setSize(slider.width(), slider.height());
+})
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Memory.wgt/config.xml
index 1b95329..eec9d38 100644
--- a/Sankore-3.1/resources/library/interactivities/Memory.wgt/config.xml
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/config.xml
@@ -3,9 +3,9 @@
 		xmlns:ub="http://uniboard.mnemis.com/widgets"
         id="http://www.njin.fr/sankore/apps/memory" 
         version="1.0"
-        width="820"
-        height="670" 
-        ub:resizable="true">     
+        width="940"
+        height="680" 
+        ub:resizable="false">     
    
 		<name>Memory</name>
 		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/config.xml
index a7ce92c..a919f6d 100644
--- a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/config.xml	
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/config.xml	
@@ -5,7 +5,7 @@
         version="1.2"
         width="950"
         height="600" 
-        ub:resizable="true">     
+        ub:resizable="false">     
    
 		<name>Notes</name>
 		<author href="http://www.getuniboard.com"
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/index.html
index e79952a..cd8ab18 100644
--- a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/index.html	
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/index.html	
@@ -3,86 +3,30 @@
     <head>
         <title>D'n'd</title>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
         <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url: 'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }
+                    }
+                });      
             });
         </script>
     </head>
     <body>        
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>                    
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-       
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="data">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
         
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
     </body>
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/js/script.js
deleted file mode 100644
index 9200e21..0000000
--- a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/js/script.js	
+++ /dev/null
@@ -1,571 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    short_desc: "Place the pictures in ascending order.", 
-    add: "Add new block",
-    enter: "Enter your instruction here ...",
-    wgt_name: "Order pictures",
-    reload: "Reload",
-    slate: "slate",
-    pad: "pad",
-    none: "none",
-    help: "Help",
-    help_content: 
-"<p> <h2> Order pictures </h2> </p>" +
-"<p> <h3> Sort pictures in the order requested</h3> </p>" +
-
-"<p> The number on the frame indicates the order in which the images should be classified. Drag and drop to rank pictures. Once all pictures are correctly classified, the area turns in green. </p> "+
-"<p> Reload “button resets the exercises. </p>" +
-
-"<p> Enter the “Edit” mode to : </p>" +
-"<ul> <li> choose the theme of interactivity : pad, slate or none (by default : none),</li>" +
-"<li> modify an exercise or create a new one. </li> </ul>" +
-
-"<p>To create a new exercise : </p>" +
-"<ul> <li> click on “New block”,</li>" +
-"<li> insert an instruction clicking on the text field “Enter your instruction here ... ”,</li>" +
-"<li> add picture frames clicking on the “+”,</li>" +
-"<li> drag an drop pictures from your library,</li>" +
-"<li> change the order of images by dragging them.</li> </ul>" +
-
-"<p> To delete a frame, click the cross (X).</p>" +
-"<p> To change a picture, click the “reload” button on the frame.</p>" +
-
-"<p> To delete a whole exercise, click the cross to the left. </p>" +
-
-"<p> “Display” button comes back to the activity.</p>",
-    theme: "Theme"
-};
-
-//main function
-function start(){
-    
-    $("#wgt_display").text(sankoreLang.display);
-    $("#wgt_edit").text(sankoreLang.edit);
-    $("#wgt_name").text(sankoreLang.wgt_name);
-    $("#wgt_reload").text(sankoreLang.reload);
-    $("#wgt_help").text(sankoreLang.help);
-    $("#help").html(sankoreLang.help_content);
-    $("#style_select option[value='1']").text(sankoreLang.slate);
-    $("#style_select option[value='2']").text(sankoreLang.pad);
-    $("#style_select option[value='3']").text(sankoreLang.none);
-    var tmpl = $("div.inline label").html();
-    $("div.inline label").html(sankoreLang.theme + tmpl)
-    
-    if(window.sankore){
-        if(sankore.preference("odr_des_imgs","")){
-            var data = jQuery.parseJSON(sankore.preference("odr_des_imgs",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#wgt_help").click(function(){
-        var tmp = $(this);
-        if($(this).hasClass("open")){
-            $(this).removeClass("help_pad").removeClass("help_wood")
-            $("#help").slideUp("100", function(){
-                tmp.removeClass("open");
-                $("#data").show();
-            });
-        } else {
-            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
-            $("#data").hide();
-            $("#help").slideDown("100", function(){
-                tmp.addClass("open");
-            });
-        }
-    });
-    
-    $("#wgt_reload").click(function(){
-        if($("#wgt_display").hasClass("selected")){
-            $("#wgt_edit").trigger("click");
-            $("#wgt_display").trigger("click");
-        } else {
-            $("#wgt_display").trigger("click");
-        }
-    });
-    
-    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
-        exportData();
-    });
-    
-    $("#style_select").change(function (event){
-        changeStyle($(this).find("option:selected").val());
-    })
-    
-    $("#wgt_display, #wgt_edit").click(function(event){
-        if(this.id == "wgt_display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#wgt_edit").removeClass("selected");
-                $("#parameters").css("display","none");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_right = "";
-                    var tmp_array = [];
-                    
-                    container.find(".text_cont").removeAttr("contenteditable");
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".img_block").each(function(){
-                        if($(this).find("img").attr("src") != "img/drop_img.png"){
-                            $(this).find(".close_img").remove();
-                            $(this).find(".clear_img").remove();
-                            $(this).find(".numb_img").remove();
-                            $(this).removeAttr("ondragenter")
-                            .removeAttr("ondragleave")
-                            .removeAttr("ondragover")
-                            .removeAttr("ondrop");
-                            $(this).find("input").val(++tmp_i)
-                            tmp_right += tmp_i + "*";
-                        } else 
-                            $(this).remove();
-                    });
-                    container.find(".imgs_cont>input").val(tmp_right);
-                    
-                    container.find(".img_block").each(function(){
-                        $(this).css("float","");
-                        tmp_array.push($(this));
-                    });                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++)
-                        tmp_array[i].appendTo(container.find(".imgs_cont"));
-                    container.find(".imgs_cont").sortable( {
-                        update: checkResult
-                    } );
-                });
-                $(this).css("display", "none");
-                $("#wgt_edit").css("display", "block");
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#wgt_display").removeClass("selected");
-                $("#parameters").css("display","block");
-                $(".cont").each(function(){
-                    var container = $(this);
-    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".text_cont").attr("contenteditable","true");
-                    //container.find(".imgs_cont").sortable("destroy");
-                    container.find(".imgs_cont").css("background-color", "");
-                    
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block").each(function(){
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
-                        //.css("float","left");
-                        $("<div class='close_img'>").appendTo($(this));
-                        $("<div class='clear_img'>").appendTo($(this));
-                        $("<div class='numb_img'>" + $(this).find("input").val() + "</div>").appendTo($(this));
-                    });
-                    rightOrder(container.find(".imgs_cont"));
-                    container.find(".imgs_cont").append(add_img)
-                });                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
-                $(this).css("display", "none");
-                $("#wgt_display").css("display", "block");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();
-        if(tmp_obj.find(".img_block").size() > 0){
-            refreshImgNumbers(tmp_obj);
-        }
-        
-    });
-    
-    //cleaning an image
-    $(".clear_img").live("click",function(){
-        //$(this).parent().find(".fill_img").remove();
-        $(this).parent().find("img").attr("src","img/drop_img.png");
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var container = $(this);
-            var tmp_right = "";
-            var tmp_i = 0;
-            container.find(".img_block").each(function(){
-                if($(this).html().match(/<img/)){
-                    $(this).find("input").val(++tmp_i)
-                    tmp_right += tmp_i + "*";
-                }
-            });
-            container.find(".imgs_cont>input").val(tmp_right);
-        });
-    }
-    $(".cont").each(function(){
-        var cont_obj = new Object();
-        cont_obj.style = $("#style_select").find("option:selected").val();
-        cont_obj.text = $(this).find(".text_cont").text();
-        cont_obj.right = $(this).find(".imgs_cont>input").val();
-        cont_obj.imgs = [];
-        $(this).find(".img_block").each(function(){
-            var img_obj = new Object();
-            img_obj.value = $(this).find("input").val();
-            img_obj.link = $(this).find("img").attr("src");
-            img_obj.ht = $(this).find("img").height();
-            img_obj.wd = $(this).find("img").width();
-            cont_obj.imgs.push(img_obj);
-        });
-        array_to_export.push(cont_obj);
-    });
-    
-    if($(".cont").size() == 0){
-        var cont_obj = new Object();
-        cont_obj.style = $("#style_select").find("option:selected").val();
-        cont_obj.tmp = "clear";
-        array_to_export.push(cont_obj);
-    }
-    if(window.sankore)
-        sankore.setPreference("odr_des_imgs", JSON.stringify(array_to_export));
-    if($("#wgt_display").hasClass("selected")){
-        if(window.sankore)
-            sankore.setPreference("odr_des_imgs_state", "display");
-    }
-    else{
-        if(window.sankore)
-            sankore.setPreference("odr_des_imgs_state", "edit");
-    }
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].tmp){
-            changeStyle(data[i].style);
-            $("#style_select").val(data[i].style);
-        }
-        else {
-            if(i == 0){
-                changeStyle(data[i].style);
-                $("#style_select").val(data[i].style);
-            }
-            var tmp_array = [];
-            var container = $("<div class='cont'>");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);
-            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-    
-            $("<input type='hidden' value='" + data[i].right + "'/>").appendTo(imgs_container);
-        
-            for(var j in data[i].imgs){
-                var img_block = $("<div class='img_block' style='text-align: center;'>");
-                var img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                tmp_array.push(img_block);
-            }
-            if(sankore.preference("odr_des_imgs_state","")){
-                if(sankore.preference("odr_des_imgs_state","") == "edit")
-                    tmp_array = shuffle(tmp_array);
-            } else 
-                tmp_array = shuffle(tmp_array);
-            
-            for(j = 0; j<tmp_array.length;j++)
-                tmp_array[j].appendTo(imgs_container);
-            imgs_container.sortable().bind('sortupdate', function(event, ui) {
-                checkResult(event);
-            }); 
-            container.appendTo("#data"); 
-            imgs_container.trigger("sortupdate")                          
-        }        
-    }
-}
-
-//example
-function showExample(){
-    
-    changeStyle("3");
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    
-    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img1);
-    $("<img src=\"objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img2);
-    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='3'/>").appendTo(img3);
-    $("<img src=\"objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='4'/>").appendTo(img4);
-    $("<img src=\"objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='5'/>").appendTo(img5);
-    $("<img src=\"objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++)
-        tmp_array[i].appendTo(imgs_container);
-    imgs_container.sortable().bind('sortupdate', function(event, ui) {
-        checkResult(event);
-    });
-
-    container.appendTo("#data");
-}
-
-//check result
-function checkResult(event)
-{
-    if($("#wgt_display").hasClass("selected")){
-        var str = "";
-        var right_str = $(event.target).find("input").val();
-        $(event.target).find(".img_block").each(function(){
-            str += $(this).find("input").val() + "*";
-        });
-        if(str == right_str)
-            $(event.target).css("background-color","#9f9");
-        else
-            $(event.target).css("background-color","");
-    } else {
-        refreshImgNumbers($(event.target));
-    }
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addImgBlock(dest){
-    var img_block = $("<div class='img_block' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center;'></div>").insertBefore(dest);
-    var tmp_counter = dest.parent().find(".img_block").size();
-    $("<div class='close_img'>").appendTo(img_block);
-    $("<div class='clear_img'>").appendTo(img_block);
-    $("<div class='numb_img'>" + tmp_counter + "</div>").appendTo(img_block);
-    $("<input type='hidden' value='" + tmp_counter + "'/>").appendTo(img_block);
-    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-//regulation the images in right order
-function rightOrder(source){
-    var tmp_arr = [];
-    var tmp_var;
-    source.find(".img_block").each(function(){
-        tmp_arr.push($(this));
-        $(this).remove();
-    });
-    for(var i = 0; i < tmp_arr.length; i++)
-        for(var j = 0; j < tmp_arr.length - 1; j++){
-            if(tmp_arr[j].find("input").val() > tmp_arr[j+1].find("input").val()){
-                tmp_var = tmp_arr[j];
-                tmp_arr[j] = tmp_arr[j+1];
-                tmp_arr[j+1] = tmp_var;
-            }
-        }
-    for(i in tmp_arr)
-        source.append(tmp_arr[i]);
-}
-
-//refresh the numbers of the images
-function refreshImgNumbers(source){
-    var tmp = 1;
-    source.find(".img_block").each(function(){
-        $(this).find("input").val(tmp);
-        $(this).find(".numb_img").text(tmp);
-        tmp++;
-    });
-}
-
-//changing the style
-function changeStyle(val){
-    switch(val){
-        case "1":
-            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
-            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
-            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
-            $("#wgt_name").removeClass("pad_color");
-            $("#wgt_display").addClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").addClass("radius_ft");
-            break;
-        case "2":
-            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").removeClass("radius_ft");
-            break;
-        case "3":
-            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
-            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
-            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
-            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
-            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
-            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
-            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
-            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").addClass("without_radius").removeClass("radius_ft");
-            break;
-    }
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    $(obj).find("img").remove();
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_img = $("<img/>").attr("src", tmp);
-        $(obj).append(tmp_img);
-        setTimeout(function(){
-            if(tmp_img.height() >= tmp_img.width())
-                tmp_img.attr("height", "120");
-            else{
-                tmp_img.attr("width","120");
-                var h = tmp_img.height();
-                tmp_img.attr("height",h);
-                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-            }
-        }, 6)
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/en/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/en/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/en/index.html b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/en/index.html
new file mode 100644
index 0000000..e6cea60
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/en/index.html	
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){ 
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/en/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/en/js/script.js
new file mode 100644
index 0000000..4658d5f
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/en/js/script.js	
@@ -0,0 +1,565 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    short_desc: "Place the pictures in ascending order.", 
+    add: "Add new block",
+    enter: "Enter your instruction here ...",
+    wgt_name: "Order pictures",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p> <h2> Order pictures </h2> </p>" +
+"<p> <h3> Sort pictures in the order requested</h3> </p>" +
+
+"<p> The number on the frame indicates the order in which the images should be classified. Drag and drop to rank pictures. Once all pictures are correctly classified, the area turns in green. </p> "+
+"<p> Reload “button resets the exercises. </p>" +
+
+"<p> Enter the “Edit” mode to : </p>" +
+"<ul> <li> choose the theme of interactivity : pad, slate or none (by default : none),</li>" +
+"<li> modify the exercise. </li></ul>" +
+
+"<p>In edition mode : </p>" +
+"<ul><li> modify the instruction clicking on the text field,</li>" +
+"<li> add picture frames clicking on the “+”,</li>" +
+"<li> drag an drop pictures from your library,</li>" +
+"<li> change the order of images by dragging them,</li>" +
+"<li> delete a frame, clicking the cross (X),</li>" +
+"<li> change a picture clicking the “reload” button on the frame,</li>" +
+"<li> “Display” button comes back to the activity.</li> </ul>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("odr_des_imgs","")){
+            var data = jQuery.parseJSON(sankore.preference("odr_des_imgs",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+//                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_right = "";
+                    var tmp_array = [];
+                    
+                    container.find(".text_cont").removeAttr("contenteditable");
+                    container.find(".add_img").remove();
+//                    container.find(".close_cont").remove();
+                    container.find(".img_block").each(function(){
+                        if($(this).find("img").attr("src") != "img/drop_img.png"){
+                            $(this).find(".close_img").remove();
+                            $(this).find(".clear_img").remove();
+                            $(this).find(".numb_img").remove();
+                            $(this).removeAttr("ondragenter")
+                            .removeAttr("ondragleave")
+                            .removeAttr("ondragover")
+                            .removeAttr("ondrop");
+                            $(this).find("input").val(++tmp_i)
+                            tmp_right += tmp_i + "*";
+                        } else 
+                            $(this).remove();
+                    });
+                    container.find(".imgs_cont>input").val(tmp_right);
+                    
+                    container.find(".img_block").each(function(){
+                        $(this).css("float","");
+                        tmp_array.push($(this));
+                    });                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++)
+                        tmp_array[i].appendTo(container.find(".imgs_cont"));
+                    container.find(".imgs_cont").sortable( {
+                        update: checkResult
+                    } );
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                $(".cont").each(function(){
+                    var container = $(this);
+    
+//                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".text_cont").attr("contenteditable","true");
+                    //container.find(".imgs_cont").sortable("destroy");
+                    container.find(".imgs_cont").css("background-color", "");
+                    
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block").each(function(){
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
+                        //.css("float","left");
+                        $("<div class='close_img'>").appendTo($(this));
+                        $("<div class='clear_img'>").appendTo($(this));
+                        $("<div class='numb_img'>" + $(this).find("input").val() + "</div>").appendTo($(this));
+                    });
+                    rightOrder(container.find(".imgs_cont"));
+                    container.find(".imgs_cont").append(add_img)
+                });                
+                
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();
+        if(tmp_obj.find(".img_block").size() > 0){
+            refreshImgNumbers(tmp_obj);
+        }
+        
+    });
+    
+    //cleaning an image
+    $(".clear_img").live("click",function(){
+        //$(this).parent().find(".fill_img").remove();
+        $(this).parent().find("img").attr("src","img/drop_img.png");
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var container = $(this);
+            var tmp_right = "";
+            var tmp_i = 0;
+            container.find(".img_block").each(function(){
+                if($(this).html().match(/<img/)){
+                    $(this).find("input").val(++tmp_i)
+                    tmp_right += tmp_i + "*";
+                }
+            });
+            container.find(".imgs_cont>input").val(tmp_right);
+        });
+    }
+    $(".cont").each(function(){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.text = $(this).find(".text_cont").text();
+        cont_obj.right = $(this).find(".imgs_cont>input").val();
+        cont_obj.imgs = [];
+        $(this).find(".img_block").each(function(){
+            var img_obj = new Object();
+            img_obj.value = $(this).find("input").val();
+            img_obj.link = $(this).find("img").attr("src").replace("../../","");
+            img_obj.ht = $(this).find("img").height();
+            img_obj.wd = $(this).find("img").width();
+            cont_obj.imgs.push(img_obj);
+        });
+        array_to_export.push(cont_obj);
+    });
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    if(window.sankore)
+        sankore.setPreference("odr_des_imgs", JSON.stringify(array_to_export));
+    if($("#wgt_display").hasClass("selected")){
+        if(window.sankore)
+            sankore.setPreference("odr_des_imgs_state", "display");
+    }
+    else{
+        if(window.sankore)
+            sankore.setPreference("odr_des_imgs_state", "edit");
+    }
+}
+
+//import
+function importData(data){
+        
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        }
+        else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            var tmp_array = [];
+            var container = $("<div class='cont'>");
+            var sub_container = $("<div class='sub_cont'>").appendTo(container);
+            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+//            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+            var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+    
+            $("<input type='hidden' value='" + data[i].right + "'/>").appendTo(imgs_container);
+        
+            for(var j in data[i].imgs){
+                var img_block = $("<div class='img_block' style='text-align: center;'>");
+                var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                img.height(data[i].imgs[j].ht);
+                if((120 - data[i].imgs[j].ht) > 0)
+                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                img_block.append(hidden_input).append(img);
+                tmp_array.push(img_block);
+            }
+            if(sankore.preference("odr_des_imgs_state","")){
+                if(sankore.preference("odr_des_imgs_state","") == "edit")
+                    tmp_array = shuffle(tmp_array);
+            } else 
+                tmp_array = shuffle(tmp_array);
+            
+            for(j = 0; j<tmp_array.length;j++)
+                tmp_array[j].appendTo(imgs_container);
+            imgs_container.sortable().bind('sortupdate', function(event, ui) {
+                checkResult(event);
+            }); 
+            container.appendTo("#data"); 
+            imgs_container.trigger("sortupdate")                          
+        }        
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+    
+    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img1);
+    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='3'/>").appendTo(img3);
+    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='4'/>").appendTo(img4);
+    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='5'/>").appendTo(img5);
+    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++)
+        tmp_array[i].appendTo(imgs_container);
+    imgs_container.sortable().bind('sortupdate', function(event, ui) {
+        checkResult(event);
+    });
+
+    container.appendTo("#data");
+}
+
+//check result
+function checkResult(event)
+{
+    if($("#wgt_display").hasClass("selected")){
+        var str = "";
+        var right_str = $(event.target).find("input").val();
+        $(event.target).find(".img_block").each(function(){
+            str += $(this).find("input").val() + "*";
+        });
+        if(str == right_str)
+            $(event.target).css("background-color","#9f9");
+        else
+            $(event.target).css("background-color","");
+    } else {
+        refreshImgNumbers($(event.target));
+    }
+}
+
+//add new container
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+//    
+//    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+//    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
+
+//add new img block
+function addImgBlock(dest){
+    var img_block = $("<div class='img_block' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center;'></div>").insertBefore(dest);
+    var tmp_counter = dest.parent().find(".img_block").size();
+    $("<div class='close_img'>").appendTo(img_block);
+    $("<div class='clear_img'>").appendTo(img_block);
+    $("<div class='numb_img'>" + tmp_counter + "</div>").appendTo(img_block);
+    $("<input type='hidden' value='" + tmp_counter + "'/>").appendTo(img_block);
+    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
+}
+
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+//regulation the images in right order
+function rightOrder(source){
+    var tmp_arr = [];
+    var tmp_var;
+    source.find(".img_block").each(function(){
+        tmp_arr.push($(this));
+        $(this).remove();
+    });
+    for(var i = 0; i < tmp_arr.length; i++)
+        for(var j = 0; j < tmp_arr.length - 1; j++){
+            if(tmp_arr[j].find("input").val() > tmp_arr[j+1].find("input").val()){
+                tmp_var = tmp_arr[j];
+                tmp_arr[j] = tmp_arr[j+1];
+                tmp_arr[j+1] = tmp_var;
+            }
+        }
+    for(i in tmp_arr)
+        source.append(tmp_arr[i]);
+}
+
+//refresh the numbers of the images
+function refreshImgNumbers(source){
+    var tmp = 1;
+    source.find(".img_block").each(function(){
+        $(this).find("input").val(tmp);
+        $(this).find(".numb_img").text(tmp);
+        tmp++;
+    });
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+function onDropTarget(obj, event) {
+    $(obj).find("img").remove();
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_img = $("<img/>").attr("src", "../../" + tmp);
+        $(obj).append(tmp_img);
+        setTimeout(function(){
+            if(tmp_img.height() >= tmp_img.width())
+                tmp_img.attr("height", "120");
+            else{
+                tmp_img.attr("width","120");
+                var h = tmp_img.height();
+                tmp_img.attr("height",h);
+                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+            }
+        }, 6)
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/js/script.js
index cef5bfb..4bf2523 100644
--- a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/js/script.js	
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/js/script.js	
@@ -20,20 +20,16 @@ var sankoreLang = {
 
     "<p>Le bouton “Modifier” vous permet :</p>"+
     "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
-    "<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité.</li></ul>"+
+    "<li>de modifier l'exercice.</li></ul>"+
 
-    "<p>Pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, puis</p>"+
-    "<ul><li>insérez une consigne en cliquant sur le champ de texte “Saisir votre consigne ici …”,</li>"+
+    "<p>Dans le mode édition :</p>"+
+    "<ul><li>modifiez la consigne en cliquant sur le champ de texte,</li>"+
     "<li>insérez des images dans les zones de dépôt par glisser-déposer des images à partir de votre bibliothèque,</li>"+
-    "<li>modifiez éventuellement l’ordre des images par un glisser-déposer de l’image concernée pour la mettre au bon endroit dans la suite.</li></ul>"+
-
-    "<p>Pour ajouter une zone image, cliquez sur le gros “+” en bas.</p>"+
-    "<p>Pour supprimer une zone image, cliquez sur la croix située dans le coin supérieur droit de l’image.</p>"+
-    "<p>Pour changer d’image, cliquez sur l’icône située au milieu à droite de l’image.</p>"+ 
-
-    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
-
-    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    "<li>modifiez éventuellement l’ordre des images par un glisser-déposer de l’image concernée pour la mettre au bon endroit dans la suite,</li>"+
+    "<li>ajoutez une zone image, en cliquant sur le gros “+” en bas,</li>"+
+    "<li>supprimez une zone image, en cliquant sur la croix située dans son coin supérieur droit,</li>"+
+    "<li>changez limage en cliquant sur l’icône située au milieu à droite de l’image,</li>"+ 
+    "<li>le bouton “Afficher” vous permet d’utiliser l’activité.</li></ul>",
     theme: "Thème"
 };
 
@@ -62,7 +58,7 @@ function start(){
     } 
     else 
         showExample();
-    
+
     //events
     if (window.widget) {
         window.widget.onleave = function(){
@@ -107,11 +103,12 @@ function start(){
     $("#wgt_display, #wgt_edit").click(function(event){
         if(this.id == "wgt_display"){
             if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(false);
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display","none");
-                $(".add_block").remove();
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     var tmp_i = 0;
@@ -120,7 +117,7 @@ function start(){
                     
                     container.find(".text_cont").removeAttr("contenteditable");
                     container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     container.find(".img_block").each(function(){
                         if($(this).find("img").attr("src") != "img/drop_img.png"){
                             $(this).find(".close_img").remove();
@@ -153,14 +150,15 @@ function start(){
             }
         } else {            
             if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(true);
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
                 $(this).addClass("selected");
                 $("#wgt_display").removeClass("selected");
                 $("#parameters").css("display","block");
                 $(".cont").each(function(){
                     var container = $(this);
     
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find(".text_cont").attr("contenteditable","true");
                     //container.find(".imgs_cont").sortable("destroy");
                     container.find(".imgs_cont").css("background-color", "");
@@ -180,7 +178,7 @@ function start(){
                     container.find(".imgs_cont").append(add_img)
                 });                
                 
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
@@ -188,9 +186,9 @@ function start(){
     });
     
     //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
     
     //adding new img
     $(".add_img").live("click", function(){
@@ -198,10 +196,10 @@ function start(){
     });
     
     //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
     $(".close_img").live("click", function(){
@@ -261,22 +259,27 @@ function exportData(){
         cont_obj.tmp = "clear";
         array_to_export.push(cont_obj);
     }
-    sankore.setPreference("odr_des_imgs", JSON.stringify(array_to_export));
-    if($("#wgt_display").hasClass("selected"))
-        sankore.setPreference("odr_des_imgs_state", "display");
-    else
-        sankore.setPreference("odr_des_imgs_state", "edit");
+    if(window.sankore)
+        sankore.setPreference("odr_des_imgs", JSON.stringify(array_to_export));
+    if($("#wgt_display").hasClass("selected")){
+        if(window.sankore)
+            sankore.setPreference("odr_des_imgs_state", "display");
+    }
+    else{
+        if(window.sankore)
+            sankore.setPreference("odr_des_imgs_state", "edit");
+    }
 }
 
 //import
 function importData(data){
-    
-    var tmp = 0;    
+        
     for(var i in data){
         if(data[i].tmp){
             changeStyle(data[i].style);
             $("#style_select").val(data[i].style);
-        }else{
+        }
+        else {
             if(i == 0){
                 changeStyle(data[i].style);
                 $("#style_select").val(data[i].style);
@@ -286,7 +289,7 @@ function importData(data){
             var sub_container = $("<div class='sub_cont'>").appendTo(container);
             var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
         
-            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
             var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
     
             $("<input type='hidden' value='" + data[i].right + "'/>").appendTo(imgs_container);
@@ -313,8 +316,8 @@ function importData(data){
                 checkResult(event);
             }); 
             container.appendTo("#data"); 
-            imgs_container.trigger("sortupdate")  
-        }
+            imgs_container.trigger("sortupdate")                          
+        }        
     }
 }
 
@@ -328,7 +331,7 @@ function showExample(){
     var sub_container = $("<div class='sub_cont'>").appendTo(container);
     var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
 
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
     var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
     
     $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
@@ -379,19 +382,19 @@ function checkResult(event)
 }
 
 //add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+//    
+//    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+//    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
 
 //add new img block
 function addImgBlock(dest){
@@ -404,17 +407,18 @@ function addImgBlock(dest){
     $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
 }
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 //shuffles an array
 function shuffle( arr )
 {
-    var pos, tmp;	
+    var pos, tmp;
+	
     for( var i = 0; i < arr.length; i++ )
     {
         pos = Math.round( Math.random() * ( arr.length - 1 ) );
@@ -558,5 +562,4 @@ function onDropTarget(obj, event) {
         event.cancelBubble = true;
     }
     return false;
-}
-
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/js/script.js
index 0bce573..d48bcfa 100644
--- a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/js/script.js	
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/js/script.js	
@@ -40,7 +40,7 @@ function start(){
     } 
     else 
         showExample();
-    
+
     //events
     if (window.widget) {
         window.widget.onleave = function(){
@@ -85,11 +85,12 @@ function start(){
     $("#wgt_display, #wgt_edit").click(function(event){
         if(this.id == "wgt_display"){
             if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(false);
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display","none");
-                $(".add_block").remove();
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     var tmp_i = 0;
@@ -98,7 +99,7 @@ function start(){
                     
                     container.find(".text_cont").removeAttr("contenteditable");
                     container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     container.find(".img_block").each(function(){
                         if($(this).find("img").attr("src") != "img/drop_img.png"){
                             $(this).find(".close_img").remove();
@@ -131,14 +132,15 @@ function start(){
             }
         } else {            
             if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(true);
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
                 $(this).addClass("selected");
                 $("#wgt_display").removeClass("selected");
                 $("#parameters").css("display","block");
                 $(".cont").each(function(){
                     var container = $(this);
     
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find(".text_cont").attr("contenteditable","true");
                     //container.find(".imgs_cont").sortable("destroy");
                     container.find(".imgs_cont").css("background-color", "");
@@ -158,7 +160,7 @@ function start(){
                     container.find(".imgs_cont").append(add_img)
                 });                
                 
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
@@ -166,9 +168,9 @@ function start(){
     });
     
     //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
     
     //adding new img
     $(".add_img").live("click", function(){
@@ -176,10 +178,10 @@ function start(){
     });
     
     //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
     $(".close_img").live("click", function(){
@@ -239,22 +241,27 @@ function exportData(){
         cont_obj.tmp = "clear";
         array_to_export.push(cont_obj);
     }
-    sankore.setPreference("odr_des_imgs", JSON.stringify(array_to_export));
-    if($("#wgt_display").hasClass("selected"))
-        sankore.setPreference("odr_des_imgs_state", "display");
-    else
-        sankore.setPreference("odr_des_imgs_state", "edit");
+    if(window.sankore)
+        sankore.setPreference("odr_des_imgs", JSON.stringify(array_to_export));
+    if($("#wgt_display").hasClass("selected")){
+        if(window.sankore)
+            sankore.setPreference("odr_des_imgs_state", "display");
+    }
+    else{
+        if(window.sankore)
+            sankore.setPreference("odr_des_imgs_state", "edit");
+    }
 }
 
 //import
 function importData(data){
-    
-    var tmp = 0;    
+        
     for(var i in data){
         if(data[i].tmp){
             changeStyle(data[i].style);
             $("#style_select").val(data[i].style);
-        }else{
+        }
+        else {
             if(i == 0){
                 changeStyle(data[i].style);
                 $("#style_select").val(data[i].style);
@@ -264,7 +271,7 @@ function importData(data){
             var sub_container = $("<div class='sub_cont'>").appendTo(container);
             var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
         
-            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
             var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
     
             $("<input type='hidden' value='" + data[i].right + "'/>").appendTo(imgs_container);
@@ -291,8 +298,8 @@ function importData(data){
                 checkResult(event);
             }); 
             container.appendTo("#data"); 
-            imgs_container.trigger("sortupdate")  
-        }
+            imgs_container.trigger("sortupdate")                          
+        }        
     }
 }
 
@@ -306,7 +313,7 @@ function showExample(){
     var sub_container = $("<div class='sub_cont'>").appendTo(container);
     var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
 
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
     var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
     
     $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
@@ -357,19 +364,19 @@ function checkResult(event)
 }
 
 //add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+//    
+//    var close = $("<div class='close_cont'>").appendTo(container);
+//    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+//    
+//    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+//    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
 
 //add new img block
 function addImgBlock(dest){
@@ -382,17 +389,18 @@ function addImgBlock(dest){
     $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
 }
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 //shuffles an array
 function shuffle( arr )
 {
-    var pos, tmp;	
+    var pos, tmp;
+	
     for( var i = 0; i < arr.length; i++ )
     {
         pos = Math.round( Math.random() * ( arr.length - 1 ) );
@@ -536,4 +544,4 @@ function onDropTarget(obj, event) {
         event.cancelBubble = true;
     }
     return false;
-}
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/config.xml
index 95c9e84..3c667f0 100644
--- a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/config.xml	
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/config.xml	
@@ -4,8 +4,8 @@
         id="http://uniboard.mnemis.com/widgets/notes" 
         version="1.2"
         width="900"
-        height="450" 
-        ub:resizable="true">     
+        height="300" 
+        ub:resizable="false">     
    
 		<name>Notes</name>
 		<author href="http://www.getuniboard.com"
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/index.html
index 1dd4865..cd06f5b 100644
--- a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/index.html	
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/index.html	
@@ -3,86 +3,30 @@
     <head>
         <title>D'n'd</title>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
         <script src="js/jquery-1.8.0.min.js"></script>
-        <script src="js/jquery-ui-1.8.23.custom.min.js"></script>        
-        <script type="text/javascript" src="js/script.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){  
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url: 'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }
+                    }
+                });      
             });
         </script>
     </head>
     <body>       
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-       
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="data">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
         
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
     </body>
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/script.js
deleted file mode 100644
index 2aa2504..0000000
--- a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/script.js	
+++ /dev/null
@@ -1,566 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    short_desc: "Listen to the sound and make the correct word.", 
-    add: "Add new block",
-    enter: "Enter your instruction here ...",
-    example: "example",
-    wgt_name: "Order letters",
-    reload: "Reload",
-    slate: "slate",
-    pad: "pad",
-    none: "none",
-    help: "Help",
-    help_content: 
-"<p> <h2> Order letters </ h2> </p>" +
-"<p> <h3>Drag and drop labels in the correct order</h3> </p>" +
-"<p>  Listen to the audio file and drag and drop labels in the correct order. If the result is correct, the area turns in green. </p> "+
-
-"<p> You can also use this activity with numbers.</p>" +
-
-"<p>“Reload” button resets the exercises. </p>" +
-
-"<p> Enter the “Edit” mode to : </p>" +
-"<ul> <li> choose the theme of the App : pad, slate, or none (by default : none), </li>" +
-"<li> modify an exercise or to create a new one.</li> </ul>" +
- "<p>To create a new exercise : </p>" +
-"<ul> <li> click on “New block”,</li>" +
-"<li>insert an instruction the field dragging an audio file from your library, </li>" +
-"<li>edit the text field “Enter your instruction here...”,</li>" +
-"<li>Write the desired word instead of “example”,</li>" +
-"<li>set the correct image of your activity clicking on the submit button “v” on the frame. </li> </ul>" +
-"<p> To replace an audio file, drag a new one from your library. </p>" +
-"<p> To delete a whole block, click on the cross on the left.</p>" +
-"<p>“Display” button comes back to the activity.</p>",
-    theme: "Theme"
-};
-
-//main function
-function start(){
-
-    $("#wgt_display").text(sankoreLang.display);
-    $("#wgt_edit").text(sankoreLang.edit);
-    $("#wgt_name").text(sankoreLang.wgt_name);
-    $("#wgt_reload").text(sankoreLang.reload);
-    $("#wgt_help").text(sankoreLang.help);
-    $("#help").html(sankoreLang.help_content);
-    $("#style_select option[value='1']").text(sankoreLang.slate);
-    $("#style_select option[value='2']").text(sankoreLang.pad);
-    $("#style_select option[value='3']").text(sankoreLang.none);
-    var tmpl = $("div.inline label").html();
-    $("div.inline label").html(sankoreLang.theme + tmpl)
-    
-    if(window.sankore){
-        if(sankore.preference("ord_let","")){
-            var data = jQuery.parseJSON(sankore.preference("ord_let",""));
-            importData(data);
-        }
-        else 
-            showExample();
-        if(sankore.preference("ord_let_style","")){
-            changeStyle(sankore.preference("ord_let_style",""));
-            $("#style_select").val(sankore.preference("ord_let_style",""));
-        } else
-            changeStyle("3")
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-            sankore.setPreference("ord_let_style", $("#style_select").find("option:selected").val());
-        }
-    }
-    
-    $("#wgt_help").click(function(){
-        var tmp = $(this);
-        if($(this).hasClass("open")){
-            $(this).removeClass("help_pad").removeClass("help_wood")
-            $("#help").slideUp("100", function(){
-                tmp.removeClass("open");
-                $("#data").show();
-            });
-        } else {
-            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
-            $("#data").hide();
-            $("#help").slideDown("100", function(){
-                tmp.addClass("open");
-            });
-        }
-    });
-    
-    $("#wgt_reload").click(function(){
-        if($("#wgt_display").hasClass("selected")){
-            setTimeout('$("#wgt_display").trigger("click")', 10)
-            $("#wgt_edit").trigger("click");            
-        } else {
-            $("#wgt_display").trigger("click");
-        }
-    });
-    
-    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
-        exportData();
-    });
-
-    $("#style_select").change(function (event){
-        changeStyle($(this).find("option:selected").val());
-    })
-    
-    $("#wgt_display, #wgt_edit").click(function(event){
-        if(this.id == "wgt_display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#wgt_edit").removeClass("selected");
-                $("#parameters").css("display","none");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_array = [];
-                    var ans_container = container.find(".audio_answer");
-                    
-                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
-                    container.find(".audio_block").removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop")
-                    container.find(".close_cont").remove();
-                    var answer = ans_container.text();
-                    ans_container.prev().val(answer)
-                    ans_container.remove();
-                    var ul_cont = $("<ul id='sortable' class='imgs_answers_gray'>").insertAfter(container.find(".sub_cont"));
-                    for(var j in answer){
-                        var tmp_letter = $("<li class='ui-state-default'>" + answer[j] + "</li>");
-                        tmp_array.push(tmp_letter);
-                    }                        
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++)
-                        tmp_array[i].appendTo(ul_cont);
-                    ul_cont.sortable({revert: true, placeholder: "highlight", update: checkResult});
-                });
-                $(this).css("display", "none");
-                $("#wgt_edit").css("display", "block");
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#wgt_display").removeClass("selected");
-                $("#parameters").css("display","block");
-                $(".cont").each(function(){
-                    var container = $(this);
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find("#sortable").removeClass("imgs_answers_red")
-                    .removeClass("imgs_answers_green")
-                    .addClass("imgs_answers_gray")
-                    .sortable("destroy");
-                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
-                    container.find(".audio_block").attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
-                    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
-                    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");                    
-                    $("<div class='audio_answer' contenteditable>" + container.find("ul").next().val() + "</div>").appendTo(container);
-                    container.find("ul").remove();
-                });                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
-                $(this).css("display", "none");
-                $("#wgt_display").css("display", "block");
-            }
-        }
-        
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-        
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();        
-    });
-    
-    //correct image
-    $(".true_img").live("click",function(){        
-        $(this).parent().parent().find(".img_block").each(function(){
-            $(this).find("input").val(0);
-            var tmp_div = $(this).find(".false_img");
-            if(tmp_div)
-                tmp_div.removeClass("false_img").addClass("true_img");
-        })
-        $(this).parent().find("input").val(1);
-        $(this).removeClass("true_img").addClass("false_img");
-    });
-    
-    //wrong image
-    $(".false_img").live("click",function(){
-        $(this).parent().find("input").val(0);
-        $(this).removeClass("false_img").addClass("true_img");
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#wgt_edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src");
-            cont_obj.answer = $(this).find(".audio_answer").text();
-            cont_obj.cur_answer = "";
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src");
-            cont_obj.answer = $(this).find("ul").next().val(); 
-            cont_obj.cur_answer = getAnswer($(this).find("ul"));
-            array_to_export.push(cont_obj);
-        });
-    }
-    if(window.sankore){
-        sankore.setPreference("ord_let", JSON.stringify(array_to_export));
-        sankore.setPreference("ord_let_locale", "en");
-    }
-    if($("#wgt_display").hasClass("selected")){
-        if(window.sankore)
-            sankore.setPreference("ord_let_state", "display");
-    }
-    else{
-        if(window.sankore)
-            sankore.setPreference("ord_let_state", "edit");
-    }
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){        
-        var tmp_array = [];
-        var container = $("<div class='cont'>").appendTo("#data");
-        var sub_container = $("<div class='sub_cont'>").appendTo(container);
-        var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);   
-        
-        $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        var text = $("<div class='text_cont'>").appendTo(sub_container);
-        var audio_block = $("<div class='audio_block'>").appendTo(text);
-        $("<div class='play'>").appendTo(audio_block);
-        $("<div class='replay'>").appendTo(audio_block);
-        var source = $("<source/>").attr("src", data[i].audio);
-        var audio = $("<audio>").appendTo(audio_block);
-        audio.append(source);
-        $("<input type='hidden'/>").appendTo(audio_block);
-        $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
-        $("<input type='hidden' value='" + data[i].answer + "'/>").appendTo(container);
-        
-        if(data[i].cur_answer)
-            for(var j in data[i].cur_answer){
-                var tmp_letter = $("<li class='ui-state-default'>" + data[i].cur_answer[j] + "</li>");
-                tmp_array.push(tmp_letter);
-            } 
-        else
-            for(j in data[i].answer){
-                tmp_letter = $("<li class='ui-state-default'>" + data[i].answer[j] + "</li>");                
-                tmp_array.push(tmp_letter);
-            }
-        
-        if(sankore.preference("ord_let_state","")){
-            if(sankore.preference("ord_let_state","") == "edit")
-                tmp_array = shuffle(tmp_array);
-        } else 
-            tmp_array = shuffle(tmp_array);
-        
-        for(j = 0; j<tmp_array.length;j++)
-            tmp_array[j].appendTo(imgs_container);
-        
-        imgs_container.sortable({revert: true, placeholder: "highlight"}).bind('sortupdate', function(event, ui) {
-            checkResult(event);
-        }); 
-        if(data[i].cur_answer)
-            imgs_container.trigger("sortupdate") 
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];    
-    var container = $("<div class='cont'>").appendTo("#data");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "objects/beep.mp3");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='" + sankoreLang.example + "'/>").appendTo(container);
-    
-    for(var j in sankoreLang.example){
-        var tmp_letter = $("<li class='ui-state-default'>" + sankoreLang.example[j] + "</li>");
-        tmp_array.push(tmp_letter);
-    } 
-    
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++)
-        tmp_array[i].appendTo(imgs_container);
-    imgs_container.sortable({revert: true, placeholder: "highlight"}).bind('sortupdate', function(event, ui) {
-        checkResult(event);
-    });
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-   
-    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);    
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    audio_block.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
-    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
-    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
-    
-    var tmp_input = $("<input type='hidden' value=''/>").insertAfter(sub_container);
-    var close = $("<div class='close_cont'>").insertAfter(tmp_input);
-    $("<div class='audio_answer' contenteditable>" + sankoreLang.example + "</div>").insertAfter(close);
-    container.insertBefore($(".add_block"));
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-//check result
-function checkResult(event)
-{
-    var str = "";
-    var right_str = $(event.target).next().val();
-    $(event.target).find("li.ui-state-default").each(function(){
-        str += $(this).text();
-    });
-    if(str == right_str)
-        $(event.target).removeClass("imgs_answers_gray")
-        .removeClass("imgs_answers_red")
-        .addClass("imgs_answers_green");
-    else
-        $(event.target).removeClass("imgs_answers_gray")
-        .removeClass("imgs_answers_green");
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//changing the style
-function changeStyle(val){
-    switch(val){
-        case "1":
-            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
-            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
-            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
-            $("#wgt_name").removeClass("pad_color");
-            $("#wgt_display").addClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").addClass("radius_ft");
-            break;
-        case "2":
-            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").removeClass("radius_ft");
-            break;
-        case "3":
-            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
-            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
-            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
-            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
-            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
-            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
-            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
-            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").addClass("without_radius").removeClass("radius_ft");
-            break;
-    }
-}
-
-
-function onDropAudio(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){       
-            $(obj).find("audio").remove();
-            $(obj).find(":first-child").removeClass("stop").addClass("play");
-            var source = $("<source/>").attr("src", tmp);
-            var audio = $("<audio>").appendTo($(obj));
-            audio.append(source);            
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-//get text
-function getAnswer(obj){
-    var answer = "";
-    obj.find("li.ui-state-default").each(function(){
-        answer += $(this).text();
-    });
-    return answer;
-}
-
-if (window.widget) {
-    window.widget.onremove = function(){
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-    }
-}
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/en/index.html b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/en/index.html
new file mode 100644
index 0000000..53e1938
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/en/index.html	
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.8.0.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.23.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>       
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/en/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/en/js/script.js
new file mode 100644
index 0000000..b3199da
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/en/js/script.js	
@@ -0,0 +1,564 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    short_desc: "Listen to the sound and make the correct word.", 
+    add: "Add new block",
+    enter: "Enter your instruction here ...",
+    example: "example",
+    wgt_name: "Order letters",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p> <h2> Order letters </ h2> </p>" +
+"<p> <h3>Drag and drop labels in the correct order</h3> </p>" +
+"<p>  Listen to the audio file and drag and drop labels in the correct order. If the result is correct, the area turns in green. </p> "+
+
+"<p> You can also use this activity with numbers.</p>" +
+
+"<p>“Reload” button resets the exercises. </p>" +
+
+"<p> Enter the “Edit” mode to : </p>" +
+"<ul> <li> choose the theme of the App : pad, slate, or none (by default : none), </li>" +
+"<li> modify the exercise.</li> </ul>" +
+ "<p>In edition mode : </p>" +
+"<ul><li>insert an audio dragging and dropping a file from your library, </li>" +
+"<li>edit the text field “Enter your instruction here...”,</li>" +
+"<li>write the desired word instead of “example”,</li>" +
+"<li>set the correct image of your activity clicking on the submit button “v” on the frame, </li>" +
+"<li>replace an audio file, dragging a new one from your library, </li>" +
+"<li>“Display” button comes back to the activity.</li></ul>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("ord_let","")){
+            var data = jQuery.parseJSON(sankore.preference("ord_let",""));
+            importData(data);
+        }
+        else 
+            showExample();
+        if(sankore.preference("ord_let_style","")){
+            changeStyle(sankore.preference("ord_let_style",""));
+            $("#style_select").val(sankore.preference("ord_let_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+            sankore.setPreference("ord_let_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            setTimeout('$("#wgt_display").trigger("click")', 10)
+            $("#wgt_edit").trigger("click");            
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+//                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_array = [];
+                    var ans_container = container.find(".audio_answer");
+                    
+                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
+                    container.find(".audio_block").removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop")
+//                    container.find(".close_cont").remove();
+                    var answer = ans_container.text();
+                    ans_container.prev().val(answer)
+                    ans_container.remove();
+                    var ul_cont = $("<ul id='sortable' class='imgs_answers_gray'>").insertAfter(container.find(".sub_cont"));
+                    for(var j in answer){
+                        var tmp_letter = $("<li class='ui-state-default'>" + answer[j] + "</li>");
+                        tmp_array.push(tmp_letter);
+                    }                        
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++)
+                        tmp_array[i].appendTo(ul_cont);
+                    ul_cont.sortable({
+                        revert: true, 
+                        placeholder: "highlight", 
+                        update: checkResult
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                $(".cont").each(function(){
+                    var container = $(this);
+//                    $("<div class='close_cont'>").appendTo(container);
+                    container.find("#sortable").removeClass("imgs_answers_red")
+                    .removeClass("imgs_answers_green")
+                    .addClass("imgs_answers_gray")
+                    .sortable("destroy");
+                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
+                    container.find(".audio_block").attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+                    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+                    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");                    
+                    $("<div class='audio_answer' contenteditable>" + container.find("ul").next().val() + "</div>").appendTo(container);
+                    container.find("ul").remove();
+                });                
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+        
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+        
+    });
+    
+    //add new block
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();        
+    });
+    
+    //correct image
+    $(".true_img").live("click",function(){        
+        $(this).parent().parent().find(".img_block").each(function(){
+            $(this).find("input").val(0);
+            var tmp_div = $(this).find(".false_img");
+            if(tmp_div)
+                tmp_div.removeClass("false_img").addClass("true_img");
+        })
+        $(this).parent().find("input").val(1);
+        $(this).removeClass("true_img").addClass("false_img");
+    });
+    
+    //wrong image
+    $(".false_img").live("click",function(){
+        $(this).parent().find("input").val(0);
+        $(this).removeClass("false_img").addClass("true_img");
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src");
+            cont_obj.answer = $(this).find(".audio_answer").text();
+            cont_obj.cur_answer = "";            
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src");
+            cont_obj.answer = $(this).find("ul").next().val(); 
+            cont_obj.cur_answer = getAnswer($(this).find("ul"));
+            array_to_export.push(cont_obj);
+        });
+    }
+    sankore.setPreference("ord_let", JSON.stringify(array_to_export));
+    if($("#wgt_display").hasClass("selected"))
+        sankore.setPreference("ord_let_state", "display");
+    else
+        sankore.setPreference("ord_let_state", "edit");
+}
+
+//import
+function importData(data){
+   
+    for(var i in data){        
+        var tmp_array = [];
+        var container = $("<div class='cont'>").appendTo("#data");
+        var sub_container = $("<div class='sub_cont'>").appendTo(container);
+        var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);   
+        
+//        $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+        var text = $("<div class='text_cont'>").appendTo(sub_container);
+        var audio_block = $("<div class='audio_block'>").appendTo(text);
+        $("<div class='play'>").appendTo(audio_block);
+        $("<div class='replay'>").appendTo(audio_block);
+        var source = $("<source/>").attr("src", data[i].audio);
+        var audio = $("<audio>").appendTo(audio_block);
+        audio.append(source);
+        $("<input type='hidden'/>").appendTo(audio_block);
+        $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
+        $("<input type='hidden' value='" + data[i].answer + "'/>").appendTo(container);
+        if(data[i].cur_answer)
+            for(var j in data[i].cur_answer){
+                var tmp_letter = $("<li class='ui-state-default'>" + data[i].cur_answer[j] + "</li>");
+                tmp_array.push(tmp_letter);
+            } 
+        else
+            for(j in data[i].answer){
+                tmp_letter = $("<li class='ui-state-default'>" + data[i].answer[j] + "</li>");                
+                tmp_array.push(tmp_letter);
+            }
+        
+        if(sankore.preference("ord_let_state","")){
+            if(sankore.preference("ord_let_state","") == "edit")
+                tmp_array = shuffle(tmp_array);
+        } else 
+            tmp_array = shuffle(tmp_array);
+        
+        for(j = 0; j<tmp_array.length;j++)
+            tmp_array[j].appendTo(imgs_container);
+        
+        imgs_container.sortable({
+            revert: true, 
+            placeholder: "highlight"
+        }).bind('sortupdate', function(event, ui) {
+            checkResult(event);
+        }); 
+        if(data[i].cur_answer)
+            imgs_container.trigger("sortupdate")
+    }
+}
+
+//example
+function showExample(){
+    
+    var tmp_array = [];    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);
+
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "../../objects/example_en.mp3");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
+    
+    $("<input type='hidden' value='" + sankoreLang.example + "'/>").appendTo(container);
+    
+    for(var j in sankoreLang.example){
+        var tmp_letter = $("<li class='ui-state-default'>" + sankoreLang.example[j] + "</li>");
+        tmp_array.push(tmp_letter);
+    } 
+    
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++)
+        tmp_array[i].appendTo(imgs_container);
+    imgs_container.sortable({
+        revert: true, 
+        placeholder: "highlight"
+    }).bind('sortupdate', function(event, ui) {
+        checkResult(event);
+    });
+}
+
+//add new container
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//   
+//    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont'>").appendTo(sub_container);
+//    var audio_block = $("<div class='audio_block'>").appendTo(text);
+//    audio_block.attr("ondragenter", "return false;")
+//    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+//    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+//    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
+//    $("<div class='play'>").appendTo(audio_block);
+//    $("<div class='replay'>").appendTo(audio_block);
+//    var source = $("<source/>").attr("src", "");
+//    var audio = $("<audio>").appendTo(audio_block);
+//    audio.append(source);
+//    $("<input type='hidden'/>").appendTo(audio_block);
+//    $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
+//    
+//    var tmp_input = $("<input type='hidden' value=''/>").insertAfter(sub_container);
+//    var close = $("<div class='close_cont'>").insertAfter(tmp_input);
+//    $("<div class='audio_answer' contenteditable>" + sankoreLang.example + "</div>").insertAfter(close);
+//    container.insertBefore($(".add_block"));
+//}
+
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+//check result
+function checkResult(event)
+{
+    var str = "";
+    var right_str = $(event.target).next().val();
+    $(event.target).find("li.ui-state-default").each(function(){
+        str += $(this).text();
+    });
+    if(str == right_str)
+        $(event.target).removeClass("imgs_answers_gray")
+        .removeClass("imgs_answers_red")
+        .addClass("imgs_answers_green");
+    else
+        $(event.target).removeClass("imgs_answers_gray")
+        .removeClass("imgs_answers_green");
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function onDropAudio(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){            
+            $(obj).find("audio").remove();
+            $(obj).find(":first-child").removeClass("stop").addClass("play");
+            var source = $("<source/>").attr("src", "../../" + tmp);
+            var audio = $("<audio>").appendTo($(obj));
+            audio.append(source);   
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+//get text
+function getAnswer(obj){
+    var answer = "";
+    obj.find("li.ui-state-default").each(function(){
+        answer += $(this).text();
+    });
+    return answer;
+}
+
+if (window.widget) {
+    window.widget.onremove = function(){
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+    }
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/js/script.js
index 450caf6..7ab3c7c 100644
--- a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/js/script.js	
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/js/script.js	
@@ -22,16 +22,13 @@ var sankoreLang = {
 
     "<p>Le bouton “Modifier” vous permet :</p>"+
     "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
-    "<li>de déterminer le mot à reconstituer.</li></ul>"+
+    "<li>de déterminer le mot à reconstituer et modifier l'exercice.</li></ul>"+
  
-    "<p>Pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, puis</p>"+
-    "<ul><li>insérez une consigne en cliquant sur le champ de texte “Saisir la consigne ici ...”,</li>"+
+    "<p>Dans le mode édition :</p>"+
+    "<ul><li>modifiez la consigne en cliquant sur le champ de texte,</li>"+
     "<li>insérez un son dans la zone à gauche de la consigne par glisser-déposer d’un son à partir de votre bibliothèque (facultatif),</li>"+
-    "<li>écrivez le mot souhaité à la place de “exemple”.</li></ul>"+
-
-    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
-
-    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    "<li>écrivez le mot souhaité à la place de “exemple”,</li>"+
+    "<li>le bouton “Afficher” vous permet d’utiliser l’activité.</li></ul>",
     theme: "Thème"
 };
 
@@ -115,7 +112,7 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display","none");
-                $(".add_block").remove();
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     var tmp_array = [];
@@ -126,7 +123,7 @@ function start(){
                     .removeAttr("ondragleave")
                     .removeAttr("ondragover")
                     .removeAttr("ondrop")
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     var answer = ans_container.text();
                     ans_container.prev().val(answer)
                     ans_container.remove();
@@ -156,7 +153,7 @@ function start(){
                 $("#parameters").css("display","block");
                 $(".cont").each(function(){
                     var container = $(this);
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find("#sortable").removeClass("imgs_answers_red")
                     .removeClass("imgs_answers_green")
                     .addClass("imgs_answers_gray")
@@ -169,7 +166,7 @@ function start(){
                     $("<div class='audio_answer' contenteditable>" + container.find("ul").next().val() + "</div>").appendTo(container);
                     container.find("ul").remove();
                 });                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
@@ -183,9 +180,9 @@ function start(){
     });
     
     //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
     
     //adding new img
     $(".add_img").live("click", function(){
@@ -193,10 +190,10 @@ function start(){
     });
     
     //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
     $(".close_img").live("click", function(){
@@ -288,7 +285,6 @@ function exportData(){
         });
     }
     sankore.setPreference("ord_let", JSON.stringify(array_to_export));
-    sankore.setPreference("ord_let_locale", sankore.locale().substr(0,2));
     if($("#wgt_display").hasClass("selected"))
         sankore.setPreference("ord_let_state", "display");
     else
@@ -297,20 +293,19 @@ function exportData(){
 
 //import
 function importData(data){
-    var tmp_loc = sankore.preference("ord_let_locale","")
-    var tmp = 0;    
+   
     for(var i in data){        
         var tmp_array = [];
         var container = $("<div class='cont'>").appendTo("#data");
         var sub_container = $("<div class='sub_cont'>").appendTo(container);
         var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);   
         
-        $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//        $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
         var text = $("<div class='text_cont'>").appendTo(sub_container);
         var audio_block = $("<div class='audio_block'>").appendTo(text);
         $("<div class='play'>").appendTo(audio_block);
         $("<div class='replay'>").appendTo(audio_block);
-        var source = $("<source/>").attr("src",((tmp_loc != "en")?"":"../../") + data[i].audio);
+        var source = $("<source/>").attr("src", data[i].audio);
         var audio = $("<audio>").appendTo(audio_block);
         audio.append(source);
         $("<input type='hidden'/>").appendTo(audio_block);
@@ -355,12 +350,12 @@ function showExample(){
     var sub_container = $("<div class='sub_cont'>").appendTo(container);
     var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);
 
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
     var text = $("<div class='text_cont'>").appendTo(sub_container);
     var audio_block = $("<div class='audio_block'>").appendTo(text);
     $("<div class='play'>").appendTo(audio_block);
     $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "objects/exemple.mp3");
+    var source = $("<source/>").attr("src", "../../objects/example_fr.mp3");
     var audio = $("<audio>").appendTo(audio_block);
     audio.append(source);
     $("<input type='hidden'/>").appendTo(audio_block);
@@ -385,37 +380,37 @@ function showExample(){
 }
 
 //add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-   
-    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    audio_block.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
-    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
-    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
-    
-    var tmp_input = $("<input type='hidden' value=''/>").insertAfter(sub_container);
-    var close = $("<div class='close_cont'>").insertAfter(tmp_input);
-    $("<div class='audio_answer' contenteditable>" + sankoreLang.example + "</div>").insertAfter(close);
-    container.insertBefore($(".add_block"));
-}
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//   
+//    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont'>").appendTo(sub_container);
+//    var audio_block = $("<div class='audio_block'>").appendTo(text);
+//    audio_block.attr("ondragenter", "return false;")
+//    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+//    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+//    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
+//    $("<div class='play'>").appendTo(audio_block);
+//    $("<div class='replay'>").appendTo(audio_block);
+//    var source = $("<source/>").attr("src", "");
+//    var audio = $("<audio>").appendTo(audio_block);
+//    audio.append(source);
+//    $("<input type='hidden'/>").appendTo(audio_block);
+//    $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
+//    
+//    var tmp_input = $("<input type='hidden' value=''/>").insertAfter(sub_container);
+//    var close = $("<div class='close_cont'>").insertAfter(tmp_input);
+//    $("<div class='audio_answer' contenteditable>" + sankoreLang.example + "</div>").insertAfter(close);
+//    container.insertBefore($(".add_block"));
+//}
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 //shuffles an array
 function shuffle( arr )
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/js/script.js
index 1a00bd2..85d5844 100644
--- a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/js/script.js	
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/js/script.js	
@@ -95,7 +95,7 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display","none");
-                $(".add_block").remove();
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     var tmp_array = [];
@@ -106,7 +106,7 @@ function start(){
                     .removeAttr("ondragleave")
                     .removeAttr("ondragover")
                     .removeAttr("ondrop")
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     var answer = ans_container.text();
                     ans_container.prev().val(answer)
                     ans_container.remove();
@@ -136,7 +136,7 @@ function start(){
                 $("#parameters").css("display","block");
                 $(".cont").each(function(){
                     var container = $(this);
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find("#sortable").removeClass("imgs_answers_red")
                     .removeClass("imgs_answers_green")
                     .addClass("imgs_answers_gray")
@@ -149,7 +149,7 @@ function start(){
                     $("<div class='audio_answer' contenteditable>" + container.find("ul").next().val() + "</div>").appendTo(container);
                     container.find("ul").remove();
                 });                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
@@ -163,9 +163,9 @@ function start(){
     });
     
     //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
     
     //adding new img
     $(".add_img").live("click", function(){
@@ -173,10 +173,10 @@ function start(){
     });
     
     //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
     $(".close_img").live("click", function(){
@@ -268,7 +268,6 @@ function exportData(){
         });
     }
     sankore.setPreference("ord_let", JSON.stringify(array_to_export));
-    sankore.setPreference("ord_let_locale", sankore.locale().substr(0,2));
     if($("#wgt_display").hasClass("selected"))
         sankore.setPreference("ord_let_state", "display");
     else
@@ -277,20 +276,19 @@ function exportData(){
 
 //import
 function importData(data){
-    var tmp_loc = sankore.preference("ord_let_locale","")
-    var tmp = 0;    
+   
     for(var i in data){        
         var tmp_array = [];
         var container = $("<div class='cont'>").appendTo("#data");
         var sub_container = $("<div class='sub_cont'>").appendTo(container);
         var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);   
         
-        $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+//        $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
         var text = $("<div class='text_cont'>").appendTo(sub_container);
         var audio_block = $("<div class='audio_block'>").appendTo(text);
         $("<div class='play'>").appendTo(audio_block);
         $("<div class='replay'>").appendTo(audio_block);
-        var source = $("<source/>").attr("src",((tmp_loc != "en")?"":"../../") + data[i].audio);
+        var source = $("<source/>").attr("src", data[i].audio);
         var audio = $("<audio>").appendTo(audio_block);
         audio.append(source);
         $("<input type='hidden'/>").appendTo(audio_block);
@@ -335,12 +333,12 @@ function showExample(){
     var sub_container = $("<div class='sub_cont'>").appendTo(container);
     var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);
 
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
     var text = $("<div class='text_cont'>").appendTo(sub_container);
     var audio_block = $("<div class='audio_block'>").appendTo(text);
     $("<div class='play'>").appendTo(audio_block);
     $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "objects/example.mp3");
+    var source = $("<source/>").attr("src", "../../objects/example_ru.mp3");
     var audio = $("<audio>").appendTo(audio_block);
     audio.append(source);
     $("<input type='hidden'/>").appendTo(audio_block);
@@ -365,37 +363,37 @@ function showExample(){
 }
 
 //add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-   
-    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    audio_block.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
-    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
-    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
-    
-    var tmp_input = $("<input type='hidden' value=''/>").insertAfter(sub_container);
-    var close = $("<div class='close_cont'>").insertAfter(tmp_input);
-    $("<div class='audio_answer' contenteditable>" + sankoreLang.example + "</div>").insertAfter(close);
-    container.insertBefore($(".add_block"));
-}
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//   
+//    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont'>").appendTo(sub_container);
+//    var audio_block = $("<div class='audio_block'>").appendTo(text);
+//    audio_block.attr("ondragenter", "return false;")
+//    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+//    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+//    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
+//    $("<div class='play'>").appendTo(audio_block);
+//    $("<div class='replay'>").appendTo(audio_block);
+//    var source = $("<source/>").attr("src", "");
+//    var audio = $("<audio>").appendTo(audio_block);
+//    audio.append(source);
+//    $("<input type='hidden'/>").appendTo(audio_block);
+//    $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
+//    
+//    var tmp_input = $("<input type='hidden' value=''/>").insertAfter(sub_container);
+//    var close = $("<div class='close_cont'>").insertAfter(tmp_input);
+//    $("<div class='audio_answer' contenteditable>" + sankoreLang.example + "</div>").insertAfter(close);
+//    container.insertBefore($(".add_block"));
+//}
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 //shuffles an array
 function shuffle( arr )
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/beep.mp3 b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/example_en.mp3
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/beep.mp3
rename to Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/example_en.mp3
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/objects/exemple.mp3 b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/example_fr.mp3
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/objects/exemple.mp3
copy to Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/example_fr.mp3
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/objects/example.mp3 b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/example_ru.mp3
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/objects/example.mp3
copy to Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/example_ru.mp3
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/config.xml
index 0c0cf70..9cc7856 100644
--- a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/config.xml	
+++ b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/config.xml	
@@ -6,7 +6,7 @@
         version="1.1"
         width="850"
         height="420" 
-	ub:resizable="true">
+	ub:resizable="false">
 		
 		<name>Words/Letters sortable</name>
 		<description>Sort the words/letters to make the right phrase/word.</description>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/index.html
index 2b442a4..f5e44aa 100644
--- a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/index.html	
+++ b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/index.html	
@@ -7,93 +7,33 @@
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
         <title>Template</title>
 
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="styles/master.css">
-        <link rel="stylesheet" type="text/css" href="styles/of_puppets.css">
         <!--Scripts-->
         <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="scripts/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="scripts/template2.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
-                    modeView();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                if(window.sankore)
-                                    sankore.enableDropOnWidget(false);
-                                modeView();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url: 'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }                
+                    }
+                });      
             });
         </script>
     </head>
 
     <body>
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>                    
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="ub-widget">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
+        
     </body>
 
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/en/index.html
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/fr/index.html
copy to Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/en/index.html
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/en/scripts/template2.js b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/en/scripts/template2.js
new file mode 100644
index 0000000..e28ec2d
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/en/scripts/template2.js	
@@ -0,0 +1,435 @@
+
+/*
+	Sankore API
+*/
+
+function startEditing()
+{
+    modeEdit();
+}
+
+function stopEditing()
+{
+    modeView();
+}
+
+function initialize()
+{
+	
+}
+
+function checkResponse()
+{
+    checkWord();
+}
+/*
+	/ END sankore api
+*/
+
+var sankoreLang = {
+    view: "Display", 
+    edit: "Edit",
+    example: "a*long*,*long*time*ago*...",
+    wgt_name: "Order words",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2>Order words </h2> </p>" +
+"<p><h3>Order words to reconstruct a correct sentence</h3></p>" +
+
+"<p>The interactivity displays labels in a random order. Drag and drop words in correct order. If the result is correct, the area turns in green.</p> "+
+"<p>“Reload” button resets the exercises. </p>" +
+
+"<p> Enter the “Edit” mode to : </p>" +
+"<ul> <li> choose the theme of the App : pad, slate, or none (by default : none), </li>" +
+"<li> determine the sentence and place separation between words. </li> </ul>" +
+
+ "<p>To create a new exercise : </p>" +
+"<ul><li>insert the desired sentence,</li>" +
+"<li> add spaces in the sentence, inserting “*” between each word. Do not place a star at the beginning or the end of your sentence.</li></ul>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+var word = "";
+var curWord = "";
+
+if(window.sankore){
+    word = (sankore.preference("rightOrdWords", ""))?sankore.preference("rightOrdWords", ""):sankoreLang.example;
+    curWord = (sankore.preference("currentOrdWords", ""))?sankore.preference("currentOrdWords", ""):"";
+} else {
+    word = sankoreLang.example;
+}
+
+// array of dom elements
+var letters = [];
+
+var editMode = false; // just a flag
+
+var wgtState = false; // just another flag
+
+// if use the "edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+// hardcoded parameters, not very good
+var input_width = 606;
+var widget_padding = 0;
+var min_view_width = 400;
+
+
+$(document).ready(function(){
+    if(window.sankore){
+        if(sankore.preference("ord_words_style","")){
+            changeStyle(sankore.preference("ord_words_style",""));
+        } else
+            changeStyle("3")
+    } else 
+        changeStyle("3")
+    $("#wgt_display").text(sankoreLang.view);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);    
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                modeView();
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                modeEdit();
+            }
+        }
+    });
+    
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#ub-widget").show();
+            });
+        } else {            
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#ub-widget").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if(wgtState)
+            $("#wgt_display").trigger("click");
+        else
+        {
+            $( "#mp_word" ).empty();
+	
+            // create new set of letters
+            var letters;
+            letters = shuffle( createWordLetters( word ) );
+    
+            for( i in letters ){
+                $("#mp_word").append( letters[i] );
+            }
+	
+            // in sankore api there would be a function to check 
+            // the answer, so no update parameter would be needed
+            if( !isSankore ){
+                $( "#mp_word" ).sortable( {
+                    update: checkWord
+                } );
+            } else $( "#mp_word" ).sortable();
+
+            // adjustWidth
+            var totalLettersWidth = 0;
+            for( i in letters ){
+                var currentWidth = $( letters[i] ).outerWidth( true );
+                totalLettersWidth += currentWidth;
+            }
+            totalLettersWidth += 1;
+
+            var width = Math.max(
+                totalLettersWidth,
+                min_view_width
+                );
+	
+            // shift the words to the right to center them
+            if( width > totalLettersWidth ){
+                $( "#mp_word" ).css( "margin-left", Math.round( (width - totalLettersWidth)/2 ) );
+            }
+            else{
+                $( "#mp_word" ).css( "margin-left", 0 );
+            }
+        }
+    });    
+    
+})
+
+/*
+=================
+createWordLetters
+=================
+returns array of dom elements
+*/
+function createWordLetters( word )
+{
+    var ch, el;
+    var letters = [];
+	
+    if( word.indexOf( '*' ) != -1 )
+    {
+        var tmp = word.split( '*' );
+        for( i in tmp )
+        {
+            ch = tmp[i];
+            el = document.createElement( "div" );
+            $(el).addClass( "letter" ).text( ch );
+            letters.push( el );
+        }
+    }
+    else
+    {
+        for( var i = 0; i < word.length; i++ )
+        {
+            ch = word.charAt( i );
+            el = document.createElement( "div" );
+            $(el).addClass( "letter" ).text( ch );
+            letters.push( el );
+        }
+    }
+    return letters;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select option:first").attr('selected',true);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:first").next().attr('selected',true);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:last").attr('selected',true);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+/*
+=====================
+checkWord
+=====================
+scans the letters and checks 
+if they are in the right order
+*/
+function checkWord()
+{	
+    var str = "";
+    $( "#mp_word .letter" ).each( function(){
+        str += $(this).text();
+    });
+    var w = word;
+    while( w.indexOf( '*' ) != -1 )
+    {
+        w = w.replace( '*', '' );
+    }
+    //alert(str + " | " + w)
+    if( str == w ){
+        $( "#mp_word .letter" ).addClass( "right" );
+    //message( "Right!" );
+    } else {
+        $( "#mp_word .letter" ).removeClass( "right" );
+    }
+}
+
+/*
+==============
+shuffle
+==============
+shuffles an array
+*/
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+
+
+/*
+==================
+modeView()
+==================
+turns the widget into the view mode
+*/
+function modeView()
+{
+    if( editMode ){
+        word = $( "#mp_word .wgt_cont" ).val();
+    }
+    
+    wgtState = false;
+	
+    // clean the previous word
+    $( "#mp_word" ).empty();
+	
+    // create new set of letters
+    var letters;
+    if(window.sankore && curWord && !editMode)
+        letters = createWordLetters( curWord );
+    else
+        letters = shuffle( createWordLetters( word ) );
+    
+    for( i in letters ){
+        $("#mp_word").append( letters[i] );
+    }
+	
+    // in sankore api there would be a function to check 
+    // the answer, so no update parameter would be needed
+    if( !isSankore ){
+        $( "#mp_word" ).sortable( {
+            update: checkWord
+        } );
+    } else $( "#mp_word" ).sortable();
+
+    // adjustWidth
+    var totalLettersWidth = 0;
+    for( i in letters ){
+        var currentWidth = $( letters[i] ).outerWidth( true );
+        totalLettersWidth += currentWidth;
+    }
+    totalLettersWidth += 1;
+
+    var width = Math.max(
+        totalLettersWidth,
+        min_view_width
+        );
+	
+    // shift the words to the right to center them
+    if( width > totalLettersWidth ){
+        $( "#mp_word" ).css( "margin-left", Math.round( (width - totalLettersWidth)/2 ) );
+    }
+    else{
+        $( "#mp_word" ).css( "margin-left", 0 );
+    }
+	
+    checkWord();
+}
+
+/*
+================
+modeEdit
+================
+*/
+function modeEdit()
+{
+    editMode = true;
+    wgtState = true;
+    $( "#mp_word").sortable( "destroy" );
+    $( "#mp_word").css( "margin-left", 0 ).empty().append('<textarea class="wgt_cont">'+word+'</textarea>');
+
+}
+
+if (window.widget) {
+    window.widget.onleave = function(){
+        sankore.setPreference("ord_words_style", $("#style_select").find("option:selected").val());
+        if($( "#mp_word .wgt_cont" ).val())
+        {
+            modeView();
+            var str = "";
+            $( "#mp_word .letter" ).each( function(){
+                str += $(this).text() + "*";
+            });        
+            str = str.substr(0, str.length - 1);        
+            sankore.setPreference("currentOrdWords", str);           
+            modeEdit();
+        }
+        else{
+            str = "";
+            $( "#mp_word .letter" ).each( function(){
+                str += $(this).text() + "*";
+            });        
+            str = str.substr(0, str.length - 1);        
+            sankore.setPreference("currentOrdWords", str);
+        }
+        sankore.setPreference("rightOrdWords", word);
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/scripts/template2.js b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/scripts/template2.js
deleted file mode 100644
index 127157e..0000000
--- a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/scripts/template2.js	
+++ /dev/null
@@ -1,435 +0,0 @@
-
-/*
-	Sankore API
-*/
-
-function startEditing()
-{
-    modeEdit();
-}
-
-function stopEditing()
-{
-    modeView();
-}
-
-function initialize()
-{
-	
-}
-
-function checkResponse()
-{
-    checkWord();
-}
-/*
-	/ END sankore api
-*/
-
-var sankoreLang = {
-    view: "Display", 
-    edit: "Edit",
-    example: "a*long*,*long*time*ago*...",
-    wgt_name: "Order words",
-    reload: "Reload",
-    slate: "slate",
-    pad: "pad",
-    none: "none",
-    help: "Help",
-    help_content: 
-"<p><h2>Order words </h2> </p>" +
-"<p><h3>Order words to reconstruct a correct sentence</h3></p>" +
-
-"<p>The interactivity displays labels in a random order. Drag and drop words in correct order. If the result is correct, the area turns in green.</p> "+
-"<p>“Reload” button resets the exercises. </p>" +
-
-"<p> Enter the “Edit” mode to : </p>" +
-"<ul> <li> choose the theme of the App : pad, slate, or none (by default : none), </li>" +
-"<li> Determine the sentence and place separation between words. </li> </ul>" +
-
- "<p>To create a new exercise : </p>" +
-"<ul><li>insert the desired sentence,</li>" +
-"<li> To add spaces in the sentence, insert “*” between each word. Do not place a star at the beginning or the end of your sentence.</li></ul>" +
-"<p>“Display” button comes back to the activity.</p>",
-    theme: "Theme"
-};
-
-var word = "";
-var curWord = "";
-
-if(window.sankore){
-    word = (sankore.preference("rightOrdWords", ""))?sankore.preference("rightOrdWords", ""):sankoreLang.example;
-    curWord = (sankore.preference("currentOrdWords", ""))?sankore.preference("currentOrdWords", ""):"";
-} else {
-    word = sankoreLang.example;
-}
-
-// array of dom elements
-var letters = [];
-
-var editMode = false; // just a flag
-
-var wgtState = false; // just another flag
-
-// if use the "edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-// hardcoded parameters, not very good
-var input_width = 606;
-var widget_padding = 0;
-var min_view_width = 400;
-
-
-$(document).ready(function(){
-    if(window.sankore){
-        if(sankore.preference("ord_words_style","")){
-            changeStyle(sankore.preference("ord_words_style",""));
-        } else
-            changeStyle("3")
-    } else 
-        changeStyle("3")
-    $("#wgt_display").text(sankoreLang.view);
-    $("#wgt_edit").text(sankoreLang.edit);
-    $("#wgt_help").text(sankoreLang.help);
-    $("#help").html(sankoreLang.help_content);    
-    $("#style_select option[value='1']").text(sankoreLang.slate);
-    $("#style_select option[value='2']").text(sankoreLang.pad);
-    $("#style_select option[value='3']").text(sankoreLang.none);
-    var tmpl = $("div.inline label").html();
-    $("div.inline label").html(sankoreLang.theme + tmpl)
-    
-    $("#style_select").change(function (event){
-        changeStyle($(this).find("option:selected").val());
-    })
-    
-    $("#wgt_display, #wgt_edit").click(function(event){
-        if(this.id == "wgt_display"){
-            if(!$(this).hasClass("selected")){                
-                $(this).addClass("selected");
-                $("#wgt_edit").removeClass("selected");
-                $("#parameters").css("display","none");                
-                $(this).css("display", "none");
-                $("#wgt_edit").css("display", "block");
-                modeView();
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#wgt_display").removeClass("selected");
-                $("#parameters").css("display","block");                
-                $(this).css("display", "none");
-                $("#wgt_display").css("display", "block");
-                modeEdit();
-            }
-        }
-    });
-    
-    $("#wgt_name").text(sankoreLang.wgt_name);
-    
-    $("#wgt_help").click(function(){
-        var tmp = $(this);
-        if($(this).hasClass("open")){
-            $(this).removeClass("help_pad").removeClass("help_wood")
-            $("#help").slideUp("100", function(){
-                tmp.removeClass("open");
-                $("#ub-widget").show();
-            });
-        } else {            
-            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
-            $("#ub-widget").hide();
-            $("#help").slideDown("100", function(){
-                tmp.addClass("open");
-            });
-        }
-    });
-    
-    $("#wgt_reload").text(sankoreLang.reload).click(function(){
-        if(wgtState)
-            $("#wgt_display").trigger("click");
-        else
-        {
-            $( "#mp_word" ).empty();
-	
-            // create new set of letters
-            var letters;
-            letters = shuffle( createWordLetters( word ) );
-    
-            for( i in letters ){
-                $("#mp_word").append( letters[i] );
-            }
-	
-            // in sankore api there would be a function to check 
-            // the answer, so no update parameter would be needed
-            if( !isSankore ){
-                $( "#mp_word" ).sortable( {
-                    update: checkWord
-                } );
-            } else $( "#mp_word" ).sortable();
-
-            // adjustWidth
-            var totalLettersWidth = 0;
-            for( i in letters ){
-                var currentWidth = $( letters[i] ).outerWidth( true );
-                totalLettersWidth += currentWidth;
-            }
-            totalLettersWidth += 1;
-
-            var width = Math.max(
-                totalLettersWidth,
-                min_view_width
-                );
-	
-            // shift the words to the right to center them
-            if( width > totalLettersWidth ){
-                $( "#mp_word" ).css( "margin-left", Math.round( (width - totalLettersWidth)/2 ) );
-            }
-            else{
-                $( "#mp_word" ).css( "margin-left", 0 );
-            }
-        }
-    });    
-    
-})
-
-/*
-=================
-createWordLetters
-=================
-returns array of dom elements
-*/
-function createWordLetters( word )
-{
-    var ch, el;
-    var letters = [];
-	
-    if( word.indexOf( '*' ) != -1 )
-    {
-        var tmp = word.split( '*' );
-        for( i in tmp )
-        {
-            ch = tmp[i];
-            el = document.createElement( "div" );
-            $(el).addClass( "letter" ).text( ch );
-            letters.push( el );
-        }
-    }
-    else
-    {
-        for( var i = 0; i < word.length; i++ )
-        {
-            ch = word.charAt( i );
-            el = document.createElement( "div" );
-            $(el).addClass( "letter" ).text( ch );
-            letters.push( el );
-        }
-    }
-    return letters;
-}
-
-//changing the style
-function changeStyle(val){
-    switch(val){
-        case "1":
-            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
-            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
-            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
-            $("#wgt_name").removeClass("pad_color");
-            $("#wgt_display").addClass("display_wood");
-            $("#style_select option:first").attr('selected',true);
-            $("body, html").removeClass("without_radius").addClass("radius_ft");
-            break;
-        case "2":
-            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select option:first").next().attr('selected',true);
-            $("body, html").removeClass("without_radius").removeClass("radius_ft");
-            break;
-        case "3":
-            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
-            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
-            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
-            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
-            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
-            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
-            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
-            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select option:last").attr('selected',true);
-            $("body, html").addClass("without_radius").removeClass("radius_ft");
-            break;
-    }
-}
-
-/*
-=====================
-checkWord
-=====================
-scans the letters and checks 
-if they are in the right order
-*/
-function checkWord()
-{	
-    var str = "";
-    $( "#mp_word .letter" ).each( function(){
-        str += $(this).text();
-    });
-    var w = word;
-    while( w.indexOf( '*' ) != -1 )
-    {
-        w = w.replace( '*', '' );
-    }
-    //alert(str + " | " + w)
-    if( str == w ){
-        $( "#mp_word .letter" ).addClass( "right" );
-    //message( "Right!" );
-    } else {
-        $( "#mp_word .letter" ).removeClass( "right" );
-    }
-}
-
-/*
-==============
-shuffle
-==============
-shuffles an array
-*/
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-
-
-/*
-==================
-modeView()
-==================
-turns the widget into the view mode
-*/
-function modeView()
-{
-    if( editMode ){
-        word = $( "#mp_word .wgt_cont" ).val();
-    }
-    
-    wgtState = false;
-	
-    // clean the previous word
-    $( "#mp_word" ).empty();
-	
-    // create new set of letters
-    var letters;
-    if(window.sankore && curWord && !editMode)
-        letters = createWordLetters( curWord );
-    else
-        letters = shuffle( createWordLetters( word ) );
-    
-    for( i in letters ){
-        $("#mp_word").append( letters[i] );
-    }
-	
-    // in sankore api there would be a function to check 
-    // the answer, so no update parameter would be needed
-    if( !isSankore ){
-        $( "#mp_word" ).sortable( {
-            update: checkWord
-        } );
-    } else $( "#mp_word" ).sortable();
-
-    // adjustWidth
-    var totalLettersWidth = 0;
-    for( i in letters ){
-        var currentWidth = $( letters[i] ).outerWidth( true );
-        totalLettersWidth += currentWidth;
-    }
-    totalLettersWidth += 1;
-
-    var width = Math.max(
-        totalLettersWidth,
-        min_view_width
-        );
-	
-    // shift the words to the right to center them
-    if( width > totalLettersWidth ){
-        $( "#mp_word" ).css( "margin-left", Math.round( (width - totalLettersWidth)/2 ) );
-    }
-    else{
-        $( "#mp_word" ).css( "margin-left", 0 );
-    }
-	
-    checkWord();
-}
-
-/*
-================
-modeEdit
-================
-*/
-function modeEdit()
-{
-    editMode = true;
-    wgtState = true;
-    $( "#mp_word").sortable( "destroy" );
-    $( "#mp_word").css( "margin-left", 0 ).empty().append('<textarea class="wgt_cont">'+word+'</textarea>');
-
-}
-
-if (window.widget) {
-    window.widget.onleave = function(){
-        sankore.setPreference("ord_words_style", $("#style_select").find("option:selected").val());
-        if($( "#mp_word .wgt_cont" ).val())
-        {
-            modeView();
-            var str = "";
-            $( "#mp_word .letter" ).each( function(){
-                str += $(this).text() + "*";
-            });        
-            str = str.substr(0, str.length - 1);        
-            sankore.setPreference("currentOrdWords", str);           
-            modeEdit();
-        }
-        else{
-            str = "";
-            $( "#mp_word .letter" ).each( function(){
-                str += $(this).text() + "*";
-            });        
-            str = str.substr(0, str.length - 1);        
-            sankore.setPreference("currentOrdWords", str);
-        }
-        sankore.setPreference("rightOrdWords", word);
-    }
-}
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/config.xml
index 356b87b..7a43e58 100644
--- a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/config.xml	
+++ b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/config.xml	
@@ -5,8 +5,8 @@
         id="http://www.example.net/widgets/helloworld" 
         version="1.0"
         width="850"
-        height="400" 
-		ub:resizable="true">
+        height="500" 
+		ub:resizable="false">
 		
 		<name>Phrases sortable</name>
 		<description>Sort the phrases to make the right sentence.</description>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/index.html
index b733713..a82a4bd 100644
--- a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/index.html	
+++ b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/index.html	
@@ -3,92 +3,30 @@
     <head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
         <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="styles/master.css">
-        <link rel="stylesheet" type="text/css" href="styles/of_puppets.css">
         <!--Scripts-->
         <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="scripts/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="scripts/template2.js"></script>
         <script type="text/javascript">
             $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
-                    modeView();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                if(window.sankore)
-                                    sankore.enableDropOnWidget(false);
-                                modeView();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url: 'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }                
+                    }
+                });      
             });
         </script>
     </head>
 
     <body>
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="ub-widget">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
-
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
+        
     </body>
 
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/en/index.html b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/en/index.html
new file mode 100644
index 0000000..9253317
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/en/index.html	
@@ -0,0 +1,68 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/of_puppets.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="script/template2.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){          
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
+                modeView();
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/scripts/template2.js b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/en/script/template2.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/scripts/template2.js
rename to Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/en/script/template2.js
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/config.xml
index a7ce92c..b90d53f 100644
--- a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/config.xml
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/config.xml
@@ -4,8 +4,8 @@
         id="http://uniboard.mnemis.com/widgets/notes" 
         version="1.2"
         width="950"
-        height="600" 
-        ub:resizable="true">     
+        height="530" 
+        ub:resizable="false">     
    
 		<name>Notes</name>
 		<author href="http://www.getuniboard.com"
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/index.html
index 6f206bb..75790f3 100644
--- a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/index.html
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/index.html
@@ -3,86 +3,30 @@
     <head>
         <title>D'n'd</title>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
         <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url: 'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }
+                    }
+                });      
             });
         </script>
     </head>
     <body>        
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
        
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="data">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
-        
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
     </body>
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/js/script.js
deleted file mode 100644
index 369719d..0000000
--- a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/js/script.js
+++ /dev/null
@@ -1,563 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    short_desc: "Select animals from the following list:", 
-    add: "Add new block",
-    enter: "Enter your instruction here ...",
-    cat: "cat",
-    ball: "ball",
-    shovel: "shovel",
-    dog: "dog",
-    tree: "tree",
-    wgt_name: "Select",
-    reload: "Reload",
-    slate: "slate",
-    pad: "pad",
-    none: "none",
-    help: "Help",
-    help_content: 
-"<p> <h2>Select</h2> </p>" +
-"<p> <h3> Select the correct element in the list </h3> </p>" +
-"<p> Choose correct element(s). If the result is correct, the area turns in green.</p>" +
-"<p> “Reload “button resets the exercises.</p>" +
-"<p> Enter the “Edit” mode to :</p>" +
-"<ul><li> choose the theme of the App : pad, slate, or none (by default : none),</li>" +
-"<li> modify an exercise or create new ones in the same activity.</li></ul>" +
-"<p>To create a new exercise :</p>" +
-"<ul> <li> click on “New block”,</li>" +
-"<li> insert an instruction clicking on the text field “Enter your instruction here ... ”,</li>" +
-"<li> add text fields with “+T”,</li>" +
-"<li> select the correct answer clicking in the box,</li>" +
-"<li> change the order of images by dragging them.</li> </ul>" +
-"<p> To delete a frame, click the cross (X).</p>" +
-"<p> To delete a whole exercise, click the cross to the left. </p>" +
-"<p> “Display” button comes back to the activity.</p>",
-    theme: "Theme"
-};
-
-//main function
-function start(){
-    
-    $("#wgt_display").text(sankoreLang.display);
-    $("#wgt_edit").text(sankoreLang.edit);
-    $("#wgt_name").text(sankoreLang.wgt_name);
-    $("#wgt_reload").text(sankoreLang.reload);
-    $("#wgt_help").text(sankoreLang.help);
-    $("#help").html(sankoreLang.help_content);
-    $("#style_select option[value='1']").text(sankoreLang.slate);
-    $("#style_select option[value='2']").text(sankoreLang.pad);
-    $("#style_select option[value='3']").text(sankoreLang.none);
-    var tmpl = $("div.inline label").html();
-    $("div.inline label").html(sankoreLang.theme + tmpl)
-    
-    if(window.sankore){
-        if(sankore.preference("selectionner","")){
-            var data = jQuery.parseJSON(sankore.preference("selectionner",""));
-            importData(data);
-        } else 
-            showExample();
-        if(sankore.preference("sel_style","")){
-            changeStyle(sankore.preference("sel_style",""));
-            $("#style_select").val(sankore.preference("sel_style",""));
-        } else
-            changeStyle("3")
-    } 
-    else 
-        showExample();
-    
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-            sankore.setPreference("sel_style", $("#style_select").find("option:selected").val());
-        }
-    }
-    
-    $("#wgt_help").click(function(){
-        var tmp = $(this);
-        if($(this).hasClass("open")){
-            $(this).removeClass("help_pad").removeClass("help_wood")
-            $("#help").slideUp("100", function(){
-                tmp.removeClass("open");
-                $("#data").show();
-            });
-        } else {
-            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
-            $("#data").hide();
-            $("#help").slideDown("100", function(){
-                tmp.addClass("open");
-            });
-        }
-    });
-    
-    $("#wgt_reload").click(function(){
-        if($("#wgt_display").hasClass("selected")){
-            $(".cont").each(function(){
-                var container = $(this);
-                container.find(".img_block, .text_block").each(function(){
-                    $(this).find("input:checkbox").removeAttr("checked");
-                    $(this).find("input:checkbox").parent().parent().removeClass("right");
-                });          
-            });
-        }
-        else
-            $("#wgt_display").trigger("click");
-    });
-    
-    $("#style_select").change(function (event){
-        changeStyle($(this).find("option:selected").val());
-    })
-    
-    $("#wgt_display, #wgt_edit").click(function(event){
-        if(this.id == "wgt_display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#wgt_edit").removeClass("selected");
-                $("#parameters").css("display","none");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    container.find(".text_cont").removeAttr("contenteditable");
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".imgs_cont").removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop");
-                    container.find(".img_block, .text_block").each(function(){
-                        $(this).find(".close_img").remove();  
-                        $(this).find(".text_subblock").removeAttr("contenteditable");
-                        $(this).find("input:checkbox").removeAttr("checked")
-                    });                    
-                
-                });
-                $(this).css("display", "none");
-                $("#wgt_edit").css("display", "block");
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#wgt_display").removeClass("selected");
-                $("#parameters").css("display","block");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".text_cont").attr("contenteditable","true");
-                    container.find(".imgs_cont").removeClass("right")
-                    .attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('over'); return false;")
-                    .attr("ondragover", "$(this).addClass('over'); return false;")
-                    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
-                    
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block, .text_block").each(function(){
-                        $("<div class='close_img'>").appendTo($(this));
-                        if($(this).find("input:hidden").val() == 0)
-                            $(this).find("input:checkbox").attr('checked', false);
-                        else
-                            $(this).find("input:checkbox").attr('checked', true);
-                        $(this).find(".text_subblock").attr("contenteditable","true");                        
-                    });
-                    add_img.insertBefore(container.find(".clear"));
-                });
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
-                $(this).css("display", "none");
-                $("#wgt_display").css("display", "block");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //checkbox events
-    $("input:checkbox").live("click", function(){
-        if($("#wgt_display").hasClass("selected")){
-            var flag = true;
-            var block = $(this).parent().parent();
-            block.find(".text_block, .img_block, .audio_block").each(function(){
-                if($(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 0)                    
-                    flag = false;                
-                else if(!$(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 1)
-                    flag = false;          
-            });
-            if(flag)
-                block.addClass("right");
-            else
-                block.removeClass("right");
-        } else {
-            if($(this).is(":checked"))
-                $(this).parent().find("input:hidden").val(1);
-            else
-                $(this).parent().find("input:hidden").val(0);
-        }
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addTextBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        $(this).parent().remove();
-    });
-    
-    $("#wgt_reload, #wgt_display, #wgt_edit").live("mouseover",function(){
-        exportData();
-    })
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    $(".cont").each(function(){
-        var cont_obj = new Object();
-        cont_obj.text = $(this).find(".text_cont").text();
-        cont_obj.blocks = [];
-        $(this).find(".img_block, .audio_block, .text_block").each(function(){
-            var tmp_block = new Object();
-            if($("#wgt_display").hasClass("selected"))
-                tmp_block.state = "display";
-            else
-                tmp_block.state = "edit";
-            if($(this).hasClass("img_block")){
-                if($(this).find(".audio_block").size() == 0){
-                    tmp_block.src = $(this).find("img").attr("src");
-                    tmp_block.hidden = $(this).find("input:hidden").val();
-                    tmp_block.h = $(this).find("img").height();
-                    tmp_block.w = $(this).find("img").width(); 
-                    tmp_block.type = "img";
-                    tmp_block.checked = $(this).find("input:checkbox").attr("checked");
-                }
-            }
-            if($(this).hasClass("audio_block")){
-                tmp_block.src = $(this).find("source").attr("src");
-                tmp_block.hidden = $(this).parent().find("input:hidden").val();
-                tmp_block.type = "audio";
-                tmp_block.checked = $(this).parent().find("input:checkbox").attr("checked");
-            }
-            if($(this).hasClass("text_block")){
-                tmp_block.text = $(this).find(".text_subblock").text();
-                tmp_block.hidden = $(this).find("input:hidden").val();
-                tmp_block.type = "text";
-                tmp_block.checked = $(this).find("input:checkbox").attr("checked");
-            }           
-            cont_obj.blocks.push(tmp_block);
-        });
-        array_to_export.push(cont_obj);
-    });
-    if(window.sankore)
-        sankore.setPreference("selectionner", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        
-        var container = $("<div class='cont'>").appendTo("#data");
-        var sub_container = $("<div class='sub_cont'>").appendTo(container);
-        var imgs_container = $("<div class='imgs_cont'>").appendTo(container); 
-        $("<div class='clear'>").appendTo(imgs_container);
-        
-        $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
-        $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-        
-        for(var j in data[i].blocks){
-            switch(data[i].blocks[j].type){
-                case "text":
-                    var text_block = $("<div class='text_block'>").insertBefore(imgs_container.find(".clear"));
-                    $("<div class='text_subblock'>" + data[i].blocks[j].text + "</div>").appendTo(text_block); 
-                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(text_block); 
-                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(text_block);
-                    break;
-                case "img":
-                    var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore(imgs_container.find(".clear"));
-                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_block); 
-                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(img_block)
-                    var img = $("<img src=\"" + data[i].blocks[j].src + "\" style=\"display: inline;\"/>").appendTo(img_block);
-                    img.height(data[i].blocks[j].h);
-                    if((120 - data[i].blocks[j].h) > 0)
-                        img.css("margin",(120 - data[i].blocks[j].h)/2 + "px 0");
-                    break;
-                case "audio":
-                    var img_tmp = $("<div class='img_block'>").insertBefore(imgs_container.find(".clear"));
-                    var audio_block = $("<div class='audio_block'>").appendTo(img_tmp);
-                    $("<div class='play'>").appendTo(audio_block);
-                    $("<div class='replay'>").appendTo(audio_block);
-                    var source = $("<source/>").attr("src", data[i].blocks[j].src);
-                    var audio = $("<audio>").appendTo(audio_block);
-                    audio.append(source);
-                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_tmp); 
-                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(img_tmp)
-                    break;
-            }
-        }
-    }
-    
-    var block = $("input:checkbox").parent().parent();
-    block.each(function(){
-        var flag = true;
-        $(this).find(".text_block, .img_block, .audio_block").each(function(){
-            if($(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 0)                    
-                flag = false;                
-            else if(!$(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 1)
-                flag = false;          
-        });
-        if(flag)
-            $(this).addClass("right");
-        else
-            $(this).removeClass("right");
-    })
-}
-
-//example
-function showExample(){
-    
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
-    
-    var tmp1 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.cat + "</div>").appendTo(tmp1); 
-    $("<input type='hidden' value='1'/>").appendTo(tmp1); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp1)
-    var tmp2 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.ball + "</div>").appendTo(tmp2); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp2); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp2)
-    var tmp3 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.shovel + "</div>").appendTo(tmp3); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp3); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp3)
-    var tmp4 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.dog + "</div>").appendTo(tmp4); 
-    $("<input type='hidden' value='1'/>").appendTo(tmp4); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp4)
-    var tmp5 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.tree + "</div>").appendTo(tmp5); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp5); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp5)
-    $("<div class='clear'>").appendTo(imgs_container);
-    
-    container.appendTo("#data")
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('over'); return false;")
-    .attr("ondragover", "$(this).addClass('over'); return false;")
-    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
-    
-    $("<div class='close_cont'>").appendTo(container);
-    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<div class='add_img'>").appendTo(imgs_container);
-    $("<div class='clear'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addTextBlock(dest){
-    var tmp = $("<div class='text_block'>").insertBefore(dest)
-    $("<div class='text_subblock' contenteditable='true'>" + sankoreLang.enter + "</div>").appendTo(tmp); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp);
-    $("<div class='close_img'>").appendTo(tmp);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//changing the style
-function changeStyle(val){
-    switch(val){
-        case "1":
-            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
-            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
-            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
-            $("#wgt_name").removeClass("pad_color");
-            $("#wgt_display").addClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").addClass("radius_ft");
-            break;
-        case "2":
-            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
-            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
-            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
-            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
-            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
-            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
-            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
-            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").removeClass("without_radius").removeClass("radius_ft");
-            break;
-        case "3":
-            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
-            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
-            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
-            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
-            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
-            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
-            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
-            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
-            $("#wgt_help").addClass("pad_color").addClass("pad_help");
-            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
-            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
-            $("#wgt_name").addClass("pad_color");
-            $("#wgt_display").removeClass("display_wood");
-            $("#style_select").val(val);
-            $("body, html").addClass("without_radius").removeClass("radius_ft");
-            break;
-    }
-}
-
-function onDropTarget(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){  
-            var img_tmp = $("<div class='img_block'>").insertBefore($(obj).find(".add_img"));
-            var audio_block = $("<div class='audio_block'>").appendTo(img_tmp)
-            $("<div class='close_img'>").appendTo(img_tmp);
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src", tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-            $("<input type='hidden' value='0'/>").appendTo(img_tmp); 
-            $("<input type='checkbox' class='ch_box'/>").appendTo(img_tmp)
-        } else {
-            var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore($(obj).find(".add_img"));
-            $("<div class='close_img'>").appendTo(img_block);
-            $("<input type='hidden' value='0'/>").appendTo(img_block); 
-            $("<input type='checkbox' class='ch_box'/>").appendTo(img_block)
-            var tmp_img = $("<img src=\"" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
-            setTimeout(function(){
-                if(tmp_img.height() >= tmp_img.width())
-                    tmp_img.attr("height", "120");
-                else{
-                    tmp_img.attr("width","120");
-                    var h = tmp_img.height();
-                    tmp_img.attr("height",h);
-                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                }
-            }, 6);
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-    
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/en/index.html b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/en/index.html
new file mode 100644
index 0000000..81735dc
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/en/index.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){  
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/en/js/script.js b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/en/js/script.js
new file mode 100644
index 0000000..711e7ff
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/en/js/script.js
@@ -0,0 +1,559 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    short_desc: "Select animals from the following list:", 
+    add: "Add new block",
+    enter: "Enter your instruction here ...",
+    cat: "cat",
+    ball: "ball",
+    shovel: "shovel",
+    dog: "dog",
+    tree: "tree",
+    wgt_name: "Select",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p> <h2>Select</h2> </p>" +
+"<p> <h3> Select the correct element in the list </h3> </p>" +
+"<p> Choose correct element(s). If the result is correct, the area turns in green.</p>" +
+"<p> “Reload “button resets the exercises.</p>" +
+"<p> Enter the “Edit” mode to :</p>" +
+"<ul><li> choose the theme of the App : pad, slate, or none (by default : none),</li>" +
+"<li> modify the exercise.</li></ul>" +
+"<p>In edition mode :</p>" +
+"<ul><li> edit the instruction clicking on the text field,</li>" +
+"<li> add text fields with “+T”,</li>" +
+"<li> select the correct answer clicking in the box,</li>" +
+"<li> change the order of images by dragging them,</li>" +
+"<li> delete a frame clicking the cross (X),</li>" +
+"<li> “Display” button comes back to the activity.</li></ul>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("selectionner","")){
+            var data = jQuery.parseJSON(sankore.preference("selectionner",""));
+            importData(data);
+        } else 
+            showExample();
+        if(sankore.preference("sel_style","")){
+            changeStyle(sankore.preference("sel_style",""));
+            $("#style_select").val(sankore.preference("sel_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+            sankore.setPreference("sel_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $(".cont").each(function(){
+                var container = $(this);
+                container.find(".img_block, .text_block").each(function(){
+                    $(this).find("input:checkbox").removeAttr("checked");
+                    $(this).find("input:checkbox").parent().parent().removeClass("right");
+                });          
+            });
+        }
+        else
+            $("#wgt_display").trigger("click");
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+//                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+                    container.find(".text_cont").removeAttr("contenteditable");
+                    container.find(".add_img").remove();
+//                    container.find(".close_cont").remove();
+                    container.find(".imgs_cont").removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop");
+                    container.find(".img_block, .text_block").each(function(){
+                        $(this).find(".close_img").remove();  
+                        $(this).find(".text_subblock").removeAttr("contenteditable");
+                        $(this).find("input:checkbox").removeAttr("checked")
+                    });                    
+                
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+//                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".text_cont").attr("contenteditable","true");
+                    container.find(".imgs_cont").removeClass("right")
+                    .attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('over'); return false;")
+                    .attr("ondragover", "$(this).addClass('over'); return false;")
+                    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
+                    
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block, .text_block").each(function(){
+                        $("<div class='close_img'>").appendTo($(this));
+                        if($(this).find("input:hidden").val() == 0)
+                            $(this).find("input:checkbox").attr('checked', false);
+                        else
+                            $(this).find("input:checkbox").attr('checked', true);
+                        $(this).find(".text_subblock").attr("contenteditable","true");                        
+                    });
+                    add_img.insertBefore(container.find(".clear"));
+                });
+                
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
+    
+    //checkbox events
+    $("input:checkbox").live("click", function(){
+        if($("#wgt_display").hasClass("selected")){
+            var flag = true;
+            var block = $(this).parent().parent();
+            block.find(".text_block, .img_block, .audio_block").each(function(){
+                if($(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 0)                    
+                    flag = false;                
+                else if(!$(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 1)
+                    flag = false;          
+            });
+            if(flag)
+                block.addClass("right");
+            else
+                block.removeClass("right");
+        } else {
+            if($(this).is(":checked"))
+                $(this).parent().find("input:hidden").val(1);
+            else
+                $(this).parent().find("input:hidden").val(0);
+        }
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addTextBlock($(this));
+    });
+    
+    //deleting a block
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        $(this).parent().remove();
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").live("mouseover",function(){
+        exportData();
+    })
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    $(".cont").each(function(){
+        var cont_obj = new Object();
+        cont_obj.text = $(this).find(".text_cont").text();
+        cont_obj.blocks = [];
+        $(this).find(".img_block, .audio_block, .text_block").each(function(){
+            var tmp_block = new Object();
+            if($("#wgt_display").hasClass("selected"))
+                tmp_block.state = "display";
+            else
+                tmp_block.state = "edit";
+            if($(this).hasClass("img_block")){
+                if($(this).find(".audio_block").size() == 0){
+                    tmp_block.src = $(this).find("img").attr("src").replace("../../","");
+                    tmp_block.hidden = $(this).find("input:hidden").val();
+                    tmp_block.h = $(this).find("img").height();
+                    tmp_block.w = $(this).find("img").width(); 
+                    tmp_block.type = "img";
+                    tmp_block.checked = $(this).find("input:checkbox").attr("checked");
+                }
+            }
+            if($(this).hasClass("audio_block")){
+                tmp_block.src = $(this).find("source").attr("src").replace("../../","");
+                tmp_block.hidden = $(this).parent().find("input:hidden").val();
+                tmp_block.type = "audio";
+                tmp_block.checked = $(this).parent().find("input:checkbox").attr("checked");
+            }
+            if($(this).hasClass("text_block")){
+                tmp_block.text = $(this).find(".text_subblock").text();
+                tmp_block.hidden = $(this).find("input:hidden").val();
+                tmp_block.type = "text";
+                tmp_block.checked = $(this).find("input:checkbox").attr("checked");
+            }           
+            cont_obj.blocks.push(tmp_block);
+        });
+        array_to_export.push(cont_obj);
+    });
+    if(window.sankore)
+        sankore.setPreference("selectionner", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    for(var i in data){
+        
+        var container = $("<div class='cont'>").appendTo("#data");
+        var sub_container = $("<div class='sub_cont'>").appendTo(container);
+        var imgs_container = $("<div class='imgs_cont'>").appendTo(container); 
+        $("<div class='clear'>").appendTo(imgs_container);
+        
+//        $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+        $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+        
+        for(var j in data[i].blocks){
+            switch(data[i].blocks[j].type){
+                case "text":
+                    var text_block = $("<div class='text_block'>").insertBefore(imgs_container.find(".clear"));
+                    $("<div class='text_subblock'>" + data[i].blocks[j].text + "</div>").appendTo(text_block); 
+                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(text_block); 
+                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(text_block);
+                    break;
+                case "img":
+                    var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore(imgs_container.find(".clear"));
+                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_block); 
+                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(img_block)
+                    var img = $("<img src=\"../../" + data[i].blocks[j].src + "\" style=\"display: inline;\"/>").appendTo(img_block);
+                    img.height(data[i].blocks[j].h);
+                    if((120 - data[i].blocks[j].h) > 0)
+                        img.css("margin",(120 - data[i].blocks[j].h)/2 + "px 0");
+                    break;
+                case "audio":
+                    var img_tmp = $("<div class='img_block'>").insertBefore(imgs_container.find(".clear"));
+                    var audio_block = $("<div class='audio_block'>").appendTo(img_tmp);
+                    $("<div class='play'>").appendTo(audio_block);
+                    $("<div class='replay'>").appendTo(audio_block);
+                    var source = $("<source/>").attr("src", "../../" + data[i].blocks[j].src);
+                    var audio = $("<audio>").appendTo(audio_block);
+                    audio.append(source);
+                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_tmp); 
+                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(img_tmp)
+                    break;
+            }
+        }
+    }
+    
+    var block = $("input:checkbox").parent().parent();
+    block.each(function(){
+        var flag = true;
+        $(this).find(".text_block, .img_block, .audio_block").each(function(){
+            if($(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 0)                    
+                flag = false;                
+            else if(!$(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 1)
+                flag = false;          
+        });
+        if(flag)
+            $(this).addClass("right");
+        else
+            $(this).removeClass("right");
+    })
+}
+
+//example
+function showExample(){
+    
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    
+//    $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
+    
+    var tmp1 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.cat + "</div>").appendTo(tmp1); 
+    $("<input type='hidden' value='1'/>").appendTo(tmp1); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp1)
+    var tmp2 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.ball + "</div>").appendTo(tmp2); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp2); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp2)
+    var tmp3 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.shovel + "</div>").appendTo(tmp3); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp3); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp3)
+    var tmp4 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.dog + "</div>").appendTo(tmp4); 
+    $("<input type='hidden' value='1'/>").appendTo(tmp4); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp4)
+    var tmp5 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.tree + "</div>").appendTo(tmp5); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp5); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp5)
+    $("<div class='clear'>").appendTo(imgs_container);
+    
+    container.appendTo("#data")
+}
+
+//add new container
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+//    imgs_container.attr("ondragenter", "return false;")
+//    .attr("ondragleave", "$(this).removeClass('over'); return false;")
+//    .attr("ondragover", "$(this).addClass('over'); return false;")
+//    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
+//    
+//    $("<div class='close_cont'>").appendTo(container);
+//    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+//    
+//    $("<div class='add_img'>").appendTo(imgs_container);
+//    $("<div class='clear'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
+
+//add new img block
+function addTextBlock(dest){
+    var tmp = $("<div class='text_block'>").insertBefore(dest)
+    $("<div class='text_subblock' contenteditable='true'>" + sankoreLang.enter + "</div>").appendTo(tmp); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp);
+    $("<div class='close_img'>").appendTo(tmp);
+}
+
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function onDropTarget(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){  
+            var img_tmp = $("<div class='img_block'>").insertBefore($(obj).find(".add_img"));
+            var audio_block = $("<div class='audio_block'>").appendTo(img_tmp)
+            $("<div class='close_img'>").appendTo(img_tmp);
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            var source = $("<source/>").attr("src", "../../" + tmp);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+            $("<input type='hidden' value='0'/>").appendTo(img_tmp); 
+            $("<input type='checkbox' class='ch_box'/>").appendTo(img_tmp)
+        } else {
+            var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore($(obj).find(".add_img"));
+            $("<div class='close_img'>").appendTo(img_block);
+            $("<input type='hidden' value='0'/>").appendTo(img_block); 
+            $("<input type='checkbox' class='ch_box'/>").appendTo(img_block)
+            var tmp_img = $("<img src=\"../../" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
+            setTimeout(function(){
+                if(tmp_img.height() >= tmp_img.width())
+                    tmp_img.attr("height", "120");
+                else{
+                    tmp_img.attr("width","120");
+                    var h = tmp_img.height();
+                    tmp_img.attr("height",h);
+                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                }
+            }, 6);
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+    
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/fr/js/script.js
index 8788b5c..e873123 100644
--- a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/fr/js/script.js
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/fr/js/script.js
@@ -24,16 +24,13 @@ var sankoreLang = {
 
     "<p>Le bouton “Modifier” vous permet :</p>"+
     "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
-    "<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité. </li></ul>"+
+    "<li>de modifier l'exercice.</li></ul>"+
 
-    "<p>En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, puis</p>"+
-    "<ul><li>insérez une consigne en cliquant sur le champ de texte “Saisir votre consigne ici ...”, </li>"+
-    "<li>ajoutez des zones de texte en cliquant sur le gros “+T” vert en dessous puis entrez le texte voulu.</li></ul>"+
-    "<p>Pour supprimer une zone de texte, cliquez sur la croix située dans le coin supérieur de celle-ci.</p>"+ 
-
-    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
-
-    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    "<p>En mode édition :</p>"+
+    "<ul><li>modifiez la consigne en cliquant sur le champ de texte, </li>"+
+    "<li>ajoutez des zones de texte en cliquant sur le gros “+T” vert en dessous puis entrez le texte voulu,</li>"+
+    "<li>supprimez une zone de texte, cliquez sur la croix située dans le coin supérieur de celle-ci,</li>"+ 
+    "<li>le bouton “Afficher” vous permet d’utiliser l’activité.</li></ul>",
     theme:"Thème"
 };
 
@@ -118,13 +115,13 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display","none");
-                $(".add_block").remove();
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     
                     container.find(".text_cont").removeAttr("contenteditable");
                     container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     container.find(".imgs_cont").removeAttr("ondragenter")
                     .removeAttr("ondragleave")
                     .removeAttr("ondragover")
@@ -150,7 +147,7 @@ function start(){
                 $(".cont").each(function(){
                     var container = $(this);
                     
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find(".text_cont").attr("contenteditable","true");
                     container.find(".imgs_cont").removeClass("right")
                     .attr("ondragenter", "return false;")
@@ -170,7 +167,7 @@ function start(){
                     add_img.insertBefore(container.find(".clear"));
                 });
                 
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
@@ -178,9 +175,9 @@ function start(){
     });
     
     //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
     
     //checkbox events
     $("input:checkbox").live("click", function(){
@@ -252,17 +249,19 @@ function start(){
     });
     
     //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
     $(".close_img").live("click", function(){
         $(this).parent().remove();
     });
-
     
+    $("#wgt_reload, #wgt_display, #wgt_edit").live("mouseover",function(){
+        exportData();
+    })
 }
 
 //export
@@ -304,14 +303,13 @@ function exportData(){
         });
         array_to_export.push(cont_obj);
     });
-    
-    sankore.setPreference("selectionner", JSON.stringify(array_to_export));
+    if(window.sankore)
+        sankore.setPreference("selectionner", JSON.stringify(array_to_export));
 }
 
 //import
 function importData(data){
     
-    var tmp = 0;    
     for(var i in data){
         
         var container = $("<div class='cont'>").appendTo("#data");
@@ -319,7 +317,7 @@ function importData(data){
         var imgs_container = $("<div class='imgs_cont'>").appendTo(container); 
         $("<div class='clear'>").appendTo(imgs_container);
         
-        $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+//        $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
         $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
         
         for(var j in data[i].blocks){
@@ -377,7 +375,7 @@ function showExample(){
     var sub_container = $("<div class='sub_cont'>").appendTo(container);
     var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
     
-    $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    $("<div class='number_cont'>1</div>").appendTo(sub_container);
     $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
     
     var tmp1 = $("<div class='text_block'>").appendTo(imgs_container); 
@@ -406,23 +404,23 @@ function showExample(){
 }
 
 //add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('over'); return false;")
-    .attr("ondragover", "$(this).addClass('over'); return false;")
-    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
-    
-    $("<div class='close_cont'>").appendTo(container);
-    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<div class='add_img'>").appendTo(imgs_container);
-    $("<div class='clear'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+//    imgs_container.attr("ondragenter", "return false;")
+//    .attr("ondragleave", "$(this).removeClass('over'); return false;")
+//    .attr("ondragover", "$(this).addClass('over'); return false;")
+//    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
+//    
+//    $("<div class='close_cont'>").appendTo(container);
+//    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+//    
+//    $("<div class='add_img'>").appendTo(imgs_container);
+//    $("<div class='clear'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
 
 //add new img block
 function addTextBlock(dest){
@@ -433,12 +431,12 @@ function addTextBlock(dest){
     $("<div class='close_img'>").appendTo(tmp);
 }
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 function stringToXML(text){
     if (window.ActiveXObject){
@@ -452,7 +450,6 @@ function stringToXML(text){
     return doc;
 }
 
-
 //changing the style
 function changeStyle(val){
     switch(val){
@@ -560,4 +557,4 @@ function onDropTarget(obj, event) {
         event.cancelBubble = true;
     }
     return false;
-}
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/ru/js/script.js
index 8f4f358..d9a6069 100644
--- a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/ru/js/script.js
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/ru/js/script.js
@@ -100,13 +100,13 @@ function start(){
                 $(this).addClass("selected");
                 $("#wgt_edit").removeClass("selected");
                 $("#parameters").css("display","none");
-                $(".add_block").remove();
+//                $(".add_block").remove();
                 $(".cont").each(function(){
                     var container = $(this);
                     
                     container.find(".text_cont").removeAttr("contenteditable");
                     container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
+//                    container.find(".close_cont").remove();
                     container.find(".imgs_cont").removeAttr("ondragenter")
                     .removeAttr("ondragleave")
                     .removeAttr("ondragover")
@@ -132,7 +132,7 @@ function start(){
                 $(".cont").each(function(){
                     var container = $(this);
                     
-                    $("<div class='close_cont'>").appendTo(container);
+//                    $("<div class='close_cont'>").appendTo(container);
                     container.find(".text_cont").attr("contenteditable","true");
                     container.find(".imgs_cont").removeClass("right")
                     .attr("ondragenter", "return false;")
@@ -152,7 +152,7 @@ function start(){
                     add_img.insertBefore(container.find(".clear"));
                 });
                 
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+//                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
                 $(this).css("display", "none");
                 $("#wgt_display").css("display", "block");
             }
@@ -160,9 +160,9 @@ function start(){
     });
     
     //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
+//    $(".add_block").live("click", function(){
+//        addContainer();
+//    });
     
     //checkbox events
     $("input:checkbox").live("click", function(){
@@ -234,17 +234,19 @@ function start(){
     });
     
     //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
+//    $(".close_cont").live("click",function(){
+//        $(this).parent().remove();
+//        refreshBlockNumbers();
+//    });
     
     //deleting the img block
     $(".close_img").live("click", function(){
         $(this).parent().remove();
     });
-
     
+    $("#wgt_reload, #wgt_display, #wgt_edit").live("mouseover",function(){
+        exportData();
+    })
 }
 
 //export
@@ -286,14 +288,13 @@ function exportData(){
         });
         array_to_export.push(cont_obj);
     });
-    
-    sankore.setPreference("selectionner", JSON.stringify(array_to_export));
+    if(window.sankore)
+        sankore.setPreference("selectionner", JSON.stringify(array_to_export));
 }
 
 //import
 function importData(data){
     
-    var tmp = 0;    
     for(var i in data){
         
         var container = $("<div class='cont'>").appendTo("#data");
@@ -301,7 +302,7 @@ function importData(data){
         var imgs_container = $("<div class='imgs_cont'>").appendTo(container); 
         $("<div class='clear'>").appendTo(imgs_container);
         
-        $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+//        $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
         $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
         
         for(var j in data[i].blocks){
@@ -359,7 +360,7 @@ function showExample(){
     var sub_container = $("<div class='sub_cont'>").appendTo(container);
     var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
     
-    $("<div class='number_cont'>1</div>").appendTo(sub_container);
+//    $("<div class='number_cont'>1</div>").appendTo(sub_container);
     $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
     
     var tmp1 = $("<div class='text_block'>").appendTo(imgs_container); 
@@ -388,23 +389,23 @@ function showExample(){
 }
 
 //add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('over'); return false;")
-    .attr("ondragover", "$(this).addClass('over'); return false;")
-    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
-    
-    $("<div class='close_cont'>").appendTo(container);
-    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<div class='add_img'>").appendTo(imgs_container);
-    $("<div class='clear'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
+//function addContainer(){
+//    var container = $("<div class='cont'>");
+//    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+//    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+//    imgs_container.attr("ondragenter", "return false;")
+//    .attr("ondragleave", "$(this).removeClass('over'); return false;")
+//    .attr("ondragover", "$(this).addClass('over'); return false;")
+//    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
+//    
+//    $("<div class='close_cont'>").appendTo(container);
+//    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+//    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+//    
+//    $("<div class='add_img'>").appendTo(imgs_container);
+//    $("<div class='clear'>").appendTo(imgs_container);
+//    container.insertBefore($(".add_block"));
+//}
 
 //add new img block
 function addTextBlock(dest){
@@ -415,12 +416,12 @@ function addTextBlock(dest){
     $("<div class='close_img'>").appendTo(tmp);
 }
 
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
+//function refreshBlockNumbers(){
+//    var i = 0;
+//    $(".cont").each(function(){
+//        $(this).find(".number_cont").text(++i);
+//    })
+//}
 
 function stringToXML(text){
     if (window.ActiveXObject){
@@ -434,7 +435,6 @@ function stringToXML(text){
     return doc;
 }
 
-
 //changing the style
 function changeStyle(val){
     switch(val){
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/config.xml
index b622376..3d7726d 100644
--- a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/config.xml	
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/config.xml	
@@ -6,7 +6,7 @@
         version="1.0"
         width="850"
         height="350" 
-	ub:resizable="true">
+	ub:resizable="false">
 		
 		<name>Split a phrase</name>
 		<description>Split a phrase into words</description>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/index.html
index f9f600c..8bf5f1c 100644
--- a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/index.html	
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/index.html	
@@ -6,90 +6,33 @@
     <head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
         <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="styles/master.css">
-        <link rel="stylesheet" type="text/css" href="styles/wcontainer.css">
-        <link rel="stylesheet" type="text/css" href="styles/app.css">
         <!--Scripts-->
         <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="scripts/ext.js"></script>
-        <script type="text/javascript" src="scripts/wcontainer.js"></script>
-        <script type="text/javascript" src="scripts/app.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang != "en"){
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url: 'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }                
+                    }
+                });      
             });
         </script>
     </head>
 
     <body>
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="ub-widget">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
 
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
     </body>
 
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/en/index.html
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/index.html
copy to Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/en/index.html
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/en/scripts/wcontainer.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/wcontainer.js
rename to Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/en/scripts/wcontainer.js
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/scripts/wcontainer.js
index 910b19f..01abcd8 100644
--- a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/scripts/wcontainer.js	
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/scripts/wcontainer.js	
@@ -19,10 +19,10 @@ var sankoreLang = {
     "<p>Le bouton “Recharger” réinitialise l’exercice.</p>"+
 
 
-    "<p>Le bouton “Modifier” vous permet :</p>"+
+    "<p>Le bouton “Modifier” vous permet de :</p>"+
 
-    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun), </li>"+
-    "<li>de déterminer la phrase sur laquelle travailler.</li></ul>"+
+    "<ul><li>choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun), </li>"+
+    "<li>déterminer la phrase sur laquelle travailler.</li></ul>"+
 
     "<p>Ecrivez simplement une phrase dans la zone de texte.</p>"+
 
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/config.xml
index 3f3b11a..952c9db 100644
--- a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/config.xml	
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/config.xml	
@@ -6,7 +6,7 @@
         version="1.0"
         width="850"
         height="400" 
-		ub:resizable="true">
+		ub:resizable="false">
 		
 		<name>Split a text [alt]</name>
 		<description>Split a text into sentences</description>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/index.html
index 35a23fd..60abc83 100644
--- a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/index.html	
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/index.html	
@@ -1,97 +1,35 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
     "http://www.w3.org/TR/html4/loose.dtd">
-
 <html>
-
     <head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
         <title>Template</title>
 
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="styles/master.css">
-        <link rel="stylesheet" type="text/css" href="styles/wcontainer.css">
-        <link rel="stylesheet" type="text/css" href="styles/app.css">
         <!--Scripts-->
         <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="scripts/ext.js"></script>
-        <script type="text/javascript" src="scripts/wcontainer.js"></script>
-        <script type="text/javascript" src="scripts/app2.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang != "en"){
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                alert(lang)
-                            },
-                            200: function(){
-                                
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url: 'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }                
+                    }
+                });      
             });
         </script>
     </head>
-
     <body>
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>                    
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="ub-widget">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
-
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
+        
     </body>
-
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/en/index.html
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/index.html
copy to Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/en/index.html
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/en/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/en/scripts/wcontainer.js
new file mode 100644
index 0000000..50b088a
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/en/scripts/wcontainer.js	
@@ -0,0 +1,207 @@
+var sankoreLang = {
+    view: "Display", 
+    edit: "Edit",
+    example: "hello, this is the first sentence. hi, this is the second sentence. hello again, this is the third sentence. good morning, this is the fourth sentence. hi, sorry, i\'m late, i\'m the fifth sentence.",
+    wgt_name: "Split a text",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2>Split a text</h2></p>" +
+"<p><h3>Separate sentences in a text</h3></p>" +
+"<p>Text is written without the dots between sentences. The goal is to split the text correctly. If the result is correct, the area turns in green.</p>" +
+"<p>To add points between sentences, move the cursor and click between two words.</p>" +
+"<p>“Reload” button resets the exercise.</p>" +
+"<p>Enter the “Edit” mode to :</p>" +
+"<ul><li>choose the theme of the App : pad, slate, or none (by default : none),</li>" +
+"<li>modify the text (write in the text field different phrases separated by dots).</li></ul>" +
+"<p>Do not use question and exclamation mark.</p>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+// if use the "view/edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+function wcontainer( containerID )
+{
+    // some protecred variables
+    var thisInstance = this;
+    this.editMode = false;
+    var data = {}; // see setData and getData
+	
+    // widget size parameters
+    this.minHeight = 100;
+    this.minWidth = 400;
+	
+    // set to 0 for no max width restriction
+    this.maxWidth = 0;
+	
+    // links to the elements of the widget
+    this.elements = {};
+	
+    /*
+	============
+	create
+	============
+	- creates html base, inits this.elements, assings events
+	*/
+    this.create = function( containerID )
+    {
+        var html = 
+        '<div id="mp_content">' +
+        '<div class="viewmode" id="mp_view">' +
+        '</div>' +
+        '<div class="editmode" id="mp_edit">' +
+        '</div>' +
+        '</div>';
+		
+        var container = $( containerID );
+		
+        container.append( html );
+        this.elements.edit = container.find( ".editmode" );
+        this.elements.view = container.find( ".viewmode" );
+        this.elements.container = container;
+        this.elements.subcontainer = container.find( "#mp_content" );
+        this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
+        this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
+		
+        $("#wgt_edit").live("click", function(){
+            thisInstance.modeEdit();
+        } );
+		
+        $("#wgt_display").live("click", function(){
+            thisInstance.modeView();
+        } );
+    };
+	
+	
+    /*
+	===============
+	setViewContent
+	===============
+	- assigns custom html to the viewmode container
+	*/
+    this.setViewContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .viewmode" ).html( html );
+    };
+	
+    /*
+	===============
+	setEditContent
+	===============
+	- assigns custom html to the editmode container
+	*/
+    this.setEditContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .editmode" ).html( html );
+    };
+	
+	
+	
+    /*
+	=========================
+	modeEdit and modeView
+	=========================
+	- switch the widget betweed modes
+	* for customization extend onEditMode and onViewMode
+	*/
+    this.modeEdit = function()
+    {
+        this.onEditMode();
+        this.editMode = true;
+        this.elements.edit.removeClass( "hide" );
+        this.elements.view.addClass( "hide" );
+		
+        //this.adjustSize();
+    };
+    this.modeView = function()
+    {
+        this.onViewMode();
+        this.editMode = false;
+        this.elements.edit.addClass( "hide" );
+        this.elements.view.removeClass( "hide" );
+		
+        //this.adjustSize();
+    };
+	
+    /*
+	======================
+	setData and getData
+	======================
+	- store some data inside
+	*/
+    this.setData = function( name, value ){
+        data[name] = value;
+    };
+    this.getData = function( name ){
+        if( typeof( data[name] ) == "undefined" ){
+            return null;
+        } else return data[name];
+    };
+	
+	
+    // redefinable methods
+	
+    /*
+	==========================
+	onEditMode and onViewMode
+	==========================
+	- these are called when the mode is being changed
+	*/
+    this.onEditMode = function(){
+    //
+    };
+    this.onViewMode = function(){
+    //
+    };
+	
+    /*
+	======================
+	viewSize and editSize
+	======================
+	- calculate container size for the adjustSize method
+	* they are likely to be redefined for each particular widget
+	*/
+    this.viewSize = function(){
+        return {
+            w: this.elements.containerView.outerWidth(),
+            h: this.elements.containerView.outerHeight()
+        };
+    };
+    this.editSize = function(){
+        return {
+            w: this.elements.containerEdit.outerWidth(),
+            h: this.elements.containerEdit.outerHeight()
+        };
+    };
+	
+    /*
+	=====================
+	checkAnswer
+	=====================
+	- check if the exercise in the view mode was done right
+	* redefine it for each particular widget
+	*/
+    this.checkAnswer = function()
+    {
+    //
+    };
+	
+	
+    // constructor end
+	
+    // if the constructor was called with a parameter,
+    // call create() automatically
+    if( arguments.length > 0 ){
+        this.create( containerID );
+    }
+    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
+    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
+    window.winstance = thisInstance;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/scripts/wcontainer.js
index e40b9fe..b4d0812 100644
--- a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/scripts/wcontainer.js	
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/scripts/wcontainer.js	
@@ -19,10 +19,10 @@ var sankoreLang = {
     "<p>Le bouton “Recharger” réinitialise l’exercice.</p>"+
 
 
-    "<p>Le bouton “Modifier” vous permet :</p>"+
+    "<p>Le bouton “Modifier” vous permet de :</p>"+
 
-    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun), </li>"+
-    "<li>de déterminer le texte sur lequel travailler.</li></ul>"+
+    "<ul><li>choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun), </li>"+
+    "<li>déterminer le texte sur lequel travailler.</li></ul>"+
 
     "<p>Ecrivez simplement dans la zone de texte les différentes phrases séparées par des points.<b> NB : Les points d’interrogation, les deux points “:”, les points-virgules “;” et les points d’exclamation ne sont pas pris en compte.</b></p>"+
 
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/wcontainer.js
deleted file mode 100644
index 22a313c..0000000
--- a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/wcontainer.js	
+++ /dev/null
@@ -1,207 +0,0 @@
-var sankoreLang = {
-    view: "Display", 
-    edit: "Edit",
-    example: "hello, this is the first sentence. hi, this is the second sentence. hello again, this is the third sentence. good morning, this is the fourth sentence. hi, sorry, i\'m late, i\'m the fifth sentence.",
-    wgt_name: "Split a text",
-    reload: "Reload",
-    slate: "slate",
-    pad: "pad",
-    none: "none",
-    help: "Help",
-    help_content: 
-"<p><h2>Split a text</h2></p>" +
-"<p><h3>Separate sentences in a text</h3></p>" +
-"<p>Text is written without the dots between sentences. The goal is to split the text correctly. If the result is correct, the area turns in green.</p>" +
-"<p>To add points between sentences, move the cursor and click between two words.</p>" +
-"<p>“Reload” button resets the exercise.</p>" +
-"<p>Enter the “Edit” mode to :</p>" +
-"<ul><li>choose the theme of the App : pad, slate, or none (by default : none),</li>" +
-"<li>modify the text (write in the text field different phrases separated by dots.)</li></ul>" +
-"<p>Do not use question and exclamation mark.</p>" +
-"<p>“Display” button comes back to the activity.</p>",
-    theme: "Theme"
-};
-
-// if use the "view/edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-function wcontainer( containerID )
-{
-    // some protecred variables
-    var thisInstance = this;
-    this.editMode = false;
-    var data = {}; // see setData and getData
-	
-    // widget size parameters
-    this.minHeight = 100;
-    this.minWidth = 400;
-	
-    // set to 0 for no max width restriction
-    this.maxWidth = 0;
-	
-    // links to the elements of the widget
-    this.elements = {};
-	
-    /*
-	============
-	create
-	============
-	- creates html base, inits this.elements, assings events
-	*/
-    this.create = function( containerID )
-    {
-        var html = 
-        '<div id="mp_content">' +
-        '<div class="viewmode" id="mp_view">' +
-        '</div>' +
-        '<div class="editmode" id="mp_edit">' +
-        '</div>' +
-        '</div>';
-		
-        var container = $( containerID );
-		
-        container.append( html );
-        this.elements.edit = container.find( ".editmode" );
-        this.elements.view = container.find( ".viewmode" );
-        this.elements.container = container;
-        this.elements.subcontainer = container.find( "#mp_content" );
-        this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
-        this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
-		
-        $("#wgt_edit").live("click", function(){
-            thisInstance.modeEdit();
-        } );
-		
-        $("#wgt_display").live("click", function(){
-            thisInstance.modeView();
-        } );
-    };
-	
-	
-    /*
-	===============
-	setViewContent
-	===============
-	- assigns custom html to the viewmode container
-	*/
-    this.setViewContent = function( html )
-    {
-        this.elements.container.find( "#mp_content .viewmode" ).html( html );
-    };
-	
-    /*
-	===============
-	setEditContent
-	===============
-	- assigns custom html to the editmode container
-	*/
-    this.setEditContent = function( html )
-    {
-        this.elements.container.find( "#mp_content .editmode" ).html( html );
-    };
-	
-	
-	
-    /*
-	=========================
-	modeEdit and modeView
-	=========================
-	- switch the widget betweed modes
-	* for customization extend onEditMode and onViewMode
-	*/
-    this.modeEdit = function()
-    {
-        this.onEditMode();
-        this.editMode = true;
-        this.elements.edit.removeClass( "hide" );
-        this.elements.view.addClass( "hide" );
-		
-        //this.adjustSize();
-    };
-    this.modeView = function()
-    {
-        this.onViewMode();
-        this.editMode = false;
-        this.elements.edit.addClass( "hide" );
-        this.elements.view.removeClass( "hide" );
-		
-        //this.adjustSize();
-    };
-	
-    /*
-	======================
-	setData and getData
-	======================
-	- store some data inside
-	*/
-    this.setData = function( name, value ){
-        data[name] = value;
-    };
-    this.getData = function( name ){
-        if( typeof( data[name] ) == "undefined" ){
-            return null;
-        } else return data[name];
-    };
-	
-	
-    // redefinable methods
-	
-    /*
-	==========================
-	onEditMode and onViewMode
-	==========================
-	- these are called when the mode is being changed
-	*/
-    this.onEditMode = function(){
-    //
-    };
-    this.onViewMode = function(){
-    //
-    };
-	
-    /*
-	======================
-	viewSize and editSize
-	======================
-	- calculate container size for the adjustSize method
-	* they are likely to be redefined for each particular widget
-	*/
-    this.viewSize = function(){
-        return {
-            w: this.elements.containerView.outerWidth(),
-            h: this.elements.containerView.outerHeight()
-        };
-    };
-    this.editSize = function(){
-        return {
-            w: this.elements.containerEdit.outerWidth(),
-            h: this.elements.containerEdit.outerHeight()
-        };
-    };
-	
-    /*
-	=====================
-	checkAnswer
-	=====================
-	- check if the exercise in the view mode was done right
-	* redefine it for each particular widget
-	*/
-    this.checkAnswer = function()
-    {
-    //
-    };
-	
-	
-    // constructor end
-	
-    // if the constructor was called with a parameter,
-    // call create() automatically
-    if( arguments.length > 0 ){
-        this.create( containerID );
-    }
-    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
-    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
-    window.winstance = thisInstance;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/config.xml
index aa5f882..2bd02a3 100644
--- a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/config.xml
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/config.xml
@@ -6,7 +6,7 @@
         version="1.0"
         width="770"
         height="320" 
-		ub:resizable="true">
+		ub:resizable="false">
 		
 		<name>Split a word</name>
 		<description>Split a word into syllables</description>
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/index.html
index dcbdbbb..ed80196 100644
--- a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/index.html
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/index.html
@@ -1,97 +1,34 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
     "http://www.w3.org/TR/html4/loose.dtd">
-
 <html>
-
     <head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
         <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="styles/master.css">
-        <link rel="stylesheet" type="text/css" href="styles/wcontainer.css">
-        <link rel="stylesheet" type="text/css" href="styles/spl-word.css">
         <!--Scripts-->
         <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="scripts/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="scripts/ext.js"></script>
-        <script type="text/javascript" src="scripts/wcontainer.js"></script>
-        <script type="text/javascript" src="scripts/spl-word.js"></script>
         <script type="text/javascript">
             if (parent && parent.loaded)
                 parent.loaded();
 
             $(document).ready(function(){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang != "en"){
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                alert(lang)
-                            },
-                            200: function(){                                
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"en"; //local language
+
+                $.ajax({
+                    type: 'POST',
+                    url: 'locales/' + lang + '/index.html',
+                    statusCode: {
+                        404: function() {
+                            window.location.href = 'locales/en/index.html';
+                        },
+                        200: function(){
+                            window.location.href = 'locales/' + lang + '/index.html';
                         }
-                    });                    
-                }                
+                    }
+                });      
             });
         </script>
     </head>
-
     <body>
-        <table class="body_table" cellpadding=0 cellspacing=0>
-            <tr style="height: 54px;">
-                <td class="b_top_left"> </td>
-                <td class="b_top_center">
-                    <div id="wgt_name"></div>
-                    <div id="wgt_help"></div> 
-                    <div id="wgt_reload"></div>                    
-                    <div id="wgt_display" class="selected"></div>
-                    <div id="wgt_edit"></div>
-                </td>
-                <td class="b_top_right"> </td>
-            </tr>
-
-            <tr>
-                <td class="b_center_left"> </td>
-                <td>
-                    <div id="help"></div>
-                    <div id="ub-widget">
-                        <div id="parameters">
-                            <div class="inline">
-                                <label>
-                                    <select id="style_select">
-                                        <option value="1"></option>
-                                        <option value="2"></option>
-                                        <option value="3"></option>
-                                    </select>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-                </td>
-                <td class="b_center_right"> </td>
-            </tr>     
-
-            <tr style="height: 54px;">
-                <td class="b_bottom_left"> </td>
-                <td class="b_bottom_center"> </td>
-                <td class="b_bottom_right"> </td>
-            </tr>
-        </table>
+        
     </body>
-
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/en/index.html b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/en/index.html
new file mode 100644
index 0000000..cfb57e9
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/en/index.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/wcontainer.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/spl-word.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="../../scripts/ext.js"></script>
+        <script type="text/javascript" src="scripts/wcontainer.js"></script>
+        <script type="text/javascript" src="../../scripts/spl-word.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);                           
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/en/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/en/scripts/wcontainer.js
new file mode 100644
index 0000000..55d2f6b
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/en/scripts/wcontainer.js
@@ -0,0 +1,205 @@
+var sankoreLang = {
+    view: "Display", 
+    edit: "Edit",
+    example: "so*phis*ti*ca*ted",
+    wgt_name: "Syllables",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2> Syllables </h2></p>" +
+"<p><h3> Separate the syllables of a word</h3></p>" +
+
+"<p>The goal is split the word correctly. If the result is correct, the area turns in green. </p>" +
+"<p>To add a separation between two syllables, move the cursor and click between two characters.</p>" +
+"<p>“Reload” button resets the exercise. </ P>" +
+
+"<p>Enter the “Edit” mode to : </p>" +
+"<ul><li> choose the theme of the App : pad, slate, or none (by default : none),</li>" +
+"<li>modify the word (write in the text field and separate syllables with *).</li> </ul>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+// if use the "view/edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+function wcontainer( containerID )
+{
+    // some protecred variables
+    var thisInstance = this;
+    this.editMode = false;
+    var data = {}; // see setData and getData
+	
+    // widget size parameters
+    this.minHeight = 100;
+    this.minWidth = 400;
+	
+    // links to the elements of the widget
+    this.elements = {};
+	
+    /*
+	============
+	create
+	============
+	- creates html base, inits this.elements, assings events
+	*/
+    this.create = function( containerID )
+    {
+        var html = 
+        '<div id="mp_content">' +
+        '<div class="viewmode">' +
+        '</div>' +
+        '<div class="editmode">' +
+        '</div>' +
+        '</div>';
+		
+        var container = $( containerID );
+		
+        container.append( html );
+        this.elements.edit = container.find( ".editmode" );
+        this.elements.view = container.find( ".viewmode" );
+        this.elements.container = container;
+        this.elements.containerView = container.find( "#mp_content .viewmode" );
+        this.elements.containerEdit = container.find( "#mp_content .editmode" );
+		
+        $("#wgt_edit").live("click", function(){
+            thisInstance.modeEdit();
+        } );
+		
+        $("#wgt_display").live("click", function(){
+            thisInstance.modeView();
+        } );
+    };
+	
+	
+    /*
+	===============
+	setViewContent
+	===============
+	- assigns custom html to the viewmode container
+	*/
+    this.setViewContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .viewmode" ).html( html );
+    };
+	
+    /*
+	===============
+	setEditContent
+	===============
+	- assigns custom html to the editmode container
+	*/
+    this.setEditContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .editmode" ).html( html );
+    };
+	
+	
+	
+    /*
+	=========================
+	modeEdit and modeView
+	=========================
+	- switch the widget betweed modes
+	* for customization extend onEditMode and onViewMode
+	*/
+    this.modeEdit = function()
+    {
+        this.onEditMode();
+        this.editMode = true;
+        this.elements.edit.removeClass( "hide" );
+        this.elements.view.addClass( "hide" );
+		
+        //this.adjustSize();
+    };
+    this.modeView = function()
+    {
+        this.onViewMode();
+        this.editMode = false;
+        this.elements.edit.addClass( "hide" );
+        this.elements.view.removeClass( "hide" );
+		
+        //this.adjustSize();
+    };
+	
+
+    /*
+	======================
+	setData and getData
+	======================
+	- store some data inside
+	*/
+    this.setData = function( name, value ){
+        data[name] = value;
+    };
+    this.getData = function( name ){
+        if( typeof( data[name] ) == "undefined" ){
+            return null;
+        } else return data[name];
+    };
+	
+	
+    // redefinable methods
+	
+    /*
+	==========================
+	onEditMode and onViewMode
+	==========================
+	- these are called when the mode is being changed
+	*/
+    this.onEditMode = function(){
+    //
+    };
+    this.onViewMode = function(){
+    //
+    };
+	
+    /*
+	======================
+	viewSize and editSize
+	======================
+	- calculate container size for the adjustSize method
+	* they are likely to be redefined for each particular widget
+	*/
+    this.viewSize = function(){
+        return {
+            w: this.elements.containerView.outerWidth(),
+            h: this.elements.containerView.outerHeight()
+        };
+    };
+    this.editSize = function(){
+        return {
+            w: this.elements.containerEdit.outerWidth(),
+            h: this.elements.containerEdit.outerHeight()
+        };
+    };
+	
+    /*
+	=====================
+	checkAnswer
+	=====================
+	- check if the exercise in the view mode was done right
+	* redefine it for each particular widget
+	*/
+    this.checkAnswer = function()
+    {
+    //
+    };
+	
+	
+    // constructor end
+	
+    // if the constructor was called with a parameter,
+    // call create() automatically
+    if( arguments.length > 0 ){
+        this.create( containerID );
+    }
+    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
+    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
+    window.winstance = thisInstance;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/fr/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/fr/scripts/wcontainer.js
index c0859bc..b90d7c7 100644
--- a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/fr/scripts/wcontainer.js
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/fr/scripts/wcontainer.js
@@ -16,9 +16,9 @@ var sankoreLang = {
 
     "<p>Le bouton “Recharger” réinitialise l’exercice.</p>"+
 
-    "<p>Le bouton “Modifier” vous permet :</p>"+
-    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut tablette), </li>"+
-    "<li>de déterminer le mot sur lequel travailler.</li></ul>"+
+    "<p>Le bouton “Modifier” vous permet de :</p>"+
+    "<ul><li>choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut tablette), </li>"+
+    "<li>déterminer le mot sur lequel travailler.</li></ul>"+
 
     "<p>Ecrivez simplement dans la zone de texte le mot en insérant entre les syllabes une étoile *.</p>"+
 
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/wcontainer.js
deleted file mode 100644
index 489fe74..0000000
--- a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/wcontainer.js
+++ /dev/null
@@ -1,205 +0,0 @@
-var sankoreLang = {
-    view: "Display", 
-    edit: "Edit",
-    example: "so*phis*ti*ca*ted",
-    wgt_name: "Syllables",
-    reload: "Reload",
-    slate: "slate",
-    pad: "pad",
-    none: "none",
-    help: "Help",
-    help_content: 
-"<p><h2> Syllables </h2></p>" +
-"<p><h3> Separate the syllables of a word</h3></p>" +
-
-"<p>The goal is split the word correctly. If the result is correct, the area turns in green. </p>" +
-"<p>To add a separation between two syllables, move the cursor and click between two characters.</p>" +
-"<p>“Reload” button resets the exercise. </ P>" +
-
-"<p>Enter the “Edit” mode to : </p>" +
-"<ul><li> choose the theme of the App : pad, slate, or none (by default : none),</li>" +
-"<li>modify the word (write in the text field and separate syllables with *).</li> </ul>" +
-"<p>“Display” button comes back to the activity.</p>",
-    theme: "Theme"
-};
-
-// if use the "view/edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-function wcontainer( containerID )
-{
-    // some protecred variables
-    var thisInstance = this;
-    this.editMode = false;
-    var data = {}; // see setData and getData
-	
-    // widget size parameters
-    this.minHeight = 100;
-    this.minWidth = 400;
-	
-    // links to the elements of the widget
-    this.elements = {};
-	
-    /*
-	============
-	create
-	============
-	- creates html base, inits this.elements, assings events
-	*/
-    this.create = function( containerID )
-    {
-        var html = 
-        '<div id="mp_content">' +
-        '<div class="viewmode">' +
-        '</div>' +
-        '<div class="editmode">' +
-        '</div>' +
-        '</div>';
-		
-        var container = $( containerID );
-		
-        container.append( html );
-        this.elements.edit = container.find( ".editmode" );
-        this.elements.view = container.find( ".viewmode" );
-        this.elements.container = container;
-        this.elements.containerView = container.find( "#mp_content .viewmode" );
-        this.elements.containerEdit = container.find( "#mp_content .editmode" );
-		
-        $("#wgt_edit").live("click", function(){
-            thisInstance.modeEdit();
-        } );
-		
-        $("#wgt_display").live("click", function(){
-            thisInstance.modeView();
-        } );
-    };
-	
-	
-    /*
-	===============
-	setViewContent
-	===============
-	- assigns custom html to the viewmode container
-	*/
-    this.setViewContent = function( html )
-    {
-        this.elements.container.find( "#mp_content .viewmode" ).html( html );
-    };
-	
-    /*
-	===============
-	setEditContent
-	===============
-	- assigns custom html to the editmode container
-	*/
-    this.setEditContent = function( html )
-    {
-        this.elements.container.find( "#mp_content .editmode" ).html( html );
-    };
-	
-	
-	
-    /*
-	=========================
-	modeEdit and modeView
-	=========================
-	- switch the widget betweed modes
-	* for customization extend onEditMode and onViewMode
-	*/
-    this.modeEdit = function()
-    {
-        this.onEditMode();
-        this.editMode = true;
-        this.elements.edit.removeClass( "hide" );
-        this.elements.view.addClass( "hide" );
-		
-        //this.adjustSize();
-    };
-    this.modeView = function()
-    {
-        this.onViewMode();
-        this.editMode = false;
-        this.elements.edit.addClass( "hide" );
-        this.elements.view.removeClass( "hide" );
-		
-        //this.adjustSize();
-    };
-	
-
-    /*
-	======================
-	setData and getData
-	======================
-	- store some data inside
-	*/
-    this.setData = function( name, value ){
-        data[name] = value;
-    };
-    this.getData = function( name ){
-        if( typeof( data[name] ) == "undefined" ){
-            return null;
-        } else return data[name];
-    };
-	
-	
-    // redefinable methods
-	
-    /*
-	==========================
-	onEditMode and onViewMode
-	==========================
-	- these are called when the mode is being changed
-	*/
-    this.onEditMode = function(){
-    //
-    };
-    this.onViewMode = function(){
-    //
-    };
-	
-    /*
-	======================
-	viewSize and editSize
-	======================
-	- calculate container size for the adjustSize method
-	* they are likely to be redefined for each particular widget
-	*/
-    this.viewSize = function(){
-        return {
-            w: this.elements.containerView.outerWidth(),
-            h: this.elements.containerView.outerHeight()
-        };
-    };
-    this.editSize = function(){
-        return {
-            w: this.elements.containerEdit.outerWidth(),
-            h: this.elements.containerEdit.outerHeight()
-        };
-    };
-	
-    /*
-	=====================
-	checkAnswer
-	=====================
-	- check if the exercise in the view mode was done right
-	* redefine it for each particular widget
-	*/
-    this.checkAnswer = function()
-    {
-    //
-    };
-	
-	
-    // constructor end
-	
-    // if the constructor was called with a parameter,
-    // call create() automatically
-    if( arguments.length > 0 ){
-        this.create( containerID );
-    }
-    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
-    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
-    window.winstance = thisInstance;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/ubw-main.css
index 66280eb..51e38b1 100644
--- a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/ubw-main.css
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/ubw-main.css
@@ -215,6 +215,7 @@ html, body {
 
 #parameters  label > select, #parameters  label > input{
 	margin-left: 10px;
+        width: 80px;
 }
 
 #parameters > div.inline {
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/ubw-main.css
index 66280eb..ac5c3b0 100644
--- a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/ubw-main.css
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/ubw-main.css
@@ -1,308 +1,309 @@
 html, body {
-	margin:0;
-	padding: 0;
-	font-family: "helvetica neue";
-	font-size: 14px;
-	color: #666666;
+    margin:0;
+    padding: 0;
+    font-family: "helvetica neue";
+    font-size: 14px;
+    color: #666666;
 }
 
 #ubwidget {
-	position: absolute;
-	top: 0;
-	bottom: 0;
-	left: 0;
-	right: 0;
-	background: url("images/bg.png");
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    background: url("images/bg.png");
 }
 
 .theme-pad #ubwidget {
-	border-radius: 40px;
-	border-width: 52px;
-	
-	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
-	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
-			border-image: url("images/pad-bd.png") 52 repeat;
+    border-radius: 40px;
+    border-width: 52px;
+
+    -webkit-border-image: url("images/pad-bd.png") 52 repeat;
+    -moz-border-image: url("images/pad-bd.png") 52 repeat;
+    border-image: url("images/pad-bd.png") 52 repeat;
 }
 
 .theme-slate #ubwidget {
-	border-radius: 44px;
-	border-width: 52px;
-	
-	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
-	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
-			border-image: url("images/slate-bd.png") 52 repeat;
+    border-radius: 44px;
+    border-width: 52px;
+
+    -webkit-border-image: url("images/slate-bd.png") 52 repeat;
+    -moz-border-image: url("images/slate-bd.png") 52 repeat;
+    border-image: url("images/slate-bd.png") 52 repeat;
 }
 
 #ubwidget > .wrapper {
-	position: absolute;
-	top: 0px;
-	bottom: 0px;
-	left: 0px;
-	right: 0px;
-	overflow: hidden;
+    position: absolute;
+    top: 0px;
+    bottom: 0px;
+    left: 0px;
+    right: 0px;
+    overflow: hidden;
 }
 
 
 .theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
-	position: absolute;
-	top: -49px;
-	bottom: -5px;
-	left: -5px;
-	right: -5px;
-	overflow: hidden;
+    position: absolute;
+    top: -49px;
+    bottom: -5px;
+    left: -5px;
+    right: -5px;
+    overflow: hidden;
 }
 
 #toolbar {
-	display: table;
-	width: 100%;
-	height: 44px;
-	font-size: 24px;
-	color: #FFCC99;
-	padding:0 10px;
+    display: table;
+    width: 100%;
+    height: 44px;
+    font-size: 24px;
+    color: #FFCC99;
+    padding:0 10px;
 }
 
 .theme-pad #toolbar, .theme-slate #toolbar {
-	height: 38px;
-	padding: 6px 0 0;
+    height: 38px;
+    padding: 6px 0 0;
 }
 
 .theme-slate #toolbar {
-	color: #7F613F;
-	text-shadow: #FFDCA9 0 1px 0;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
 }
 
 
 #toolbar > * {
-	display: table-cell;
-	height: 100%;
-	vertical-align: middle;
+    display: table-cell;
+    height: 100%;
+    vertical-align: middle;
 }
 
 #toolbar .actions {
-	text-align: right;
+    text-align: right;
 }
 
 #toolbar button, h1 {
-	font-weight: normal;
-	font-size: 24px;
-	color: #FFCC99;
-	margin: 0;
+    font-weight: normal;
+    font-size: 24px;
+    color: #FFCC99;
+    margin: 0;
 }
 
 .theme-slate #toolbar button, .theme-slate h1 {
-	color: #7F613F;
-	text-shadow: #FFDCA9 0 1px 0;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
 }
 
 #toolbar button {
-	border: none;
-	padding: none;
-	outline: none;
-	background: none;
-	
-	cursor: pointer;
-	padding-left: 34px;
-	margin-left: 10px;
-	height: 32px;
+    border: none;
+    padding: none;
+    outline: none;
+    background: none;
+
+    cursor: pointer;
+    padding-left: 34px;
+    margin-left: 10px;
+    height: 32px;
 }
 
 #toolbar button span {
-	display: block;
-	line-height: 32px;
+    display: block;
+    line-height: 32px;
 }
 
 #toolbar button[role='edit'] {
-	background: url("images/toolbar-edit.png") left top no-repeat;	
+    background: url("images/toolbar-edit.png") left top no-repeat;	
 }
 
 #toolbar button[role='view'] {
-	display: none;
-	color: #FFF;
-	background: url("images/toolbar-edit.png") left -32px no-repeat;
+    display: none;
+    color: #FFF;
+    background: url("images/toolbar-edit.png") left -32px no-repeat;
 }
 
 #toolbar button[role='reload'] {
-	background: url("images/toolbar-reload.png") left top no-repeat;	
+    background: url("images/toolbar-reload.png") left top no-repeat;	
 }
 
 #toolbar button[role='help'] {
-	background: url("images/toolbar-help.png") left top no-repeat;	
-	display: none;
+    background: url("images/toolbar-help.png") left top no-repeat;	
+    display: none;
 }
 
 .hasHelp #toolbar button[role='help'] {
-	display: inline-block;
+    display: inline-block;
 }
 
 .showHelp #toolbar button[role='help'] {
-	color: #FFF;
-	background-position: left -32px;
+    color: #FFF;
+    background-position: left -32px;
 }
 
 .theme-slate #toolbar button[role='edit'] {
-	background-image: url("images/slate-toolbar-edit.png");
+    background-image: url("images/slate-toolbar-edit.png");
 }
 
 .theme-slate #toolbar button[role='view'] {
-	text-shadow: #7F613F 0 -1px 0;
-	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+    text-shadow: #7F613F 0 -1px 0;
+    background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
 }
 
 .theme-slate #toolbar button[role='reload'] {
-	background-image: url("images/slate-toolbar-reload.png");
+    background-image: url("images/slate-toolbar-reload.png");
 }
 
 .theme-slate #toolbar button[role='help'] {
-	background-image: url("images/slate-toolbar-help.png");
+    background-image: url("images/slate-toolbar-help.png");
 }
 
 .showHelp.theme-slate #toolbar button[role='help'] {
-	text-shadow: #7F613F 0 -1px 0;
+    text-shadow: #7F613F 0 -1px 0;
 }
 
 
 .onEdit #toolbar button[role='view'] {
-	display: inline-block;
+    display: inline-block;
 }
 
 .onEdit #toolbar button[role='edit'] {
-	display: none;
+    display: none;
 }
 
 #help {
-	width: 300px;
-	height: 400px;
-	position: absolute;
-	margin-top: 10px;
-	right: 10px;
-	z-index: 10000;
-	display: none;
+    width: 300px;
+    height: 400px;
+    position: absolute;
+    margin-top: 10px;
+    right: 10px;
+    z-index: 10000;
+    display: none;
 }
 
 .showHelp #help {
-	display: block;
+    display: block;
 }
 
 #content {
-	position: absolute;
-	top: 44px;
-	bottom: 0;
-	overflow: auto;
-	left: 0;
-	right: 0;
+    position: absolute;
+    top: 44px;
+    bottom: 0;
+    overflow: auto;
+    left: 0;
+    right: 0;
 
-	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
 }
 
 #parameters {
-	display:none;
-	padding: 10px 20px;
-	background: url("images/parameters-bg.png");
-	
-	-webkit-border-radius: 4px 4px 0 0;
-	   -moz-border-radius: 4px 4px 0 0;
-		-mz-border-radius: 4px 4px 0 0;
-			border-radius: 4px 4px 0 0;
+    display:none;
+    padding: 10px 20px;
+    background: url("images/parameters-bg.png");
+
+    -webkit-border-radius: 4px 4px 0 0;
+    -moz-border-radius: 4px 4px 0 0;
+    -mz-border-radius: 4px 4px 0 0;
+    border-radius: 4px 4px 0 0;
 }
 
 #parameters label {
-	font-style: italic;
+    font-style: italic;
 }
 
 #parameters  label > select, #parameters  label > input{
-	margin-left: 10px;
+    margin-left: 10px;
+    width: 80px;
 }
 
 #parameters > div.inline {
-	display: inline-block;
+    display: inline-block;
 }
 
 #parameters > div.inline+div.inline {
-	margin-left: 20px;
+    margin-left: 20px;
 }
 
 #parameters input[type=text],
 #parameters input[type=number] {
-	height: 26px;
-	border: 1px solid #BBB;
-	background-color: #FFF;
-	
-	padding: 0 4px;
-	
-	-webkit-border-radius: 4px;
-	   -moz-border-radius: 4px;
-	    -ms-border-radius: 4px;
-			border-radius: 4px;
-	
-	-webkit-box-shadow: 0 1px 0 #FFF;
-	   -moz-box-shadow: 0 1px 0 #FFF;
-	    -ms-box-shadow: 0 1px 0 #FFF;
-			box-shadow: 0 1px 0 #FFF;
+    height: 26px;
+    border: 1px solid #BBB;
+    background-color: #FFF;
+
+    padding: 0 4px;
+
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    -ms-border-radius: 4px;
+    border-radius: 4px;
+
+    -webkit-box-shadow: 0 1px 0 #FFF;
+    -moz-box-shadow: 0 1px 0 #FFF;
+    -ms-box-shadow: 0 1px 0 #FFF;
+    box-shadow: 0 1px 0 #FFF;
 }
 
 #parameters input.tiny {
-	width: 40px;
+    width: 40px;
 }
 
 #parameters input.small {
-	width: 80px;
+    width: 80px;
 }
 
 #parameters input.medium {
-	width: 120px;
+    width: 120px;
 }
 
 #parameters input.long {
-	width: 160px;
+    width: 160px;
 }
 
 #scene {
-	padding: 20px;
+    padding: 20px;
 }
 
 #scene > * {
-	margin: 0 auto;
+    margin: 0 auto;
 }
 .onEdit #scene {
 }
 
 .onEdit #parameters {
-	display: block;
+    display: block;
 }
 
 /*
 .card-container {
-  	-webkit-perspective: 600px;
-	width:100%;
-	height: 100%;
+        -webkit-perspective: 600px;
+        width:100%;
+        height: 100%;
 }
 .card {
-	position: relative;
-	width:100%;
-	height: 100%;
+        position: relative;
+        width:100%;
+        height: 100%;
 }
 .card > div {
-	position: absolute;
-	width:100%;
-	height: 100%;
-	-webkit-transform-style: preserve-3d;
-  	-webkit-transition: all .5s ease-in-out;
-	-webkit-backface-visibility: hidden;
+        position: absolute;
+        width:100%;
+        height: 100%;
+        -webkit-transform-style: preserve-3d;
+        -webkit-transition: all .5s ease-in-out;
+        -webkit-backface-visibility: hidden;
 }
 .card > div:first-child {
-	-webkit-transform: rotateY( 0deg );
+        -webkit-transform: rotateY( 0deg );
 }
 .card > div:last-child {
-	-webkit-transform: rotateY( -180deg );
+        -webkit-transform: rotateY( -180deg );
 }
 .card.flip > div:first-child {
-	-webkit-transform: rotateY( 180deg );
+        -webkit-transform: rotateY( 180deg );
 }
 .card.flip > div:last-child {
-	-webkit-transform: rotateY( 0deg );
+        -webkit-transform: rotateY( 0deg );
 }
 */
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/config.xml
index 44588cf..b586201 100644
--- a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/config.xml
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/config.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://www.njin.fr/sankore/apps/tableur" 
-        version="1.0"
-        width="1050"
-        height="560" 
-        ub:resizable="true">     
-   
-		<name>La boite à transformation</name>
-		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
-		<description></description>
-		
-		<content src="index.html"/>
-</widget>
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.njin.fr/sankore/apps/tableur" 
+        version="1.0"
+        width="1050"
+        height="560" 
+        ub:resizable="false">     
+   
+		<name>La boite à transformation</name>
+		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
+		<description></description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/ubw-main.css
index 66280eb..0cf76d8 100644
--- a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/ubw-main.css
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/ubw-main.css
@@ -1,308 +1,319 @@
-html, body {
-	margin:0;
-	padding: 0;
-	font-family: "helvetica neue";
-	font-size: 14px;
-	color: #666666;
-}
-
-#ubwidget {
-	position: absolute;
-	top: 0;
-	bottom: 0;
-	left: 0;
-	right: 0;
-	background: url("images/bg.png");
-}
-
-.theme-pad #ubwidget {
-	border-radius: 40px;
-	border-width: 52px;
-	
-	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
-	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
-			border-image: url("images/pad-bd.png") 52 repeat;
-}
-
-.theme-slate #ubwidget {
-	border-radius: 44px;
-	border-width: 52px;
-	
-	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
-	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
-			border-image: url("images/slate-bd.png") 52 repeat;
-}
-
-#ubwidget > .wrapper {
-	position: absolute;
-	top: 0px;
-	bottom: 0px;
-	left: 0px;
-	right: 0px;
-	overflow: hidden;
-}
-
-
-.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
-	position: absolute;
-	top: -49px;
-	bottom: -5px;
-	left: -5px;
-	right: -5px;
-	overflow: hidden;
-}
-
-#toolbar {
-	display: table;
-	width: 100%;
-	height: 44px;
-	font-size: 24px;
-	color: #FFCC99;
-	padding:0 10px;
-}
-
-.theme-pad #toolbar, .theme-slate #toolbar {
-	height: 38px;
-	padding: 6px 0 0;
-}
-
-.theme-slate #toolbar {
-	color: #7F613F;
-	text-shadow: #FFDCA9 0 1px 0;
-}
-
-
-#toolbar > * {
-	display: table-cell;
-	height: 100%;
-	vertical-align: middle;
-}
-
-#toolbar .actions {
-	text-align: right;
-}
-
-#toolbar button, h1 {
-	font-weight: normal;
-	font-size: 24px;
-	color: #FFCC99;
-	margin: 0;
-}
-
-.theme-slate #toolbar button, .theme-slate h1 {
-	color: #7F613F;
-	text-shadow: #FFDCA9 0 1px 0;
-}
-
-#toolbar button {
-	border: none;
-	padding: none;
-	outline: none;
-	background: none;
-	
-	cursor: pointer;
-	padding-left: 34px;
-	margin-left: 10px;
-	height: 32px;
-}
-
-#toolbar button span {
-	display: block;
-	line-height: 32px;
-}
-
-#toolbar button[role='edit'] {
-	background: url("images/toolbar-edit.png") left top no-repeat;	
-}
-
-#toolbar button[role='view'] {
-	display: none;
-	color: #FFF;
-	background: url("images/toolbar-edit.png") left -32px no-repeat;
-}
-
-#toolbar button[role='reload'] {
-	background: url("images/toolbar-reload.png") left top no-repeat;	
-}
-
-#toolbar button[role='help'] {
-	background: url("images/toolbar-help.png") left top no-repeat;	
-	display: none;
-}
-
-.hasHelp #toolbar button[role='help'] {
-	display: inline-block;
-}
-
-.showHelp #toolbar button[role='help'] {
-	color: #FFF;
-	background-position: left -32px;
-}
-
-.theme-slate #toolbar button[role='edit'] {
-	background-image: url("images/slate-toolbar-edit.png");
-}
-
-.theme-slate #toolbar button[role='view'] {
-	text-shadow: #7F613F 0 -1px 0;
-	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
-}
-
-.theme-slate #toolbar button[role='reload'] {
-	background-image: url("images/slate-toolbar-reload.png");
-}
-
-.theme-slate #toolbar button[role='help'] {
-	background-image: url("images/slate-toolbar-help.png");
-}
-
-.showHelp.theme-slate #toolbar button[role='help'] {
-	text-shadow: #7F613F 0 -1px 0;
-}
-
-
-.onEdit #toolbar button[role='view'] {
-	display: inline-block;
-}
-
-.onEdit #toolbar button[role='edit'] {
-	display: none;
-}
-
-#help {
-	width: 300px;
-	height: 400px;
-	position: absolute;
-	margin-top: 10px;
-	right: 10px;
-	z-index: 10000;
-	display: none;
-}
-
-.showHelp #help {
-	display: block;
-}
-
-#content {
-	position: absolute;
-	top: 44px;
-	bottom: 0;
-	overflow: auto;
-	left: 0;
-	right: 0;
-
-	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
-}
-
-#parameters {
-	display:none;
-	padding: 10px 20px;
-	background: url("images/parameters-bg.png");
-	
-	-webkit-border-radius: 4px 4px 0 0;
-	   -moz-border-radius: 4px 4px 0 0;
-		-mz-border-radius: 4px 4px 0 0;
-			border-radius: 4px 4px 0 0;
-}
-
-#parameters label {
-	font-style: italic;
-}
-
-#parameters  label > select, #parameters  label > input{
-	margin-left: 10px;
-}
-
-#parameters > div.inline {
-	display: inline-block;
-}
-
-#parameters > div.inline+div.inline {
-	margin-left: 20px;
-}
-
-#parameters input[type=text],
-#parameters input[type=number] {
-	height: 26px;
-	border: 1px solid #BBB;
-	background-color: #FFF;
-	
-	padding: 0 4px;
-	
-	-webkit-border-radius: 4px;
-	   -moz-border-radius: 4px;
-	    -ms-border-radius: 4px;
-			border-radius: 4px;
-	
-	-webkit-box-shadow: 0 1px 0 #FFF;
-	   -moz-box-shadow: 0 1px 0 #FFF;
-	    -ms-box-shadow: 0 1px 0 #FFF;
-			box-shadow: 0 1px 0 #FFF;
-}
-
-#parameters input.tiny {
-	width: 40px;
-}
-
-#parameters input.small {
-	width: 80px;
-}
-
-#parameters input.medium {
-	width: 120px;
-}
-
-#parameters input.long {
-	width: 160px;
-}
-
-#scene {
-	padding: 20px;
-}
-
-#scene > * {
-	margin: 0 auto;
-}
-.onEdit #scene {
-}
-
-.onEdit #parameters {
-	display: block;
-}
-
-/*
-.card-container {
-  	-webkit-perspective: 600px;
-	width:100%;
-	height: 100%;
-}
-.card {
-	position: relative;
-	width:100%;
-	height: 100%;
-}
-.card > div {
-	position: absolute;
-	width:100%;
-	height: 100%;
-	-webkit-transform-style: preserve-3d;
-  	-webkit-transition: all .5s ease-in-out;
-	-webkit-backface-visibility: hidden;
-}
-.card > div:first-child {
-	-webkit-transform: rotateY( 0deg );
-}
-.card > div:last-child {
-	-webkit-transform: rotateY( -180deg );
-}
-.card.flip > div:first-child {
-	-webkit-transform: rotateY( 180deg );
-}
-.card.flip > div:last-child {
-	-webkit-transform: rotateY( 0deg );
-}
-*/
+html, body {
+	margin:0;
+	padding: 0;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#ubwidget {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	background: url("images/bg.png");
+}
+
+.theme-pad #ubwidget {
+	border-radius: 40px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
+	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
+			border-image: url("images/pad-bd.png") 52 repeat;
+}
+
+.theme-slate #ubwidget {
+	border-radius: 44px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
+	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
+			border-image: url("images/slate-bd.png") 52 repeat;
+}
+
+#ubwidget > .wrapper {
+	position: absolute;
+	top: 0px;
+	bottom: 0px;
+	left: 0px;
+	right: 0px;
+	overflow: hidden;
+}
+
+
+.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
+	position: absolute;
+	top: -49px;
+	bottom: -5px;
+	left: -5px;
+	right: -5px;
+	overflow: hidden;
+}
+
+#toolbar {
+	display: table;
+	width: 100%;
+	height: 44px;
+	font-size: 24px;
+	color: #FFCC99;
+	padding:0 10px;
+}
+
+.theme-pad #toolbar, .theme-slate #toolbar {
+	height: 38px;
+	padding: 6px 0 0;
+}
+
+.theme-slate #toolbar {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+
+#toolbar > * {
+	display: table-cell;
+	height: 100%;
+	vertical-align: middle;
+}
+
+#toolbar .actions {
+	text-align: right;
+}
+
+#toolbar button, h1 {
+	font-weight: normal;
+	font-size: 24px;
+	color: #FFCC99;
+	margin: 0;
+}
+
+.theme-slate #toolbar button, .theme-slate h1 {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+#toolbar button {
+	border: none;
+	padding: none;
+	outline: none;
+	background: none;
+	
+	cursor: pointer;
+	padding-left: 34px;
+	margin-left: 10px;
+	height: 32px;
+}
+
+#toolbar button span {
+	display: block;
+	line-height: 32px;
+}
+
+#toolbar button[role='edit'] {
+	background: url("images/toolbar-edit.png") left top no-repeat;	
+}
+
+#toolbar button[role='view'] {
+	display: none;
+	color: #FFF;
+	background: url("images/toolbar-edit.png") left -32px no-repeat;
+}
+
+#toolbar button[role='reload'] {
+	background: url("images/toolbar-reload.png") left top no-repeat;	
+}
+
+#toolbar button[role='help'] {
+	background: url("images/toolbar-help.png") left top no-repeat;	
+	display: none;
+}
+
+.hasHelp #toolbar button[role='help'] {
+	display: inline-block;
+}
+
+.showHelp #toolbar button[role='help'] {
+	color: #FFF;
+	background-position: left -32px;
+}
+
+.theme-slate #toolbar button[role='edit'] {
+	background-image: url("images/slate-toolbar-edit.png");
+}
+
+.theme-slate #toolbar button[role='view'] {
+	text-shadow: #7F613F 0 -1px 0;
+	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+}
+
+.theme-slate #toolbar button[role='reload'] {
+	background-image: url("images/slate-toolbar-reload.png");
+}
+
+.theme-slate #toolbar button[role='help'] {
+	background-image: url("images/slate-toolbar-help.png");
+}
+
+.showHelp.theme-slate #toolbar button[role='help'] {
+	text-shadow: #7F613F 0 -1px 0;
+}
+
+
+.onEdit #toolbar button[role='view'] {
+	display: inline-block;
+}
+
+.onEdit #toolbar button[role='edit'] {
+	display: none;
+}
+
+#help {
+	width: 300px;
+	height: 400px;
+	position: absolute;
+	margin-top: 10px;
+	right: 10px;
+	z-index: 10000;
+	display: none;
+}
+
+.showHelp #help {
+	display: block;
+}
+
+#content {
+	position: absolute;
+	top: 44px;
+	bottom: 0;
+	overflow: auto;
+	left: 0;
+	right: 0;
+
+	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+}
+
+#parameters {
+	display:none;
+	padding: 10px 20px;
+	background: url("images/parameters-bg.png");
+
+	-webkit-border-radius: 4px 4px 0 0;
+	   -moz-border-radius: 4px 4px 0 0;
+		-mz-border-radius: 4px 4px 0 0;
+			border-radius: 4px 4px 0 0;
+}
+
+#parameters label {
+	font-style: italic;
+}
+
+#parameters select, #parameters input{
+	margin-left: 10px;
+}
+
+#parameters > div.inline {
+     display: inline-table
+}
+
+#parameters > div.inline > div{
+    float: left; 
+    height: 28px; 
+    margin-right: 8px;  
+    padding-top: 5px;
+    font-family: "helvetica neue";
+    font-size: 14px;
+    color: #666666;
+    font-style: italic;
+}
+
+#parameters > div.inline+div.inline {
+	margin-left: 20px;
+}
+
+#parameters input[type=text],
+#parameters input[type=number] {
+	height: 26px;
+	border: 1px solid #BBB;
+	background-color: #FFF;
+	
+	padding: 0 4px;
+	
+	-webkit-border-radius: 4px;
+	   -moz-border-radius: 4px;
+	    -ms-border-radius: 4px;
+			border-radius: 4px;
+	
+	-webkit-box-shadow: 0 1px 0 #FFF;
+	   -moz-box-shadow: 0 1px 0 #FFF;
+	    -ms-box-shadow: 0 1px 0 #FFF;
+			box-shadow: 0 1px 0 #FFF;
+}
+
+#parameters input.tiny {
+	width: 40px;
+}
+
+#parameters input.small {
+	width: 80px;
+}
+
+#parameters input.medium {
+	width: 120px;
+}
+
+#parameters input.long {
+	width: 160px;
+}
+
+#scene {
+	padding: 20px;
+}
+
+#scene > * {
+	margin: 0 auto;
+}
+.onEdit #scene {
+}
+
+.onEdit #parameters {
+	display: block;
+}
+
+/*
+.card-container {
+  	-webkit-perspective: 600px;
+	width:100%;
+	height: 100%;
+}
+.card {
+	position: relative;
+	width:100%;
+	height: 100%;
+}
+.card > div {
+	position: absolute;
+	width:100%;
+	height: 100%;
+	-webkit-transform-style: preserve-3d;
+  	-webkit-transition: all .5s ease-in-out;
+	-webkit-backface-visibility: hidden;
+}
+.card > div:first-child {
+	-webkit-transform: rotateY( 0deg );
+}
+.card > div:last-child {
+	-webkit-transform: rotateY( -180deg );
+}
+.card.flip > div:first-child {
+	-webkit-transform: rotateY( 180deg );
+}
+.card.flip > div:last-child {
+	-webkit-transform: rotateY( 0deg );
+}
+*/
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/help.html b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/help.html
index c8cd974..60c671b 100644
--- a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/help.html
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/help.html
@@ -1,58 +1,58 @@
-<!doctype html>
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-	<link rel="stylesheet" href="css/ubw-help.css">
-
-	<script src="js/lib/modernizr.js" type="text/javascript"></script>
-	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
-	<script src="js/lib/mustache.js" type="text/javascript"></script>
-</head>
-
-<body>
-    <div id="core">
-		<div class="wrapper">
-			<div>
-				<script>
-					function loadFile(filename, locale) {
-						var toload = filename;
-						var nextlocale = undefined;
-						
-						if(locale.length >= 5) {
-							toload += '_' + locale.substring(0, 5) +'-template.js';
-							nextlocale = locale.substring(0, 2);
-						}
-							
-						else if(locale.length >= 2){
-							toload += '_' + locale.substring(0, 2) +'-template.js';
-							nextlocale = '';
-						}
-						else
-							toload += '-template.js';
-						    
-						$.ajax({
-					        url:        toload,
-					        async:      false,
-					        contentType:'text/plain;charset=UTF-8',
-					        dataType:   'text',
-					        success:    function(data, status) {
-											$("#core>.wrapper>div").html(Mustache.render(data, window));                   
-										}
-						})
-						.fail(function() {
-									if(nextlocale !== undefined)
-										loadFile(filename, nextlocale);
-						});
-					}
-					$(document).ready(function(){
-						var locale = window.parent.sankore ? window.parent.sankore.locale() : "";
-						loadFile("js/help", locale);
-					});
-				</script>
-			</div>
-		</div>
-    </div>
-</body>
-
-</html>
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-help.css">
+
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+</head>
+
+<body>
+    <div id="core">
+		<div class="wrapper">
+			<div>
+				<script>
+					function loadFile(filename, locale) {
+						var toload = filename;
+						var nextlocale = undefined;
+						
+						if(locale.length >= 5) {
+							toload += '_' + locale.substring(0, 5) +'-template.js';
+							nextlocale = locale.substring(0, 2);
+						}
+							
+						else if(locale.length >= 2){
+							toload += '_' + locale.substring(0, 2) +'-template.js';
+							nextlocale = '';
+						}
+						else
+							toload += '-template.js';
+						    
+						$.ajax({
+					        url:        toload,
+					        async:      false,
+					        contentType:'text/plain;charset=UTF-8',
+					        dataType:   'text',
+					        success:    function(data, status) {
+											$("#core>.wrapper>div").html(Mustache.render(data, window));                   
+										}
+						})
+						.fail(function() {
+									if(nextlocale !== undefined)
+										loadFile(filename, nextlocale);
+						});
+					}
+					$(document).ready(function(){
+						var locale = window.parent.sankore ? window.parent.sankore.locale() : "";
+						loadFile("js/help", locale);
+					});
+				</script>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/boeuf.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/images/boeuf.png
similarity index 100%
copy from Sankore-3.1/resources/library/pictures/Animaux/boeuf.png
copy to Sankore-3.1/resources/library/interactivities/Transformation.wgt/images/boeuf.png
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/coq.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/images/coq.png
similarity index 100%
copy from Sankore-3.1/resources/library/pictures/Animaux/coq.png
copy to Sankore-3.1/resources/library/interactivities/Transformation.wgt/images/coq.png
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/poule.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/images/poule.png
similarity index 100%
copy from Sankore-3.1/resources/library/pictures/Animaux/poule.png
copy to Sankore-3.1/resources/library/interactivities/Transformation.wgt/images/poule.png
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/vache.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/images/vache.png
similarity index 100%
copy from Sankore-3.1/resources/library/pictures/Animaux/vache.png
copy to Sankore-3.1/resources/library/interactivities/Transformation.wgt/images/vache.png
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/index.html
index f81722f..dbbb0e6 100644
--- a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/index.html
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/index.html
@@ -1,39 +1,39 @@
-<!doctype html>
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-	
-	<link rel="stylesheet" href="css/ubw-main.css">
-    <link rel="stylesheet" href="css/main.css">
-
-	<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
-	
-	<script src="js/lib/modernizr.js" type="text/javascript"></script>
-	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
-	<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
-	<script src="js/lib/mustache.js" type="text/javascript"></script>
-	<script src="js/lib/ubw-main.js" type="text/javascript"></script>
-	<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
-	
-</head>
-
-<body class="hasHelp">
-    <div id="ubwidget" data-number="2" data-themes="pad">
-		<div class="wrapper">
-			<div id="toolbar">
-			</div>
-			<div id="help">
-				<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
-			</div>
-			<div id="content">
-				<div id="parameters">
-				</div>
-				<div id="scene">
-				</div>
-			</div>
-		</div>
-    </div>
-</body>
-
-</html>
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	
+	<link rel="stylesheet" href="css/ubw-main.css">
+    <link rel="stylesheet" href="css/main.css">
+
+	<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
+	
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+	<script src="js/lib/ubw-main.js" type="text/javascript"></script>
+	<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
+	
+</head>
+
+<body class="hasHelp">
+    <div id="ubwidget" data-number="2" data-themes="pad">
+		<div class="wrapper">
+			<div id="toolbar">
+			</div>
+			<div id="help">
+				<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
+			</div>
+			<div id="content">
+				<div id="parameters">
+				</div>
+				<div id="scene">
+				</div>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/ubw-main.js b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/ubw-main.js
index 06213d1..38e685f 100644
--- a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/ubw-main.js
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/ubw-main.js
@@ -13,257 +13,287 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 function log(object) {
-	console.log(object);
+    console.log(object);
 }
 
 function initAfterI18nMessagesLoaded(reload, templates, callbacks) {
-	document.title = fr.njin.i18n.document.title;
+    document.title = fr.njin.i18n.document.title;
 	
-	var ubwidget = $("#ubwidget");
+    var ubwidget = $("#ubwidget");
 	
-	var parameters = Object.create(Parameters,{
-		container: {
-			value: ubwidget
-		},
-		delegate: {
-			value: window.sankore || Object.create(ParametersDelegate)
-		}
-	});
-	
-	var app = Object.create(App, {
-		container: {
-			value: ubwidget
-		},
-		parameters: {
-			value: parameters
-		},
-		reload: {
-			value: reload
-		}
-	});
-
-	app.init();
-	app.onEdit = false;
+    var parameters = Object.create(Parameters,{
+        container: {
+            value: ubwidget
+        },
+        delegate: {
+            value: window.sankore || Object.create(ParametersDelegate)
+        }
+    });
 	
-	if(templates.toolbar) {
-		$("#toolbar").html(Mustache.render(templates.toolbar, window));
-	}
-	if(templates.parameters) {
-		$("#parameters").html(Mustache.render(templates.parameters, window));
-	}
+    var app = Object.create(App, {
+        container: {
+            value: ubwidget
+        },
+        parameters: {
+            value: parameters
+        },
+        reload: {
+            value: reload
+        }
+    });
+    if(!window.sankore.preference("trans","")){
+        app.parameters.value("#Picture0before", JSON.stringify({
+            alt: "coq.png", 
+            src: "images/coq.png", 
+            title: "coq.png"
+        }))
+        app.parameters.value("#Picture0after", JSON.stringify({
+            alt: "poule.png", 
+            src: "images/poule.png", 
+            title: "poule.png"
+        }))
+        app.parameters.value("#Picture1before", JSON.stringify({
+            alt: "boeuf.png", 
+            src: "images/boeuf.png", 
+            title: "boeuf.png"
+        }))
+        app.parameters.value("#Picture1after", JSON.stringify({
+            alt: "vache.png", 
+            src: "images/vache.png", 
+            title: "vache.png"
+        }))
+        app.parameters.value("#UsePicture0before", true)
+        app.parameters.value("#UsePicture0after", true)
+        app.parameters.value("#UsePicture1before", true)
+        app.parameters.value("#UsePicture1after", true)
+    }
+    app.init();
+    app.onEdit = false;	
+    //e("#Picture"+key, JSON.stringify(f));
+        
+        
+    if(templates.toolbar) {
+        $("#toolbar").html(Mustache.render(templates.toolbar, window));
+    }
+    if(templates.parameters) {
+        $("#parameters").html(Mustache.render(templates.parameters, window));
+    }
 	
-	if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
-		callbacks.onTemplatesLoaded(app);
-	}
+    if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
+        callbacks.onTemplatesLoaded(app);
+    }
 	
-	log("Update setting views with stored parameters");
-	$("#parameters (input|select)[role=parameter]").each(function(i, input) {
-		(function(input){
-			var key = input.name;
-			var type = input.type;
-			var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
-			var stored = parameters.value(key);
-			if(isRadioOrcheckbox)
-				$(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
-			else
-				$(input).val(stored);
-			$(input).change(function(){
-				var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
-				parameters.value(key, val);
-			});
-		})(input);
-	});
+    log("Update setting views with stored parameters");
+    $("#parameters (input|select)[role=parameter]").each(function(i, input) {
+        (function(input){
+            var key = input.name;
+            var type = input.type;
+            var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
+            var stored = parameters.value(key);
+            if(isRadioOrcheckbox)
+                $(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
+            else
+                $(input).val(stored);
+            $(input).change(function(){
+                var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
+                parameters.value(key, val);
+            });
+        })(input);
+    });
 	
-	log("Toobar Initialisation");
-	$("button[role=edit]").click(function(){
-		app.onEdit = true;
-		$(document.body).addClass("onEdit");
-		if(callbacks.onEdit && typeof callbacks.onEdit === 'function') {
-			callbacks.onEdit(app);
-		}
-	});
-	$("button[role=view]").click(function(){
-		app.onEdit = false;		
-		$(document.body).removeClass("onEdit");
-		if(callbacks.onView && typeof callbacks.onView === 'function') {
-			callbacks.onView(app);
-		}
-	});
-	$("button[role=reload]").click(function(){
-		app.reload();
-	});
-	$("button[role=help]").click(function(){
-		$("body").toggleClass("showHelp");
-	});
+    log("Toobar Initialisation");
+    $("button[role=edit]").click(function(){
+        app.onEdit = true;
+        $(document.body).addClass("onEdit");
+        if(callbacks.onEdit && typeof callbacks.onEdit === 'function') {
+            callbacks.onEdit(app);
+        }
+    });
+    $("button[role=view]").click(function(){
+        app.onEdit = false;		
+        $(document.body).removeClass("onEdit");
+        if(callbacks.onView && typeof callbacks.onView === 'function') {
+            callbacks.onView(app);
+        }
+    });
+    $("button[role=reload]").click(function(){
+        app.reload();
+    });
+    $("button[role=help]").click(function(){
+        $("body").toggleClass("showHelp");
+    });
 	
-	$("select[name='themes']").change(function() {
-		$("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
-		$("body").addClass("theme-"+$(this).val());
-	});
-	$("body").addClass("theme-"+$("select[name='themes']").val());
+    $("select[name='themes']").change(function() {
+        $("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
+        $("body").addClass("theme-"+$(this).val());
+    });
+    $("body").addClass("theme-"+$("select[name='themes']").val());
 }
 
 function init(reload, templates, callbacks){
-	var locale = window.sankore ? sankore.locale() : "";
-	$.i18n.properties({
-	  	name: 'Messages', 
-		path: 'i18n/',
-		language: locale,
-	  	callback: function(){ 
-			initAfterI18nMessagesLoaded(reload, templates, callbacks);
-		}
-	});
+    var locale = window.sankore ? sankore.locale() : "";
+    $.i18n.properties({
+        name: 'Messages', 
+        path: 'i18n/',
+        language: locale,
+        callback: function(){ 
+            initAfterI18nMessagesLoaded(reload, templates, callbacks);
+        }
+    });
 }
 
 var Parameters = (function(){
-	var self = Object.create({}, {
-		container: {
-			value: null
-		},
-		delegate: {
-			value: null
-		},
-		value: {
-			value: function(key, value) {
-				if(value === undefined) {
-					var val = this.delegate.preference(key);
-					log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
-					return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
-				}
-				else {
-					log("Set parameter value ["+value+"] for key : ["+key+"]");
-					this.delegate.setPreference(key, value);
-					this.container.trigger("preferenceChange", {key: key, value: value});					
-				}
-			}
-		}
-	});
-	return self;
+    var self = Object.create({}, {
+        container: {
+            value: null
+        },
+        delegate: {
+            value: null
+        },
+        value: {
+            value: function(key, value) {
+                if(value === undefined) {
+                    var val = this.delegate.preference(key);
+                    log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
+                    return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
+                }
+                else {
+                    log("Set parameter value ["+value+"] for key : ["+key+"]");
+                    this.delegate.setPreference(key, value);
+                    this.container.trigger("preferenceChange", {
+                        key: key, 
+                        value: value
+                    });					
+                }
+            }
+        }
+    });
+    return self;
 })();
 
 var ParametersDelegate = (function(){
-	var self = Object.create({}, {
-		preference: {
-			value: function(key) {
-				return this[key];
-			}
-		},
-		setPreference: {
-			value: function(key, value) {
-				this[key] = value;
-			}
-		}
-	});
-	return self;
+    var self = Object.create({}, {
+        preference: {
+            value: function(key) {
+                return this[key];
+            }
+        },
+        setPreference: {
+            value: function(key, value) {
+                this[key] = value;
+            }
+        }
+    });
+    return self;
 })();
 
 var App = (function() {
     var self = Object.create({}, {
-		container: {
-			value: null
-		},
-		parameters: {
-			value: null
-		},
+        container: {
+            value: null
+        },
+        parameters: {
+            value: null
+        },
         init: {
-			value: function() {
-				var that = this;
-				this.container.bind("preferenceChange", function(evt, parameter) {
-					that.reload(parameter);
-				});
-				this.reload();
-			}
+            value: function() {
+                var that = this;
+                this.container.bind("preferenceChange", function(evt, parameter) {
+                    that.reload(parameter);
+                });
+                this.reload();
+            }
+        },
+        reload: {
+            value: function(parameter) {
+                if(parameter === undefined)
+                    log("Reload");
+                else
+                    log("Update");
+            }
         },
-		reload: {
-			value: function(parameter) {
-				if(parameter === undefined)
-					log("Reload");
-				else
-					log("Update");
-			}
-		},
-		utils: {
-			value: Object.create({}, {
-				shuffle: {
-					value: function(array) {
-						var unpickedSize = array.length;
-						while(unpickedSize > 0) {
-							var n = Math.floor(Math.random()*unpickedSize);
-							var temp = array[unpickedSize-1];
-							array[unpickedSize-1] = array[n];
-							array[n] = temp;
-							unpickedSize--;
-						}
-					}
-				},
-				guid: {
-					value: function() {
-					    var S4 = function() {
-					       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
-					    };
-					    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
-					}
-				},
-				droppable: {
-					value: function($e, callback) {							
-						$e.bind("dragover", function(){
-							$(this).addClass("hover");
-							return false;
-						});
-						$e.bind("dragleave", function(){
-							$(this).removeClass("hover");
-							return false;
-						});
-						$e.bind("drop", function(e){
-							$(this).removeClass("hover");
-							e = e || window.event;
-							e.preventDefault();
-					        // jQuery wraps the originalEvent, so we try to detect that here...
-					        e = e.originalEvent || e;
+        utils: {
+            value: Object.create({}, {
+                shuffle: {
+                    value: function(array) {
+                        var unpickedSize = array.length;
+                        while(unpickedSize > 0) {
+                            var n = Math.floor(Math.random()*unpickedSize);
+                            var temp = array[unpickedSize-1];
+                            array[unpickedSize-1] = array[n];
+                            array[n] = temp;
+                            unpickedSize--;
+                        }
+                    }
+                },
+                guid: {
+                    value: function() {
+                        var S4 = function() {
+                            return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+                        };
+                        return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
+                    }
+                },
+                droppable: {
+                    value: function($e, callback) {							
+                        $e.bind("dragover", function(){
+                            $(this).addClass("hover");
+                            return false;
+                        });
+                        $e.bind("dragleave", function(){
+                            $(this).removeClass("hover");
+                            return false;
+                        });
+                        $e.bind("drop", function(e){
+                            $(this).removeClass("hover");
+                            e = e || window.event;
+                            e.preventDefault();
+                            // jQuery wraps the originalEvent, so we try to detect that here...
+                            e = e.originalEvent || e;
 							
-							if(window.sankore) {
-								function stringToXML(text){
-								    if (window.ActiveXObject){
-								        var doc=new ActiveXObject('Microsoft.XMLDOM');
-								        doc.async='false';
-								        doc.loadXML(text);
-								    } else {
-								        var parser=new DOMParser();
-								        doc=parser.parseFromString(text,'text/xml');
-								    }
-								    return doc;
-								}
-								var file = stringToXML(e.dataTransfer.getData("text/plain"));
-								callback({
-			                        src: $(file).find("path:eq(0)").text()
-								});
-								return false;
-							}
+                            if(window.sankore) {
+                                function stringToXML(text){
+                                    if (window.ActiveXObject){
+                                        var doc=new ActiveXObject('Microsoft.XMLDOM');
+                                        doc.async='false';
+                                        doc.loadXML(text);
+                                    } else {
+                                        var parser=new DOMParser();
+                                        doc=parser.parseFromString(text,'text/xml');
+                                    }
+                                    return doc;
+                                }
+                                var file = stringToXML(e.dataTransfer.getData("text/plain"));
+                                callback({
+                                    src: $(file).find("path:eq(0)").text()
+                                });
+                                return false;
+                            }
 
-					        // Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).
-					        var files = (e.files || e.dataTransfer.files);
-					        for (var i = 0; i < files.length; i++) {
-								// Loop through our files with a closure so each of our FileReader's are isolated.
-					            (function (i) {
-									if(typeof FileReader !== "undefined") {
-										var reader = new FileReader();
-						                reader.onload = function (event) {
-											callback({
-						                        src: event.target.result,
-						                        title: (files[i].name),
-						                        alt: (files[i].name)
-						                    });
-						                };
-						                reader.readAsDataURL(files[i]);
-									}
-					            })(i);
-					        }
-					        return false;
-						});
-					}
-				}
-			})
-		}
+                            // Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).
+                            var files = (e.files || e.dataTransfer.files);
+                            for (var i = 0; i < files.length; i++) {
+                                // Loop through our files with a closure so each of our FileReader's are isolated.
+                                (function (i) {
+                                    if(typeof FileReader !== "undefined") {
+                                        var reader = new FileReader();
+                                        reader.onload = function (event) {
+                                            callback({
+                                                src: event.target.result,
+                                                title: (files[i].name),
+                                                alt: (files[i].name)
+                                            });
+                                        };
+                                        reader.readAsDataURL(files[i]);
+                                    }
+                                })(i);
+                            }
+                            return false;
+                        });
+                    }
+                }
+            })
+        }
     });
     return self;
 })();
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/main.js b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/main.js
index c896992..40aa288 100644
--- a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/main.js
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/main.js
@@ -31,13 +31,28 @@ function cards(app, index) {
 	
     var beforecontent = parameters.value("#"+index+"before");
     var aftercontent = parameters.value("#"+index+"after");
-	
+
+    /*var sample1 = "", sample2 = "";
+    
+    if(!window.sankore || !window.sankore.preference("trans","")){
+        if(index == 1){
+            sample1 = "<img src='images/coq.png' class='uploadPic' title='coq.png' alt='coq.png'/>";
+            sample2 = "<img src='images/poule.png' class='uploadPic' title='poule.png' alt='poule.png'/>";
+        } else {
+            sample1 = "<img src='images/boeuf.png' class='uploadPic' title='boeuf.png' alt='boeuf.png'/>";
+            sample2 = "<img src='images/vache.png' class='uploadPic' title='vache.png' alt='vache.png'/>";
+        }
+    }*/
+        
     var before = $("<div rel='before'><div class='card'><div class='text'><div>"+( beforecontent !== undefined ? beforecontent : "" )+"</div></div><div class='picture'><div></div></div></div></div>");
     var after = $("<div rel='after'><div class='card'><div class='text'><div>"+( aftercontent !== undefined ? aftercontent : "" )+"</div></div><div class='picture'><div></div></div></div></div>");
 	
     var usePicture = parameters.value("#UsePicture"+index+"before") === "true"
     || parameters.value("#UsePicture"+index+"before") == true;
-	
+    
+    //if(!window.sankore || !window.sankore.preference("trans",""))
+        //usePicture = true;
+    
     if(usePicture) {
         before.addClass("usePicture");	
         var f = $.parseJSON(parameters.value("#Picture"+index+"before"));
@@ -49,6 +64,9 @@ function cards(app, index) {
 	
     usePicture = parameters.value("#UsePicture"+index+"after") === "true"
     || parameters.value("#UsePicture"+index+"after") == true;
+
+    //if(!window.sankore || !window.sankore.preference("trans",""))
+        //usePicture = true;
 	
     if(usePicture) {
         after.addClass("usePicture");
@@ -66,6 +84,7 @@ function cards(app, index) {
 }
 
 function makeEditable(app, row, index) {
+    var tmp_flag = false;
     var parameters = app.parameters;
     var editable = row.find(".text>div").eq(0);
     var key = index+editable.parent().parent().parent().attr('rel');	
@@ -78,7 +97,7 @@ function makeEditable(app, row, index) {
 	
     function setSwicth() {
         var val = parameters.value("#UsePicture"+key) === "true"
-        || parameters.value("#UsePicture"+key) === true;
+        || parameters.value("#UsePicture"+key) === true;        
         if(val) {
             row.addClass("usePicture");
         }else {
@@ -204,4 +223,10 @@ $(document).ready(function(){
         toolbar: toolbarTemplate, 
         parameters: parametersTemplate
     }, callbacks);
+    
+    if (window.widget) {
+        window.widget.onleave = function(){
+            sankore.setPreference("trans", "true");
+        }
+    }
 });
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/templates.js b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/templates.js
index 7200068..7e3c7d3 100644
--- a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/templates.js
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/templates.js
@@ -1,26 +1,24 @@
-var toolbarTemplate = 	
-			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
-			'<div class="actions">'+
-				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
-				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
-				'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
-				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
-			'</div>';
-				
-var parametersTemplate = 
-			'<div class="inline">'+
-				'<label>{{fr.njin.i18n.parameters.label.themes}}'+
-					'<select name="themes" role="parameter">'+
-						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
-						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
-						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
-					'</select>'+
-				'</label>'+
-			'</div>'+
-			'<div class="inline">'+
-				'<label>{{fr.njin.i18n.transformation.parameters.label.number}}'+
-					'<input  class="tiny" type="number" name="number" min="2" role="parameter">'+
-				'</label>'+
-			'</div>'+
-			'<div id="edit-cards">'+
+var toolbarTemplate = 	
+			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
+			'<div class="actions">'+
+				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
+				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
+				'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
+				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
+			'</div>';
+				
+var parametersTemplate = 
+			'<div class="inline">'+
+				'<div>{{fr.njin.i18n.parameters.label.themes}}</div>'+
+					'<select name="themes" role="parameter">'+
+						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
+						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
+						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
+					'</select>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<div>{{fr.njin.i18n.transformation.parameters.label.number}}</div>'+
+					'<input  class="tiny" type="number" name="number" min="2" role="parameter">'+				
+			'</div>'+
+			'<div id="edit-cards">'+
 			'</div>';
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/config.xml b/Sankore-3.1/resources/library/search/Application Planete.wgs/config.xml
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/config.xml
copy to Sankore-3.1/resources/library/search/Application Planete.wgs/config.xml
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/css/basic.css b/Sankore-3.1/resources/library/search/Application Planete.wgs/css/basic.css
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/css/basic.css
copy to Sankore-3.1/resources/library/search/Application Planete.wgs/css/basic.css
diff --git a/Sankore-3.1/resources/library/search/Application Planete.wgs/icon.png b/Sankore-3.1/resources/library/search/Application Planete.wgs/icon.png
new file mode 100644
index 0000000..1aca527
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Application Planete.wgs/icon.png differ
diff --git a/Sankore-3.1/resources/library/search/Application Planete.wgs/icon.thumbnail.png b/Sankore-3.1/resources/library/search/Application Planete.wgs/icon.thumbnail.png
new file mode 100644
index 0000000..1aca527
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Application Planete.wgs/icon.thumbnail.png differ
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/down.png b/Sankore-3.1/resources/library/search/Application Planete.wgs/images/down.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/down.png
copy to Sankore-3.1/resources/library/search/Application Planete.wgs/images/down.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/greySquare.png b/Sankore-3.1/resources/library/search/Application Planete.wgs/images/greySquare.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/greySquare.png
copy to Sankore-3.1/resources/library/search/Application Planete.wgs/images/greySquare.png
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/icon-close.png b/Sankore-3.1/resources/library/search/Application Planete.wgs/images/icon-close.png
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/icon-close.png
copy to Sankore-3.1/resources/library/search/Application Planete.wgs/images/icon-close.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/popupBack.png b/Sankore-3.1/resources/library/search/Application Planete.wgs/images/popupBack.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/popupBack.png
copy to Sankore-3.1/resources/library/search/Application Planete.wgs/images/popupBack.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search.png b/Sankore-3.1/resources/library/search/Application Planete.wgs/images/search.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search.png
copy to Sankore-3.1/resources/library/search/Application Planete.wgs/images/search.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search_app.png b/Sankore-3.1/resources/library/search/Application Planete.wgs/images/search_app.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search_app.png
copy to Sankore-3.1/resources/library/search/Application Planete.wgs/images/search_app.png
diff --git a/Sankore-3.1/resources/library/search/Application Planete.wgs/images/thumbnail_icon.png b/Sankore-3.1/resources/library/search/Application Planete.wgs/images/thumbnail_icon.png
new file mode 100644
index 0000000..1aca527
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Application Planete.wgs/images/thumbnail_icon.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/trgDown.png b/Sankore-3.1/resources/library/search/Application Planete.wgs/images/trgDown.png
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/trgDown.png
copy to Sankore-3.1/resources/library/search/Application Planete.wgs/images/trgDown.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/trgUp.png b/Sankore-3.1/resources/library/search/Application Planete.wgs/images/trgUp.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/trgUp.png
copy to Sankore-3.1/resources/library/search/Application Planete.wgs/images/trgUp.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/up.png b/Sankore-3.1/resources/library/search/Application Planete.wgs/images/up.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/up.png
copy to Sankore-3.1/resources/library/search/Application Planete.wgs/images/up.png
diff --git a/Sankore-3.1/resources/library/search/Application Planete.wgs/index.html b/Sankore-3.1/resources/library/search/Application Planete.wgs/index.html
new file mode 100644
index 0000000..7a127e1
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Application Planete.wgs/index.html	
@@ -0,0 +1,264 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
+<html xmlns="http://www.w3.org/1999/xhtml">
+    <head>
+        <title>Planete Sankore Interactivity Search</title>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript">
+            var category = "widget";
+            var ict = "AssetMetadata.Application";
+            var type = "application";
+            var thumbnails = true;
+            var minHeight = 177;
+            var minWidth = 150;
+            
+            var currentIndex = 0;
+            var currentTerm = "";
+            var limit = 10;
+            var filtersDisplayed = false; //display or hide filters
+ 
+            function addPaginationLinks(totalResults) {
+                var curPage = currentIndex; // check what page the app is on
+                var pagesDiv = $("<div id='resultFooter' class='resultFooter'>");
+                for (var i = 0; i < 8; i++) {
+                    if (i * limit < totalResults) {
+                   
+                    var link = $("<a class='pager_button'></a>").attr('href', 'javascript:gotoPage('+i+');').html(i+1).appendTo(pagesDiv);
+                    if (curPage == i) {
+                        link.addClass('active');
+                    }
+                    }
+                }
+
+                $("#disc_nav_cont #resultFooter").remove();
+                pagesDiv.insertBefore($('#disclaimer'));
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragstart", imageDragging, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragenter", imageDragenter, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragleave", imageDragleave, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragover", imageDragover, false);
+                })
+            }
+
+            function searchFail(jqXHR, textStatus, errorThrown) {
+              alert('Impossible to connect to Planete Sankore: ' + textStatus + ' ' + errorThrown);
+            }
+
+            function searchComplete(json) {
+                    // Grab our content div, clear it.
+                    var totalResults = json.totalResults;
+                    var contentDiv = $('#searchResult').empty();
+                    // Loop through our results, printing them to the page.
+                    var results = json.rows;
+                    for (var i = 0; i < results.length; i++) {
+                        // For each result write it's title and image to the screen
+                        var result = results[i];
+                        var imgContainer = $("<div class='imgContainer' draggable='true'>");
+                        var title = document.createElement('div');
+                        var iUrl = $("<input type='hidden'/>");
+                        var iContent = $("<input type='hidden'/>");
+                        var iHeight = $("<input type='hidden'/>");
+                        var iWidth = $("<input type='hidden'/>");
+                        var iTitle = $("<input type='hidden'/>");
+                        var iThumbnailUrl = $("<input type='hidden'/>");           
+                        // We use titleNoFormatting so that no HTML tags are left in the 
+                        // title
+                        title.innerHTML = result.title;
+                           	var newImg = document.createElement('img');
+
+                        	// There is also a result.file property which has the escaped version
+                            if (thumbnails) {
+                                var filename = result.file.substring(result.file.lastIndexOf("/")+1);
+        	                newImg.src = result.file + "/" + filename + "/icon.svg";
+                                newImg.onerror = function() { 
+					newImg.src = result.file + "/" + filename + "/icon.png";
+					iThumbnailUrl.attr("value",newImg.src);
+                                };
+                            } else {
+        	                   	newImg.src = "./images/thumbnail_icon.png";
+            				}
+                        	var imgWidth = (result.tbWidth > minWidth)?result.tbWidth:minWidth;
+                        	var imgHeight = (result.tbHeight > minHeight)?result.tbHeight:minHeight;
+                        	imgContainer.width(imgWidth).height(imgHeight);
+                        	imgContainer.append($(newImg));
+			            iUrl.attr("value", result.file + "?type=" + type);
+                        iContent.attr("value", result.title);
+                        iHeight.attr("value", result.height);
+                        iWidth.attr("value", result.width);
+                        iTitle.attr("value",decodeURIComponent(result.file.substring(result.file.lastIndexOf("/")+1)));
+                        iThumbnailUrl.attr("value",newImg.src);
+                        imgContainer.append($(title));  
+                        imgContainer.append(iUrl);
+                        imgContainer.append(iContent);
+                        imgContainer.append(iHeight);
+                        imgContainer.append(iWidth);
+                        imgContainer.append(iTitle);
+                        imgContainer.append(iThumbnailUrl);
+
+                        // Put our title + image in the content
+                        imgContainer.appendTo(contentDiv);
+
+                    }
+                    // Now add links to additional pages of search results.
+                    addPaginationLinks(totalResults);
+            }
+
+            function imageDragging(e){
+                e.dataTransfer.setData("text/plain",$(this).find("input:hidden").eq(0).val());
+            }
+            
+            function imageDragleave(e){
+                return false;
+            }
+            
+            function imageDragover(e){
+                return false;
+            }
+            
+            function imageDragenter(e){
+                return false;
+            }
+            
+            $(document).ready(function(){
+
+                //variables
+                var mode = false; //search or view mode
+                var hide = false; //hide or no main panel
+    
+                //basic containers and elements       
+                var disc_nav_cont = $("<div id='disc_nav_cont' class='disc_nav_cont'>").appendTo("body");    
+                var disclaimer = $("<div id='disclaimer' class='disclaimer'>Recherche d'applications (.wgt) sur Sankoré<div>").appendTo(disc_nav_cont);
+                var search = $("<div id='search' class='search'>").appendTo("body");
+				    
+                var togglePages = $("<div id='togglePages' class='togglePages'>").appendTo(search);
+                var toggleIcon = $("<div id='toggleIcon' class='toggleIcon'>").appendTo(togglePages);
+    
+                var subSearchInput = $("<div id='subSearchInput' class='subSearch'>").appendTo(search);
+                var subSearchFilter = $("<div id='subSearchFilter' class='subSearch'>").appendTo(search);
+    
+                var searchInput = $("<input id='searchInput' class='searchInput' type='text'/>").appendTo(subSearchInput);
+                var searchButton = $("<div id='searchButton' class='searchButton'>").appendTo(subSearchInput);
+                // var toggleFilters = $("<div id='toggleFilters' class='toggleFilters'>").appendTo(subSearchInput);
+    
+                //adding filters to the wgt
+                var selectFilter = $("<select id='sizeFilter' class='filterSelect'>")
+                .append($("<option value='0'>Any</option>"))
+                .append($("<option value='1'>Small</option>"))
+                .append($("<option value='2'>Medium</option>"))
+                .append($("<option value='3'>Large</option>"))
+                .append($("<option value='4'>Extra large</option>"));
+                $("<div class='filterContainer'>").append("<span>Size:</span>").append(selectFilter).appendTo(subSearchFilter);
+                
+                //mouse click actions 
+                /*
+                toggleFilters.click(function(){
+                    if(filtersDisplayed){
+                        subSearchFilter.hide();
+                        toggleFilters.css("background-image","url(images/down.png)");
+                        filtersDisplayed = false;
+                    } else {
+                        subSearchFilter.show();
+                        toggleFilters.css("background-image","url(images/up.png)");
+                        filtersDisplayed = true;
+                    }
+                });
+                */
+
+		/*togglePages.click(function(event){
+                    if(mode){
+                        hide = false;
+                        $("#search, #disclaimer").slideDown('slow', function(){
+                            toggleIcon.css("background-image","url(images/trgUp.png)");
+                            togglePages.appendTo("#search").css("top","").css("bottom","-14px");                            
+                        });
+                        mode = false;
+                    } else {
+                        hide = true;
+                        $("#search, #disclaimer").slideUp('slow', function(){
+                            toggleIcon.css("background-image","url(images/trgDown.png)");
+                            togglePages.appendTo("body").css("top","0");                            
+                        });
+                        mode = true;
+                    }
+                });*/
+                
+                searchButton.click(function(){
+                    if(!hide){
+                        runSearch(searchInput.val(), 0);
+                        //togglePages.trigger("click");
+                    }
+                });
+                
+                searchInput.keydown(function(event){
+                    if(!hide){
+                        if((event.keyCode == 0xA)||(event.keyCode == 0xD)){
+                            runSearch(searchInput.val(), 0);
+                            //togglePages.trigger("click");
+                        }
+                              
+                    }
+                });
+                (
+                $(".imgContainer").live("click",function(){
+                    sankore.sendFileMetadata(createMetaData($(this)));
+                }));
+                
+				/*$(window).resize(function(){
+                    disclaimer.width($("body").width()-20);
+                    search.width($("body").width()-20);
+                    toggleIcon.css("margin-left",(togglePages.width()/2 - 7));
+                })*/
+				
+            });
+            
+            function gotoPage(i) { 
+                runSearch(currentTerm, i);             
+            } 
+
+            // launching the search on planete sankore 
+            function runSearch(term, index) {
+                currentTerm = term;
+                currentIndex = index;
+                var start = index * limit;
+                var url = "http://planete.sankore.org/xwiki/bin/view/Search/Resources?xpage=plain&category=" + category + "&ict=" + ict + "&level=&sort=title&dir=ASC&terms=" + escape(term) + "&start=" + start + "&limit=" + limit;
+		$.ajax({
+			url: url,
+  			success: searchComplete,
+  			error: searchFail,
+            dataType: "json"
+		});
+            }
+ 
+            function createMetaData(parent){
+                var meta = "";
+                //alert($(this).find("input:hidden").eq(0).val());
+                meta = "<metadata><data><key>Type</key><value>Audio</value></data><data><key>Url</key><value>" + 
+                    parent.find("input:hidden").eq(0).val() + 
+                    "</value></data><data><key>Content</key><value>" + 
+                    parent.find("input:hidden").eq(1).val() +
+                    "</value></data><data><key>Height</key><value>n/a</value></data>"+
+                    "<data><key>Width</key><value>n/a</value></data><data><key>Title</key><value>" +
+                    parent.find("input:hidden").eq(4).val() +
+                    "</value></data><data><key>thumbnailUrl</key><value>" +
+                    parent.find("input:hidden").eq(5).val() +
+                    "</value></data></metadata>";
+                return meta;
+            }
+        </script>
+
+    </head>
+    <body style="font-family: Arial;border: 0 none;">
+        <div id="searchResult"></div>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/search/Application Planete.wgs/scripts/jquery-1.6.2.min.js
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/scripts/jquery-1.6.2.min.js
copy to Sankore-3.1/resources/library/search/Application Planete.wgs/scripts/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/css/basic.css b/Sankore-3.1/resources/library/search/Google images.wgs/css/basic.css
index 9e5abdc..deaeaef 100644
--- a/Sankore-3.1/resources/library/search/Google images.wgs/css/basic.css	
+++ b/Sankore-3.1/resources/library/search/Google images.wgs/css/basic.css	
@@ -72,14 +72,14 @@ a {
 #searchResult {
     overflow: hidden;
     text-align: center;
-    margin-top: 50px;
+   /* margin-top: 50px;*/
     margin-bottom: 85px;
 }
 
 .search{   
-    position: fixed;
+    /*position: fixed;
     top: 0;
-    left: 0;
+    left: 0;*/
     padding: 5px;
     background-color: #BBBBBB;
     border-bottom: solid 4px #EEEEEE;
@@ -127,12 +127,13 @@ a {
 
 .subSearch{
     margin: 0;
-    float: left;    
+    /*float: left;  */  
 }
 
 #subSearchInput{
     width: 100%;
-    float: left;
+    /*height: 46px;*/
+    display: inline-table;
     box-sizing: border-box;
     -webkit-box-sizing: border-box;
     padding: 5px;
@@ -141,7 +142,6 @@ a {
 
 #subSearchFilter{
     width: 100%;
-    float: left;
     display: none;
 }
 
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/index.html b/Sankore-3.1/resources/library/search/Google images.wgs/index.html
index b1c7647..d59d44b 100644
--- a/Sankore-3.1/resources/library/search/Google images.wgs/index.html	
+++ b/Sankore-3.1/resources/library/search/Google images.wgs/index.html	
@@ -61,7 +61,7 @@
 
                     // Loop through our results, printing them to the page.
                     var results = imageSearch.results;
-                    console.log(results);
+
                     for (var i = 0; i < results.length; i++) {
                         // For each result write it's title and image to the screen
                         var result = results[i];
@@ -159,10 +159,10 @@
 
                 //localization
                 locale = locales[lang];
-
+                var search = $("<div id='search' class='search'>").insertBefore("#searchResult");
                 var disc_nav_cont = $("<div id='disc_nav_cont' class='disc_nav_cont'>").appendTo("body");    
                 var disclaimer = $("<div id='disclaimer' class='disclaimer'>"+locale.disclaimer_title+"<div>").appendTo(disc_nav_cont);
-                var search = $("<div id='search' class='search'>").appendTo("body");
+                
     
                 //var togglePages = $("<div id='togglePages' class='togglePages'>").appendTo(search);
                 //var toggleIcon = $("<div id='toggleIcon' class='toggleIcon'>").appendTo(togglePages);
@@ -250,7 +250,7 @@
                         filtersDisplayed = false;
                     } else {
                         //$("#search").height(120);
-                        subSearchFilter.show();
+                        subSearchFilter.css("display","inline-block");
                         toggleFilters.css("background-image","url(images/up.png)");
                         filtersDisplayed = true;
                     }
@@ -296,7 +296,7 @@
                 });
 
                 $(".imgContainer").live("click",function(){
-					sankore.sendFileMetadata(createMetaData($(this)));
+                    sankore.sendFileMetadata(createMetaData($(this)));
                 });
                 
                 //checking filters
@@ -427,17 +427,18 @@
                             imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_RIGHTS,google.search.ImageSearch.RIGHTS_COMMERCIAL_MODIFICATION);
                             break;                        
                     }
+                    imgSearch.setRestriction(google.search.Search.RESTRICT_SAFESEARCH,google.search.Search.SAFESEARCH_STRICT);
                     return imgSearch;
                 }
                 
                 $(window).resize(function(){
-		  var width = "200px";
-		  if ($('#search').width() < 230) {
-		    width = $("#search").width()-40;
-		  } else {
-		    width = "200px";
-		  }
-		  $('select').selectBox('destroy').css('width', width).selectBox();
+                    var width = "200px";
+                    if ($('#search').width() < 230) {
+                        width = $("#search").width()-40;
+                    } else {
+                        width = "200px";
+                    }
+                    $('select').selectBox('destroy').css('width', width).selectBox();
                 });
                 
                 $(window).trigger("resize");
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/config.xml b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/config.xml
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/config.xml
copy to Sankore-3.1/resources/library/search/Interactivite Planete.wgs/config.xml
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/css/basic.css b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/css/basic.css
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/css/basic.css
copy to Sankore-3.1/resources/library/search/Interactivite Planete.wgs/css/basic.css
diff --git a/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/icon.png b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/icon.png
new file mode 100644
index 0000000..81c9865
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/icon.png differ
diff --git a/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/icon.thumbnail.png b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/icon.thumbnail.png
new file mode 100644
index 0000000..81c9865
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/icon.thumbnail.png differ
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/down.png b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/down.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/down.png
copy to Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/down.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/greySquare.png b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/greySquare.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/greySquare.png
copy to Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/greySquare.png
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/icon-close.png b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/icon-close.png
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/icon-close.png
copy to Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/icon-close.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/popupBack.png b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/popupBack.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/popupBack.png
copy to Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/popupBack.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search.png b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/search.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search.png
copy to Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/search.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search_app.png b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/search_app.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search_app.png
copy to Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/search_app.png
diff --git a/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/thumbnail_icon.png b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/thumbnail_icon.png
new file mode 100644
index 0000000..81c9865
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/thumbnail_icon.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/trgDown.png b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/trgDown.png
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/trgDown.png
copy to Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/trgDown.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/trgUp.png b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/trgUp.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/trgUp.png
copy to Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/trgUp.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/up.png b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/up.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/images/up.png
copy to Sankore-3.1/resources/library/search/Interactivite Planete.wgs/images/up.png
diff --git a/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/index.html b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/index.html
new file mode 100644
index 0000000..309c5ac
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/index.html	
@@ -0,0 +1,264 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
+<html xmlns="http://www.w3.org/1999/xhtml">
+    <head>
+        <title>Planete Sankore Interactivity Search</title>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript">
+            var category = "widget";
+            var ict = "AssetMetadata.Interactivite";
+            var type = "interactivite";
+            var thumbnails = true;
+            var minHeight = 177;
+            var minWidth = 150;
+
+            var currentIndex = 0;
+            var currentTerm = "";
+            var limit = 10;
+            var filtersDisplayed = false; //display or hide filters
+
+            function addPaginationLinks(totalResults) {
+                var curPage = currentIndex; // check what page the app is on
+                var pagesDiv = $("<div id='resultFooter' class='resultFooter'>");
+                for (var i = 0; i < 8; i++) {
+                    if (i * limit < totalResults) {
+
+                        var link = $("<a class='pager_button'></a>").attr('href', 'javascript:gotoPage('+i+');').html(i+1).appendTo(pagesDiv);
+                        if (curPage == i) {
+                            link.addClass('active');
+                        }
+                    }
+                }
+
+                $("#disc_nav_cont #resultFooter").remove();
+                pagesDiv.insertBefore($('#disclaimer'));
+
+                $(".imgContainer").each(function(){
+                        this.addEventListener("dragstart", imageDragging, false);
+                        })
+
+                $(".imgContainer").each(function(){
+                        this.addEventListener("dragenter", imageDragenter, false);
+                        })
+
+                $(".imgContainer").each(function(){
+                        this.addEventListener("dragleave", imageDragleave, false);
+                        })
+
+                $(".imgContainer").each(function(){
+                        this.addEventListener("dragover", imageDragover, false);
+                        })
+            }
+
+function searchFail(jqXHR, textStatus, errorThrown) {
+    alert('Impossible to connect to Planete Sankore: ' + textStatus + ' ' + errorThrown);
+}
+
+function searchComplete(json) {
+    // Grab our content div, clear it.
+    var totalResults = json.totalResults;
+    var contentDiv = $('#searchResult').empty();
+    // Loop through our results, printing them to the page.
+    var results = json.rows;
+    for (var i = 0; i < results.length; i++) {
+        // For each result write it's title and image to the screen
+        var result = results[i];
+        var imgContainer = $("<div class='imgContainer' draggable='true'>");
+        var title = document.createElement('div');
+        var iUrl = $("<input type='hidden'/>");
+        var iContent = $("<input type='hidden'/>");
+        var iHeight = $("<input type='hidden'/>");
+        var iWidth = $("<input type='hidden'/>");
+        var iTitle = $("<input type='hidden'/>");
+        var iThumbnailUrl = $("<input type='hidden'/>");
+
+        // We use titleNoFormatting so that no HTML tags are left in the 
+        // title
+        title.innerHTML = result.title;
+        var newImg = document.createElement('img');
+
+        // There is also a result.file property which has the escaped version
+        if (thumbnails) {
+            var filename = result.file.substring(result.file.lastIndexOf("/")+1);
+            newImg.src = result.file + "/" + filename + "/icon.svg";
+            newImg.onerror = function() { 
+                newImg.src = result.file + "/" + filename + "/icon.png";
+                iThumbnailUrl.attr("value",newImg.src);
+            };
+        } else {
+            newImg.src = "./images/thumbnail_icon.png";
+        }
+        var imgWidth = (result.tbWidth > minWidth)?result.tbWidth:minWidth;
+        var imgHeight = (result.tbHeight > minHeight)?result.tbHeight:minHeight;
+        imgContainer.width(imgWidth).height(imgHeight);
+        imgContainer.append($(newImg));
+        iUrl.attr("value", result.file + "?type=" + type);
+        iContent.attr("value", result.title);
+        iHeight.attr("value", result.height);
+        iWidth.attr("value", result.width);
+        iTitle.attr("value",decodeURIComponent(result.file.substring(result.file.lastIndexOf("/")+1)));
+        iThumbnailUrl.attr("value",newImg.src);
+        imgContainer.append($(title));  
+        imgContainer.append(iUrl);
+        imgContainer.append(iContent);
+        imgContainer.append(iHeight);
+        imgContainer.append(iWidth);
+        imgContainer.append(iTitle);
+        imgContainer.append(iThumbnailUrl);
+        // Put our title + image in the content
+        imgContainer.appendTo(contentDiv);
+
+    }
+    // Now add links to additional pages of search results.
+    addPaginationLinks(totalResults);
+}
+
+function imageDragging(e){
+    e.dataTransfer.setData("text/plain",$(this).find("input:hidden").eq(0).val());
+}
+
+function imageDragleave(e){
+    return false;
+}
+
+function imageDragover(e){
+    return false;
+}
+
+function imageDragenter(e){
+    return false;
+}
+
+$(document).ready(function(){
+
+        //variables
+        var mode = false; //search or view mode
+        var hide = false; //hide or no main panel
+
+        //basic containers and elements       
+        var disc_nav_cont = $("<div id='disc_nav_cont' class='disc_nav_cont'>").appendTo("body");    
+        var disclaimer = $("<div id='disclaimer' class='disclaimer'>Recherche d'interactivités (.wgt) sur Sankoré<div>").appendTo(disc_nav_cont);
+        var search = $("<div id='search' class='search'>").appendTo("body");
+
+        var togglePages = $("<div id='togglePages' class='togglePages'>").appendTo(search);
+        var toggleIcon = $("<div id='toggleIcon' class='toggleIcon'>").appendTo(togglePages);
+
+        var subSearchInput = $("<div id='subSearchInput' class='subSearch'>").appendTo(search);
+        var subSearchFilter = $("<div id='subSearchFilter' class='subSearch'>").appendTo(search);
+
+        var searchInput = $("<input id='searchInput' class='searchInput' type='text'/>").appendTo(subSearchInput);
+        var searchButton = $("<div id='searchButton' class='searchButton'>").appendTo(subSearchInput);
+        // var toggleFilters = $("<div id='toggleFilters' class='toggleFilters'>").appendTo(subSearchInput);
+
+        //adding filters to the wgt
+        var selectFilter = $("<select id='sizeFilter' class='filterSelect'>")
+            .append($("<option value='0'>Any</option>"))
+            .append($("<option value='1'>Small</option>"))
+            .append($("<option value='2'>Medium</option>"))
+            .append($("<option value='3'>Large</option>"))
+            .append($("<option value='4'>Extra large</option>"));
+        $("<div class='filterContainer'>").append("<span>Size:</span>").append(selectFilter).appendTo(subSearchFilter);
+
+        //mouse click actions 
+        /*
+           toggleFilters.click(function(){
+           if(filtersDisplayed){
+           subSearchFilter.hide();
+           toggleFilters.css("background-image","url(images/down.png)");
+           filtersDisplayed = false;
+           } else {
+           subSearchFilter.show();
+           toggleFilters.css("background-image","url(images/up.png)");
+           filtersDisplayed = true;
+           }
+           });
+         */
+
+        /*togglePages.click(function(event){
+          if(mode){
+          hide = false;
+          $("#search, #disclaimer").slideDown('slow', function(){
+          toggleIcon.css("background-image","url(images/trgUp.png)");
+          togglePages.appendTo("#search").css("top","").css("bottom","-14px");                            
+          });
+          mode = false;
+          } else {
+          hide = true;
+          $("#search, #disclaimer").slideUp('slow', function(){
+          toggleIcon.css("background-image","url(images/trgDown.png)");
+          togglePages.appendTo("body").css("top","0");                            
+          });
+          mode = true;
+          }
+          });*/
+
+        searchButton.click(function(){
+                if(!hide){
+                runSearch(searchInput.val(), 0);
+                //togglePages.trigger("click");
+                }
+                });
+
+        searchInput.keydown(function(event){
+                if(!hide){
+                if((event.keyCode == 0xA)||(event.keyCode == 0xD)){
+                runSearch(searchInput.val(), 0);
+                //togglePages.trigger("click");
+                }
+
+                }
+                });
+        (
+         $(".imgContainer").live("click",function(){
+             sankore.sendFileMetadata(createMetaData($(this)));
+             }));
+
+        /*$(window).resize(function(){
+          disclaimer.width($("body").width()-20);
+          search.width($("body").width()-20);
+          toggleIcon.css("margin-left",(togglePages.width()/2 - 7));
+          })*/
+
+});
+
+function gotoPage(i) { 
+    runSearch(currentTerm, i);             
+} 
+
+// launching the search on planete sankore 
+function runSearch(term, index) {
+    currentTerm = term;
+    currentIndex = index;
+    var start = index * limit;
+    var url = "http://planete.sankore.org/xwiki/bin/view/Search/Resources?xpage=plain&category=" + category + "&ict=" + ict + "&level=&sort=title&dir=ASC&terms=" + escape(term) + "&start=" + start + "&limit=" + limit;
+    $.ajax({
+url: url,
+success: searchComplete,
+error: searchFail,
+dataType: "json"
+});
+}
+
+function createMetaData(parent){
+    var meta = "";
+    //alert($(this).find("input:hidden").eq(0).val());
+    meta = "<metadata><data><key>Type</key><value>Audio</value></data><data><key>Url</key><value>" + 
+        parent.find("input:hidden").eq(0).val() + 
+        "</value></data><data><key>Content</key><value>" + 
+        parent.find("input:hidden").eq(1).val() +
+        "</value></data><data><key>Height</key><value>n/a</value></data>"+
+        "<data><key>Width</key><value>n/a</value></data><data><key>Title</key><value>" +
+        parent.find("input:hidden").eq(4).val() +
+        "</value></data><data><key>thumbnailUrl</key><value>" +
+        parent.find("input:hidden").eq(5).val() +
+        "</value></data></metadata>";
+    return meta;
+}
+</script>
+
+    </head>
+    <body style="font-family: Arial;border: 0 none;">
+        <div id="searchResult"></div>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/search/Interactivite Planete.wgs/scripts/jquery-1.6.2.min.js
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/scripts/jquery-1.6.2.min.js
copy to Sankore-3.1/resources/library/search/Interactivite Planete.wgs/scripts/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/sankore.qrc b/Sankore-3.1/resources/sankore.qrc
index fcefa2e..af5dbd1 100644
--- a/Sankore-3.1/resources/sankore.qrc
+++ b/Sankore-3.1/resources/sankore.qrc
@@ -33,6 +33,8 @@
         <file>images/resizeTool.svg</file>
         <file>images/resizeRuler.svg</file>
         <file>images/resizeCompass.svg</file>
+        <file>images/circle.svg</file>
+        <file>images/roundeRrectangle.svg</file>
         <file>images/closeTool.svg</file>
         <file>images/hflipTool.svg</file>
         <file>images/vflipTool.svg</file>
@@ -342,9 +344,7 @@
         <file>images/moveUpDisabled.svg</file>
         <file>images/teacher_close.png</file>
         <file>images/teacher_open.png</file>
-        <file>images/teacher_close_disabled.png</file>
         <file>style.qss</file>
-        <file>images/teacher_open_disabled.png</file>
         <file>images/libpalette/WebSearchCategory.svg</file>
         <file>images/download_close.png</file>
         <file>images/download_open.png</file>
@@ -367,5 +367,20 @@
         <file>images/duplicateDisabled.svg</file>
         <file>images/teacherGuide/flash_24x24.svg</file>
         <file>images/toque.svg</file>
+        <file>images/createLinkPalette/LinkPage.svg</file>
+        <file>images/createLinkPalette/LinkWeb.svg</file>
+        <file>images/createLinkPalette/PlayAudio.svg</file>
+        <file>images/libpalette/BookmarkCategory.svg</file>
+        <file>images/libpalette/bookmarkIcon.svg</file>
+        <file>images/toolbar/bookmark.png</file>
+        <file>images/toolbar/bookmark.svg</file>
+        <file>images/trapFlashPalette/downloadToBoard.svg</file>
+        <file>images/trapFlashPalette/downloadToLibrary.svg</file>
+        <file>images/trapFlashPalette/linkToBoard.svg</file>
+        <file>images/trapFlashPalette/linkToLibrary.svg</file>
+        <file>images/trapFlashPalette/trappedFlashIcon.svg</file>
+        <file>images/trapFlashPalette/trappedSoundIcon.svg</file>
+        <file>images/trapFlashPalette/trappedVideoIcon.svg</file>
+        <file>images/trapFlashPalette/trappedIcon.svg</file>
     </qresource>
 </RCC>
diff --git a/Sankore-3.1/resources/startupHints/config.xml b/Sankore-3.1/resources/startupHints/config.xml
new file mode 100644
index 0000000..25b99bd
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/config.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://uniboard.mnemis.com/widgets/notes" 
+        version="1.2"
+        width="610"
+        height="360" 
+        ub:resizable="false">     
+   
+		<name>Notes</name>
+		<author href="http://www.getuniboard.com"
+	            email="info at mnemis.com">Mnemis SA</author>
+		<description>Associer images</description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/startupHints/css/basic.css b/Sankore-3.1/resources/startupHints/css/basic.css
new file mode 100644
index 0000000..37d15d2
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/css/basic.css
@@ -0,0 +1,80 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;
+    font-family: sans-serif;
+    overflow: hidden;
+}
+
+body{
+    background-color: #aaaaaa;
+}
+
+#main{
+    background-color: #eeeeee;
+    width: 99%;
+    margin: 0px;
+    margin-left:1px;
+    padding: 0px;
+    height: 99%;
+    border-color:#999999;
+    border-width:2px;
+    border-radius:10px;
+    border-style:solid;
+}
+
+#content{
+    width: 100%;
+    margin: 0px;
+    padding: 0px;
+    height: 300px;
+}
+
+iframe{
+    border: none;
+    padding: 5px;
+}
+
+#separator{
+    width: 96%;
+    margin: 0 auto;
+    border: 2px solid #ccc;
+}
+
+#controls{
+    height: 30px;
+}
+
+#navigation{
+    margin-left: 10px;
+    height: 100%;
+    float: left;
+    margin-top: 5px;
+}
+
+#left{
+    width: 30px;
+    height: 30px;
+    background-image: url(../images/left.png);
+    cursor: pointer;
+    float: left;
+}
+
+#right{
+    width: 30px;
+    height: 30px;
+    background-image: url(../images/right.png);
+    cursor: pointer;
+    float: right;
+}
+
+#title{
+    width: 250px;
+    height: 100%;
+    float: left;
+    margin: 0 5px;
+    text-align: center;
+    vertical-align: middle;
+    display: table;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/icon.svg b/Sankore-3.1/resources/startupHints/icon.svg
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Ass images.wgt/icon.svg
copy to Sankore-3.1/resources/startupHints/icon.svg
diff --git a/Sankore-3.1/resources/startupHints/images/left.png b/Sankore-3.1/resources/startupHints/images/left.png
new file mode 100644
index 0000000..786b87a
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/images/left.png differ
diff --git a/Sankore-3.1/resources/startupHints/images/right.png b/Sankore-3.1/resources/startupHints/images/right.png
new file mode 100644
index 0000000..4d40983
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/images/right.png differ
diff --git a/Sankore-3.1/resources/startupHints/index.html b/Sankore-3.1/resources/startupHints/index.html
new file mode 100644
index 0000000..1ce5509
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/index.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Introduce</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript">
+            var current = 1, files_count = 0;
+            $(document).ready(function(){
+                var lang = (window.sankore)?sankore.locale().substr(0,2):"fr", tmp = false;
+               
+                while(1){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/' + (files_count + 1) + '.html',
+                        async: false,
+                        success: function(data){
+                            files_count ++;
+                        },
+                        error: function(){
+                            if(files_count == 0 && lang != "en")
+                                lang = "en";
+                            else
+                                tmp = true;
+                        }
+                    });                    
+                    if(tmp)
+                        break;
+                }            
+            
+                if(files_count > 0){
+                    current = Math.floor((Math.random()*files_count)+1);
+                
+                    $("#source").attr("src", "locales/" + lang + "/1.html");                    
+                    $("#right").click(function(){
+                        if(current < files_count){
+                            current++;
+                        } else
+                            current = 1;
+                            
+                        $("#source").attr("src", "locales/" + lang + "/" + current + ".html");
+                    })
+                    
+                    $("#left").click(function(){
+                        if(current > 1){
+                            current--;                            
+                        } else
+                            current = files_count;
+                            
+                        $("#source").attr("src", "locales/" + lang + "/" + current + ".html");
+                    })
+                } else 
+                    $("#source").attr("src", "locales/" + lang + "/error.html");               
+                
+            });
+            
+            function setTitle(){
+                var iframe = document.getElementById("source");                    
+                $("#title span").html(current + "/" + files_count + ": " + iframe.contentWindow.document.getElementsByTagName("title")[0].innerHTML);
+            }
+        </script>
+    </head>
+    <body>
+        <div id="main">
+        <div id="content">
+            <iframe width='98%' height='95%' src='' id='source' onload='setTitle()'></iframe>
+        </div>
+        <div id="separator"></div>
+        <div id="controls">
+            <div id="navigation">
+                <div id="left"></div>
+                <div id="title"><span style='display: table-cell; vertical-align: inherit; width: 100%;'></span></div>
+                <div id="right"></div>
+            </div>
+        </div>
+        </div>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/startupHints/js/jquery-1.6.2.min.js
similarity index 100%
copy from Sankore-3.1/resources/library/search/Audio Planete.wgs/scripts/jquery-1.6.2.min.js
copy to Sankore-3.1/resources/startupHints/js/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/startupHints/js/jquery-ui-1.8.9.custom.min.js b/Sankore-3.1/resources/startupHints/js/jquery-ui-1.8.9.custom.min.js
new file mode 100644
index 0000000..145ba1f
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/js/jquery-ui-1.8.9.custom.min.js
@@ -0,0 +1,781 @@
+/*!
+ * jQuery UI 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.9",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,
+NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,
+"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");
+if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f,
+"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,
+d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}});
+c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&
+b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery);
+;/*!
+ * jQuery UI Widget 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)b(d).triggerHandler("remove");k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,
+a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.charAt(0)==="_")return h;
+e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,
+this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},
+widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},
+enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+;/*!
+ * jQuery UI Mouse 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ */
+(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(true===c.data(b.target,a.widgetName+".preventClickEvent")){c.removeData(b.target,a.widgetName+".preventClickEvent");b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=
+a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=
+this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);
+return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;a.target==this._mouseDownEvent.target&&c.data(a.target,this.widgetName+".preventClickEvent",
+true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+;/*
+ * jQuery UI Position 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Position
+ */
+(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY,
+left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+=
+k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-=
+m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left=
+d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+=
+a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b),
+g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery);
+;/*
+ * jQuery UI Draggable 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Draggables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper==
+"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b=
+this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-
+this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();
+d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||
+this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&
+this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==
+a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||
+0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],
+this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-
+(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment==
+"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[(a.containment=="document"?0:d(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(a.containment=="document"?0:d(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?
+0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),
+10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor==
+Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():
+f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY;
+if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])e=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/
+b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;e=this.originalPageX+Math.round((e-this.originalPageX)/b.grid[0])*b.grid[0];e=this.containment?!(e-this.offset.click.left<this.containment[0]||e-this.offset.click.left>this.containment[2])?e:!(e-this.offset.click.left<this.containment[0])?e-b.grid[0]:e+b.grid[0]:e}}return{top:g-this.offset.click.top-
+this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop()),left:e-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=
+this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(a,b,c){c=c||this._uiHash();d.ui.plugin.call(this,a,[b,c]);if(a=="drag")this.positionAbs=this._convertPositionTo("absolute");return d.Widget.prototype._trigger.call(this,a,b,c)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});d.extend(d.ui.draggable,{version:"1.8.9"});
+d.ui.plugin.add("draggable","connectToSortable",{start:function(a,b){var c=d(this).data("draggable"),f=c.options,e=d.extend({},b,{item:c.element});c.sortables=[];d(f.connectToSortable).each(function(){var g=d.data(this,"sortable");if(g&&!g.options.disabled){c.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",a,e)}})},stop:function(a,b){var c=d(this).data("draggable"),f=d.extend({},b,{item:c.element});d.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=
+0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(a);this.instance.options.helper=this.instance.options._helper;c.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",a,f)}})},drag:function(a,b){var c=d(this).data("draggable"),f=this;d.each(c.sortables,function(){this.instance.positionAbs=
+c.positionAbs;this.instance.helperProportions=c.helperProportions;this.instance.offset.click=c.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=d(f).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return b.helper[0]};a.target=this.instance.currentItem[0];this.instance._mouseCapture(a,
+true);this.instance._mouseStart(a,true,true);this.instance.offset.click.top=c.offset.click.top;this.instance.offset.click.left=c.offset.click.left;this.instance.offset.parent.left-=c.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=c.offset.parent.top-this.instance.offset.parent.top;c._trigger("toSortable",a);c.dropped=this.instance.element;c.currentItem=c.element;this.instance.fromOutside=c}this.instance.currentItem&&this.instance._mouseDrag(a)}else if(this.instance.isOver){this.instance.isOver=
+0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",a,this.instance._uiHash(this.instance));this.instance._mouseStop(a,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&&this.instance.placeholder.remove();c._trigger("fromSortable",a);c.dropped=false}})}});d.ui.plugin.add("draggable","cursor",{start:function(){var a=d("body"),b=d(this).data("draggable").options;if(a.css("cursor"))b._cursor=
+a.css("cursor");a.css("cursor",b.cursor)},stop:function(){var a=d(this).data("draggable").options;a._cursor&&d("body").css("cursor",a._cursor)}});d.ui.plugin.add("draggable","iframeFix",{start:function(){var a=d(this).data("draggable").options;d(a.iframeFix===true?"iframe":a.iframeFix).each(function(){d('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})},
+stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=
+document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop+c.scrollSpeed;else if(a.pageY-b.overflowOffset.top<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop-
+c.scrollSpeed;if(!c.axis||c.axis!="y")if(b.overflowOffset.left+b.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft+c.scrollSpeed;else if(a.pageX-b.overflowOffset.left<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft-c.scrollSpeed}else{if(!c.axis||c.axis!="x")if(a.pageY-d(document).scrollTop()<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()-c.scrollSpeed);else if(d(window).height()-
+(a.pageY-d(document).scrollTop())<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()+c.scrollSpeed);if(!c.axis||c.axis!="y")if(a.pageX-d(document).scrollLeft()<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()-c.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()+c.scrollSpeed)}f!==false&&d.ui.ddmanager&&!c.dropBehaviour&&d.ui.ddmanager.prepareOffsets(b,a)}});d.ui.plugin.add("draggable",
+"snap",{start:function(){var a=d(this).data("draggable"),b=a.options;a.snapElements=[];d(b.snap.constructor!=String?b.snap.items||":data(draggable)":b.snap).each(function(){var c=d(this),f=c.offset();this!=a.element[0]&&a.snapElements.push({item:this,width:c.outerWidth(),height:c.outerHeight(),top:f.top,left:f.left})})},drag:function(a,b){for(var c=d(this).data("draggable"),f=c.options,e=f.snapTolerance,g=b.offset.left,n=g+c.helperProportions.width,m=b.offset.top,o=m+c.helperProportions.height,h=
+c.snapElements.length-1;h>=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e<g&&g<k+e&&j-e<m&&m<l+e||i-e<g&&g<k+e&&j-e<o&&o<l+e||i-e<n&&n<k+e&&j-e<m&&m<l+e||i-e<n&&n<k+e&&j-e<o&&o<l+e){if(f.snapMode!="inner"){var p=Math.abs(j-o)<=e,q=Math.abs(l-m)<=e,r=Math.abs(i-n)<=e,s=Math.abs(k-g)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:j-c.helperProportions.height,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",
+{top:l,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:i-c.helperProportions.width}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:k}).left-c.margins.left}var t=p||q||r||s;if(f.snapMode!="outer"){p=Math.abs(j-m)<=e;q=Math.abs(l-o)<=e;r=Math.abs(i-g)<=e;s=Math.abs(k-n)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:j,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:l-c.helperProportions.height,
+left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:i}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:k-c.helperProportions.width}).left-c.margins.left}if(!c.snapElements[h].snapping&&(p||q||r||s||t))c.options.snap.snap&&c.options.snap.snap.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[h].item}));c.snapElements[h].snapping=p||q||r||s||t}else{c.snapElements[h].snapping&&c.options.snap.release&&c.options.snap.release.call(c.element,
+a,d.extend(c._uiHash(),{snapItem:c.snapElements[h].item}));c.snapElements[h].snapping=false}}}});d.ui.plugin.add("draggable","stack",{start:function(){var a=d(this).data("draggable").options;a=d.makeArray(d(a.stack)).sort(function(c,f){return(parseInt(d(c).css("zIndex"),10)||0)-(parseInt(d(f).css("zIndex"),10)||0)});if(a.length){var b=parseInt(a[0].style.zIndex)||0;d(a).each(function(c){this.style.zIndex=b+c});this[0].style.zIndex=b+a.length}}});d.ui.plugin.add("draggable","zIndex",{start:function(a,
+b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("zIndex"))b._zIndex=a.css("zIndex");a.css("zIndex",b.zIndex)},stop:function(a,b){a=d(this).data("draggable").options;a._zIndex&&d(b.helper).css("zIndex",a._zIndex)}})})(jQuery);
+;/*
+ * jQuery UI Droppable 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Droppables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.draggable.js
+ */
+(function(d){d.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,b=a.accept;this.isover=0;this.isout=1;this.accept=d.isFunction(b)?b:function(c){return c.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};d.ui.ddmanager.droppables[a.scope]=d.ui.ddmanager.droppables[a.scope]||[];d.ui.ddmanager.droppables[a.scope].push(this);
+a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=d.ui.ddmanager.droppables[this.options.scope],b=0;b<a.length;b++)a[b]==this&&a.splice(b,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,b){if(a=="accept")this.accept=d.isFunction(b)?b:function(c){return c.is(b)};d.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&
+this.element.addClass(this.options.activeClass);b&&this._trigger("activate",a,this.ui(b))},_deactivate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);b&&this._trigger("deactivate",a,this.ui(b))},_over:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass);
+this._trigger("over",a,this.ui(b))}},_out:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",a,this.ui(b))}},_drop:function(a,b){var c=b||d.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return false;var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g=
+d.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==c.options.scope&&g.accept.call(g.element[0],c.currentItem||c.element)&&d.ui.intersect(c,d.extend(g,{offset:g.element.offset()}),g.options.tolerance)){e=true;return false}});if(e)return false;if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop",
+a,this.ui(c));return this.element}return false},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}});d.extend(d.ui.droppable,{version:"1.8.9"});d.ui.intersect=function(a,b,c){if(!b.offset)return false;var e=(a.positionAbs||a.position.absolute).left,g=e+a.helperProportions.width,f=(a.positionAbs||a.position.absolute).top,h=f+a.helperProportions.height,i=b.offset.left,k=i+b.proportions.width,j=b.offset.top,l=j+b.proportions.height;
+switch(c){case "fit":return i<=e&&g<=k&&j<=f&&h<=l;case "intersect":return i<e+a.helperProportions.width/2&&g-a.helperProportions.width/2<k&&j<f+a.helperProportions.height/2&&h-a.helperProportions.height/2<l;case "pointer":return d.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,j,i,b.proportions.height,b.proportions.width);case "touch":return(f>=j&&f<=l||h>=j&&h<=l||f<j&&h>l)&&(e>=
+i&&e<=k||g>=i&&g<=k||e<i&&g>k);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f<c.length;f++)if(!(c[f].options.disabled||a&&!c[f].accept.call(c[f].element[0],a.currentItem||a.element))){for(var h=0;h<g.length;h++)if(g[h]==c[f].element[0]){c[f].proportions.height=0;continue a}c[f].visible=c[f].element.css("display")!=
+"none";if(c[f].visible){c[f].offset=c[f].element.offset();c[f].proportions={width:c[f].element[0].offsetWidth,height:c[f].element[0].offsetHeight};e=="mousedown"&&c[f]._activate.call(c[f],b)}}},drop:function(a,b){var c=false;d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&d.ui.intersect(a,this,this.options.tolerance))c=c||this._drop.call(this,b);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem||
+a.element)){this.isout=1;this.isover=0;this._deactivate.call(this,b)}}});return c},drag:function(a,b){a.options.refreshPositions&&d.ui.ddmanager.prepareOffsets(a,b);d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var c=d.ui.intersect(a,this,this.options.tolerance);if(c=!c&&this.isover==1?"isout":c&&this.isover==0?"isover":null){var e;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){e=
+d.data(g[0],"droppable");e.greedyChild=c=="isover"?1:0}}if(e&&c=="isover"){e.isover=0;e.isout=1;e._out.call(e,b)}this[c]=1;this[c=="isout"?"isover":"isout"]=0;this[c=="isover"?"_over":"_out"].call(this,b);if(e&&c=="isout"){e.isout=0;e.isover=1;e._over.call(e,b)}}}})}}})(jQuery);
+;/*
+ * jQuery UI Resizable 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(e){e.widget("ui.resizable",e.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");e.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,
+_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&e.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),
+top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=
+this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",
+nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d<c.length;d++){var f=e.trim(c[d]),g=e('<div class="ui-resizable-handle '+("ui-resizable-"+f)+'"></div>');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor==
+String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection();
+this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};
+if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),
+d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=
+this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:
+this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",
+b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;
+f={width:c.size.width-(f?0:c.sizeDiff.width),height:c.size.height-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",
+b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top=
+a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=l(b.height)&&a.maxHeight&&a.maxHeight<b.height,g=l(b.width)&&a.minWidth&&a.minWidth>b.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,
+k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var d=[c.css("borderTopWidth"),
+c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],f=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=e.map(d,function(g,h){g=parseInt(g,10)||0;h=parseInt(f[h],10)||0;return g+h})}e.browser.msie&&(e(b).is(":hidden")||e(b).parents(":hidden").length)||c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=
+this.element.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+
+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,
+arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,
+{version:"1.8.9"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,
+function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=
+(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=
+false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-
+a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",
+b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top",
+"Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,
+f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=
+a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+
+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&
+e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",
+height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=
+d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery);
+;/*
+ * jQuery UI Selectable 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),
+selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,
+c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting",
+c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d=
+this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");
+a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&
+!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=
+e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.9"})})(jQuery);
+;/*
+ * jQuery UI Sortable 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Sortables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(d){d.widget("ui.sortable",d.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable");
+this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,
+arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=
+c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,
+{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();
+if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",
+a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");
+if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop+b.scrollSpeed;else if(a.pageY-this.overflowOffset.top<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop-b.scrollSpeed;if(this.overflowOffset.left+
+this.scrollParent[0].offsetWidth-a.pageX<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft+b.scrollSpeed;else if(a.pageX-this.overflowOffset.left<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft-b.scrollSpeed}else{if(a.pageY-d(document).scrollTop()<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()-b.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()+
+b.scrollSpeed);if(a.pageX-d(document).scrollLeft()<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()-b.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()+b.scrollSpeed)}c!==false&&d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+
+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(b=this.items.length-1;b>=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,
+c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==
+document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length-
+1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});
+this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},toArray:function(a){var b=this._getItemsAsjQuery(a&&
+a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+j<k&&b+l>g&&b+l<h;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?
+"width":"height"]>a[this.floating?"width":"height"]?j:g<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<h&&i<e+this.helperProportions.height/2&&f-this.helperProportions.height/2<k},_intersectsWithPointer:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left,a.width);b=b&&a;a=this._getDragVerticalDirection();var c=this._getDragHorizontalDirection();if(!b)return false;return this.floating?
+c&&c=="right"||a=="down"?2:1:a&&(a=="down"?2:1)},_intersectsWithSides:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width);var c=this._getDragVerticalDirection(),e=this._getDragHorizontalDirection();return this.floating&&e?e=="right"&&a||e=="left"&&!a:c&&(c=="down"&&b||c=="up"&&!b)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;
+return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=
+d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});
+return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(a){this.items=[];this.containers=[this];var b=this.items,c=[[d.isFunction(this.options.items)?this.options.items.call(this.element[0],a,{item:this.currentItem}):d(this.options.items,this.element),this]],e=this._connectWith();if(e)for(var f=e.length-1;f>=0;f--)for(var g=
+d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h<g;h++){i=d(e[h]);i.data("sortable-item",a);b.push({item:i,instance:a,width:0,height:0,left:0,top:0})}}},refreshPositions:function(a){if(this.offsetParent&&this.helper)this.offset.parent=
+this._getParentOffset();for(var b=this.items.length-1;b>=0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=
+e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];
+if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);
+c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===
+1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)<b){b=Math.abs(h-f);e=this.items[g]}}if(e||this.options.dropOnEmpty){this.currentContainer=
+this.containers[c];e?this._rearrange(a,e,null,true):this._rearrange(a,null,this.containers[c].element,true);this._trigger("change",a,this._uiHash());this.containers[c]._trigger("change",a,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}}},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a,this.currentItem])):
+b.helper=="clone"?this.currentItem.clone():this.currentItem;a.parents("body").length||d(b.appendTo!="parent"?b.appendTo:this.currentItem[0].parentNode)[0].appendChild(a[0]);if(a[0]==this.currentItem[0])this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")};if(a[0].style.width==""||b.forceHelperSize)a.width(this.currentItem.width());if(a[0].style.height==
+""||b.forceHelperSize)a.height(this.currentItem.height());return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=
+this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),
+10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions=
+{width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||
+document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)){var b=d(a.containment)[0];a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,
+b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=
+document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():
+e?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0]))this.offset.relative=this._getRelativeOffset();var f=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-
+this.offset.click.left<this.containment[0])f=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<
+this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;f=this.originalPageX+Math.round((f-this.originalPageX)/b.grid[0])*b.grid[0];f=this.containment?!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:!(f-this.offset.click.left<this.containment[0])?f-b.grid[0]:f+b.grid[0]:f}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&
+this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())}},_rearrange:function(a,b,c,e){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?b.item[0]:b.item[0].nextSibling);this.counter=
+this.counter?++this.counter:1;var f=this,g=this.counter;window.setTimeout(function(){g==f.counter&&f.refreshPositions(!e)},0)},_clear:function(a,b){this.reverting=false;var c=[];!this._noFinalSort&&this.currentItem[0].parentNode&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var e in this._storedCSS)if(this._storedCSS[e]=="auto"||this._storedCSS[e]=="static")this._storedCSS[e]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();
+this.fromOutside&&!b&&c.push(function(f){this._trigger("receive",f,this._uiHash(this.fromOutside))});if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!b)c.push(function(f){this._trigger("update",f,this._uiHash())});if(!d.ui.contains(this.element[0],this.currentItem[0])){b||c.push(function(f){this._trigger("remove",f,this._uiHash())});for(e=this.containers.length-1;e>=0;e--)if(d.ui.contains(this.containers[e].element[0],
+this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",
+g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}return false}b||
+this._trigger("beforeStop",a,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!b){for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){d.Widget.prototype._trigger.apply(this,arguments)===false&&this.cancel()},_uiHash:function(a){var b=a||this;return{helper:b.helper,placeholder:b.placeholder||d([]),position:b.position,
+originalPosition:b.originalPosition,offset:b.positionAbs,item:b.currentItem,sender:a?a.element:null}}});d.extend(d.ui.sortable,{version:"1.8.9"})})(jQuery);
+;/*
+ * jQuery UI Accordion 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */
+(function(c){c.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");
+a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
+if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",
+function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("<span></span>").addClass("ui-icon "+
+a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex");
+this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons();
+b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target);
+a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+
+c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options;
+if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);
+if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(),
+e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight||
+e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",
+tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.9",animations:{slide:function(a,b){a=
+c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);f[i]={value:j[1],
+unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide",
+paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery);
+;/*
+ * jQuery UI Autocomplete 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *	jquery.ui.position.js
+ */
+(function(d){d.widget("ui.autocomplete",{options:{appendTo:"body",delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,f;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){f=false;var e=d.ui.keyCode;
+switch(c.keyCode){case e.PAGE_UP:a._move("previousPage",c);break;case e.PAGE_DOWN:a._move("nextPage",c);break;case e.UP:a._move("previous",c);c.preventDefault();break;case e.DOWN:a._move("next",c);c.preventDefault();break;case e.ENTER:case e.NUMPAD_ENTER:if(a.menu.active){f=true;c.preventDefault()}case e.TAB:if(!a.menu.active)return;a.menu.select(c);break;case e.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=a.element.val()){a.selectedItem=
+null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(f){f=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=d("<ul></ul>").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||
+"body",b)[0]).mousedown(function(c){var e=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(g){g.target!==a.element[0]&&g.target!==e&&!d.ui.contains(e,g.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,e){e=e.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:e})&&/^key/.test(c.originalEvent.type)&&a.element.val(e.value)},selected:function(c,e){var g=e.item.data("item.autocomplete"),
+h=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=h;setTimeout(function(){a.previous=h;a.selectedItem=g},1)}false!==a._trigger("select",c,{item:g})&&a.element.val(g.value);a.term=a.element.val();a.close(c);a.selectedItem=g},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");
+this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&&b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,f;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,e){e(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source===
+"string"){f=this.options.source;this.source=function(c,e){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:f,data:c,dataType:"json",success:function(g,h,i){i===a.xhr&&e(g);a.xhr=null},error:function(g){g===a.xhr&&e([]);a.xhr=null}})}}else this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)!==false)return this._search(a)},_search:function(a){this.pending++;
+this.element.addClass("ui-autocomplete-loading");this.source({term:a},this.response)},_response:function(a){if(!this.options.disabled&&a&&a.length){a=this._normalize(a);this._suggest(a);this._trigger("open")}else this.close();this.pending--;this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this.menu.element.hide();this.menu.deactivate();this._trigger("close",a)}},_change:function(a){this.previous!==
+this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(a){if(a.length&&a[0].label&&a[0].value)return a;return d.map(a,function(b){if(typeof b==="string")return{label:b,value:b};return d.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(a){var b=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(b,a);this.menu.deactivate();this.menu.refresh();b.show();this._resizeMenu();b.position(d.extend({of:this.element},this.options.position))},
+_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth(),this.element.outerWidth()))},_renderMenu:function(a,b){var f=this;d.each(b,function(c,e){f._renderItem(a,e)})},_renderItem:function(a,b){return d("<li></li>").data("item.autocomplete",b).append(d("<a></a>").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);
+else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,b){var f=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return f.test(c.label||c.value||c)})}})})(jQuery);
+(function(d){d.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(b){if(d(b.target).closest(".ui-menu-item a").length){b.preventDefault();a.select(b)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",
+-1).mouseenter(function(b){a.activate(b,d(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var f=b.offset().top-this.element.offset().top,c=this.element.attr("scrollTop"),e=this.element.height();if(f<0)this.element.attr("scrollTop",c+f);else f>=e&&this.element.attr("scrollTop",c+f-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:b})},
+deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,f){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);
+a.length?this.activate(f,a):this.activate(f,this.element.children(b))}else this.activate(f,this.element.children(b))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item:first"));else{var b=this.active.offset().top,f=this.element.height(),c=this.element.children(".ui-menu-item").filter(function(){var e=d(this).offset().top-b-f+d(this).height();return e<10&&e>-10});c.length||(c=this.element.children(".ui-menu-item:last"));this.activate(a,
+c)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(".ui-menu-item:last"));else{var b=this.active.offset().top,f=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-b+f-d(this).height();return c<10&&c>-10});result.length||(result=this.element.children(".ui-menu-item:first"));
+this.activate(a,result)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element.attr("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})})(jQuery);
+;/*
+ * jQuery UI Button 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */
+(function(a){var g,i=function(b){a(":ui-button",b.target.form).each(function(){var c=a(this).data("button");setTimeout(function(){c.refresh()},1)})},h=function(b){var c=b.name,d=b.form,e=a([]);if(c)e=d?a(d).find("[name='"+c+"']"):a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form});return e};a.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",
+i);if(typeof this.options.disabled!=="boolean")this.options.disabled=this.element.attr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var b=this,c=this.options,d=this.type==="checkbox"||this.type==="radio",e="ui-state-hover"+(!d?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",
+function(){if(!c.disabled){a(this).addClass("ui-state-hover");this===g&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){c.disabled||a(this).removeClass(e)}).bind("focus.button",function(){a(this).addClass("ui-state-focus")}).bind("blur.button",function(){a(this).removeClass("ui-state-focus")});d&&this.element.bind("change.button",function(){b.refresh()});if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).toggleClass("ui-state-active");
+b.buttonElement.attr("aria-pressed",b.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed",true);var f=b.element[0];h(f).not(f).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");
+g=this;a(document).one("mouseup",function(){g=null})}).bind("mouseup.button",function(){if(c.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(f){if(c.disabled)return false;if(f.keyCode==a.ui.keyCode.SPACE||f.keyCode==a.ui.keyCode.ENTER)a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(f){f.keyCode===a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",
+c.disabled)},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type==="radio"){this.buttonElement=this.element.parents().last().find("label[for="+this.element.attr("id")+"]");this.element.addClass("ui-helper-hidden-accessible");var b=this.element.is(":checked");b&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=
+this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active  ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());this.hasTitle||
+this.buttonElement.removeAttr("title");a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")h(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed",
+true):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"),
+c=a("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>");d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary");
+this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()},
+destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery);
+;/*
+ * jQuery UI Dialog 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *  jquery.ui.button.js
+ *	jquery.ui.draggable.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.position.js
+ *	jquery.ui.resizable.js
+ */
+(function(c,j){var k={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},l={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&
+c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",
+-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role",
+"button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=
+b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&
+a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0]){e=c(this).css("z-index");
+isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);
+d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===f[0]&&e.shiftKey){g.focus(1);return false}}});
+c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(f,
+h){h=c.isFunction(h)?{click:h,text:f}:h;f=c('<button type="button"></button>').attr(h,true).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&f.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=
+d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,
+position:f.position,size:f.size}}a=a===j?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,
+h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===
+1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);if(g in k)e=true;if(g in
+l)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");
+break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=this.options,b,d,e=
+this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-b,0));this.uiDialog.is(":data(resizable)")&&
+this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.9",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===
+0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()<c.ui.dialog.overlay.maxZ)return false})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),
+height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);
+b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,
+function(){a=a.add(this)});a.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
+;/*
+ * jQuery UI Slider 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var b=this,a=this.options;this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");a.disabled&&this.element.addClass("ui-slider-disabled ui-disabled");
+this.range=d([]);if(a.range){if(a.range===true){this.range=d("<div></div>");if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}else this.range=d("<div></div>");this.range.appendTo(this.element).addClass("ui-slider-range");if(a.range==="min"||a.range==="max")this.range.addClass("ui-slider-range-"+a.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle");
+if(a.values&&a.values.length)for(;d(".ui-slider-handle",this.element).length<a.values.length;)d("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur();
+else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!b.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e=
+false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");h=b._start(c,f);if(h===false)return}break}i=b.options.step;h=b.options.values&&b.options.values.length?(g=b.values(f)):(g=b.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=b._valueMin();break;case d.ui.keyCode.END:g=b._valueMax();break;case d.ui.keyCode.PAGE_UP:g=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h===
+b._valueMax())return;g=b._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===b._valueMin())return;g=b._trimAlignValue(h-i);break}b._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(c,e);b._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");
+this._mouseDestroy();return this},_mouseCapture:function(b){var a=this.options,c,e,f,h,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(a.range===true&&this.values(1)===a.min){g+=1;f=d(this.handles[g])}if(this._start(b,
+g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();a=f.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-f.width()/2,top:b.pageY-a.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true},
+_mouseDrag:function(b){var a=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a;
+if(this.orientation==="horizontal"){a=this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=
+this.values(a);c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var e;if(this.options.values&&this.options.values.length){e=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>e||a===1&&c<e))c=e;if(c!==this.values(a)){e=this.values();e[a]=c;b=this._trigger("slide",b,{handle:this.handles[a],value:c,values:e});this.values(a?0:1);b!==false&&this.values(a,c,true)}}else if(c!==this.value()){b=this._trigger("slide",b,{handle:this.handles[a],
+value:c});b!==false&&this.value(c)}},_stop:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);c.values=this.values()}this._trigger("stop",b,c)},_change:function(b,a){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);c.values=this.values()}this._trigger("change",b,c)}},value:function(b){if(arguments.length){this.options.value=
+this._trimAlignValue(b);this._refreshValue();this._change(null,0)}return this._value()},values:function(b,a){var c,e,f;if(arguments.length>1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f<c.length;f+=1){c[f]=this._trimAlignValue(e[f]);this._change(null,f)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(b):this.value();
+else return this._values()},_setOption:function(b,a){var c,e=0;if(d.isArray(this.options.values))e=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(b){case "disabled":if(a){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation();
+this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<e;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var b=this.options.value;return b=this._trimAlignValue(b)},_values:function(b){var a,c;if(arguments.length){a=this.options.values[b];
+return a=this._trimAlignValue(a)}else{a=this.options.values.slice();for(c=0;c<a.length;c+=1)a[c]=this._trimAlignValue(a[c]);return a}},_trimAlignValue:function(b){if(b<=this._valueMin())return this._valueMin();if(b>=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},
+_refreshValue:function(){var b=this.options.range,a=this.options,c=this,e=!this._animateOff?a.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},a.animate);
+if(k===1)c.range[e?"animate":"css"]({width:f-g+"%"},{queue:false,duration:a.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},a.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:a.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1,
+1)[e?"animate":"css"]({width:f+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.9"})})(jQuery);
+;/*
+ * jQuery UI Tabs 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */
+(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading…</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&&
+e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=
+d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]||
+(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
+this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected=
+this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");
+if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));
+this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+
+g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",
+function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};
+this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected=
+-1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";
+d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=
+d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b,
+e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);
+j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();
+if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=b}),function(h){return h>=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null,
+this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this},
+load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c,
+"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},
+url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.9"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k<a.anchors.length?k:0)},b);j&&j.stopPropagation()});e=a._unrotate||(a._unrotate=!e?function(j){j.clientX&&
+a.rotate(null)}:function(){t=c.selected;h()});if(b){this.element.bind("tabsshow",h);this.anchors.bind(c.event+".tabs",e);h()}else{clearTimeout(a.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(c.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
+;/*
+ * jQuery UI Datepicker 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ */
+(function(d,G){function K(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=
+"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su",
+"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",
+minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')}function E(a,b){d.extend(a,b);for(var c in b)if(b[c]==
+null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.9"}});var y=(new Date).getTime();d.extend(K.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();
+f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')}},
+_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&
+b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==
+""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,
+c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),
+true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{});
+b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);
+this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",
+this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,
+function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:
+f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?d.extend({},
+e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&this._hideDatepicker();var h=this._getDateDatepicker(a,true);E(e.settings,f);this._attachments(d(a),e);this._autoSize(e);this._setDateDatepicker(a,h);this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);
+this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass+":not(."+d.datepicker._currentClass+")",b.dpDiv);c[0]?
+d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]):d.datepicker._hideDatepicker();return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||
+a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,
+e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,
+"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));var c=String.fromCharCode(a.charCode==G?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},
+_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=
+d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,
+c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&&
+d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a));var e=a.dpDiv.find("iframe.ui-datepicker-cover");e.length&&e.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",
+function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=
+-1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,
+"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input.focus();if(a.yearshtml){var f=a.yearshtml;setTimeout(function(){f===a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);f=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},
+_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-
+g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1);)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?
+b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},
+_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):
+0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=
+false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=
+d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);
+else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=
+a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,
+g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=z+1<a.length&&a.charAt(z+1)==p)&&z++;return p},m=function(p){var v=o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"&&v?4:p=="o"?3:2)+"}");p=b.substring(s).match(p);if(!p)throw"Missing number at position "+s;s+=p[0].length;return parseInt(p[0],10)},n=function(p,v,H){p=o(p)?H:v;for(v=0;v<p.length;v++)if(b.substr(s,p[v].length).toLowerCase()==p[v].toLowerCase()){s+=p[v].length;return v+1}throw"Unknown name at position "+
+s;},r=function(){if(b.charAt(s)!=a.charAt(z))throw"Unexpected literal at position "+s;s++},s=0,z=0;z<a.length;z++)if(k)if(a.charAt(z)=="'"&&!o("'"))k=false;else r();else switch(a.charAt(z)){case "d":l=m("d");break;case "D":n("D",f,h);break;case "o":u=m("o");break;case "m":j=m("m");break;case "M":j=n("M",i,g);break;case "y":c=m("y");break;case "@":var w=new Date(m("@"));c=w.getFullYear();j=w.getMonth()+1;l=w.getDate();break;case "!":w=new Date((m("!")-this._ticksTo1970)/1E4);c=w.getFullYear();j=w.getMonth()+
+1;l=w.getDate();break;case "'":if(o("'"))r();else k=true;break;default:r()}if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}w=this._daylightSavingAdjust(new Date(c,j-1,l));if(w.getFullYear()!=c||w.getMonth()+1!=j||w.getDate()!=l)throw"Invalid date";return w},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",
+RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+1<a.length&&
+a.charAt(k+1)==o)&&k++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},j=function(o,m,n,r){return i(o)?r[m]:n[m]},l="",u=false;if(b)for(var k=0;k<a.length;k++)if(u)if(a.charAt(k)=="'"&&!i("'"))u=false;else l+=a.charAt(k);else switch(a.charAt(k)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=j("D",b.getDay(),e,f);break;case "o":l+=g("o",(b.getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5,3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=j("M",
+b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(k)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f=0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+=
+"0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==G?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a);var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=
+f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var e=function(h){var i=new Date;i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=
+(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,j=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,k=u.exec(h);k;){switch(k[2]||"d"){case "d":case "D":g+=parseInt(k[1],10);break;case "w":case "W":g+=parseInt(k[1],10)*7;break;case "m":case "M":l+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break;case "y":case "Y":j+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break}k=u.exec(h)}return new Date(j,
+l,g)};if(b=(b=b==null||b===""?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):new Date(b.getTime()))&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=
+a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),
+b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=
+this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&n<k?k:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', -"+j+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+
+(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', +"+j+", 'M');\" title=\""+r+'"><span class="ui-icon ui-icon-circle-triangle-'+
+(c?"w":"e")+'">'+r+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+y+'.datepicker._hideDatepicker();">'+this._get(a,
+"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,r)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._gotoToday('#"+a.id+"');\">"+j+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z=
+this._get(a,"monthNames"),w=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),v=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var L=this._getDefaultDate(a),I="",C=0;C<i[0];C++){for(var M="",D=0;D<i[1];D++){var N=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",x="";if(l){x+='<div class="ui-datepicker-group';if(i[1]>1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-
+1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&C==0?c?f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,C>0||D>0,z,w)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var A=j?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var q=
+(t+h)%7;A+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+r[q]+'">'+s[q]+"</span></th>"}x+=A+"</tr></thead><tbody>";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O<A;O++){x+="<tr>";var P=!j?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(q)+"</td>";for(t=0;t<7;t++){var F=
+p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,J=B&&!H||!F[0]||k&&q<k||o&&q>o;P+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(B?" ui-datepicker-other-month":"")+(q.getTime()==N.getTime()&&g==a.selectedMonth&&a._keyEvent||L.getTime()==q.getTime()&&L.getTime()==N.getTime()?" "+this._dayOverClass:"")+(J?" "+this._unselectableClass+" ui-state-disabled":"")+(B&&!v?"":" "+F[1]+(q.getTime()==u.getTime()?" "+this._currentClass:"")+(q.getTime()==b.getTime()?" ui-datepicker-today":
+""))+'"'+((!B||v)&&F[2]?' title="'+F[2]+'"':"")+(J?"":' onclick="DP_jQuery_'+y+".datepicker._selectDay('#"+a.id+"',"+q.getMonth()+","+q.getFullYear()+', this);return false;"')+">"+(B&&!v?"&#xa0;":J?'<span class="ui-state-default">'+q.getDate()+"</span>":'<a class="ui-state-default'+(q.getTime()==b.getTime()?" ui-state-highlight":"")+(q.getTime()==u.getTime()?" ui-state-active":"")+(B?" ui-priority-secondary":"")+'" href="#">'+q.getDate()+"</a>")+"</td>";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+=
+P+"</tr>"}g++;if(g>11){g=0;m++}x+="</tbody></table>"+(l?"</div>"+(i[0]>0&&D==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");M+=x}I+=M}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='<div class="ui-datepicker-title">',
+o="";if(h||!j)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+a.id+"');\">";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(k+=o+(h||!(j&&
+l)?"&#xa0;":""));a.yearshtml="";if(h||!l)k+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+
+a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";a.yearshtml+="</select>";if(d.browser.mozilla)k+='<select class="ui-datepicker-year"><option value="'+c+'" selected="selected">'+c+"</option></select>";else{k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?"&#xa0;":"")+o;k+="</div>";return k},_adjustInstDate:function(a,b,c){var e=
+a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,
+"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);
+c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,
+"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=
+function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));
+return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new K;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.9";window["DP_jQuery_"+y]=d})(jQuery);
+;/*
+ * jQuery UI Progressbar 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar
+ *
+ * Depends:
+ *   jquery.ui.core.js
+ *   jquery.ui.widget.js
+ */
+(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow");
+this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*
+this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.9"})})(jQuery);
+;/*
+ * jQuery UI Effects 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/
+ */
+jQuery.effects||function(f,j){function n(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1],
+16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return o.transparent;return o[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return n(b)}function p(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
+a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function q(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d=
+a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function m(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor",
+"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=n(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var o={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,
+0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,
+211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},r=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,
+d){if(f.isFunction(b)){d=b;b=null}return this.queue("fx",function(){var e=f(this),g=e.attr("style")||" ",h=q(p.call(this)),l,v=e.attr("className");f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});l=q(p.call(this));e.attr("className",v);e.animate(u(h,l),a,b,function(){f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)});h=f.queue(this);l=h.splice(h.length-1,1)[0];
+h.splice(1,0,l);f.dequeue(this)})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,
+a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.9",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,
+a){var b;switch(c[0]){case "top":b=0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",
+border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);
+return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(m(c))return this._show.apply(this,arguments);
+else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(m(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(m(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),
+b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,
+a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,
+a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==
+e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=
+g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/
+h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,
+a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
+;/*
+ * jQuery UI Effects Blind 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Blind
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(b){b.effects.blind=function(c){return this.queue(function(){var a=b(this),g=["position","top","bottom","left","right"],f=b.effects.setMode(a,c.options.mode||"hide"),d=c.options.direction||"vertical";b.effects.save(a,g);a.show();var e=b.effects.createWrapper(a).css({overflow:"hidden"}),h=d=="vertical"?"height":"width";d=d=="vertical"?e.height():e.width();f=="show"&&e.css(h,0);var i={};i[h]=f=="show"?d:0;e.animate(i,c.duration,c.options.easing,function(){f=="hide"&&a.hide();b.effects.restore(a,
+g);b.effects.removeWrapper(a);c.callback&&c.callback.apply(a[0],arguments);a.dequeue()})})}})(jQuery);
+;/*
+ * jQuery UI Effects Bounce 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Bounce
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(e){e.effects.bounce=function(b){return this.queue(function(){var a=e(this),l=["position","top","bottom","left","right"],h=e.effects.setMode(a,b.options.mode||"effect"),d=b.options.direction||"up",c=b.options.distance||20,m=b.options.times||5,i=b.duration||250;/show|hide/.test(h)&&l.push("opacity");e.effects.save(a,l);a.show();e.effects.createWrapper(a);var f=d=="up"||d=="down"?"top":"left";d=d=="up"||d=="left"?"pos":"neg";c=b.options.distance||(f=="top"?a.outerHeight({margin:true})/3:a.outerWidth({margin:true})/
+3);if(h=="show")a.css("opacity",0).css(f,d=="pos"?-c:c);if(h=="hide")c/=m*2;h!="hide"&&m--;if(h=="show"){var g={opacity:1};g[f]=(d=="pos"?"+=":"-=")+c;a.animate(g,i/2,b.options.easing);c/=2;m--}for(g=0;g<m;g++){var j={},k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing);c=h=="hide"?c*2:c/2}if(h=="hide"){g={opacity:0};g[f]=(d=="pos"?"-=":"+=")+c;a.animate(g,i/2,b.options.easing,function(){a.hide();e.effects.restore(a,l);e.effects.removeWrapper(a);
+b.callback&&b.callback.apply(this,arguments)})}else{j={};k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing,function(){e.effects.restore(a,l);e.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments)})}a.queue("fx",function(){a.dequeue()});a.dequeue()})}})(jQuery);
+;/*
+ * jQuery UI Effects Clip 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Clip
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(b){b.effects.clip=function(e){return this.queue(function(){var a=b(this),i=["position","top","bottom","left","right","height","width"],f=b.effects.setMode(a,e.options.mode||"hide"),c=e.options.direction||"vertical";b.effects.save(a,i);a.show();var d=b.effects.createWrapper(a).css({overflow:"hidden"});d=a[0].tagName=="IMG"?d:a;var g={size:c=="vertical"?"height":"width",position:c=="vertical"?"top":"left"};c=c=="vertical"?d.height():d.width();if(f=="show"){d.css(g.size,0);d.css(g.position,
+c/2)}var h={};h[g.size]=f=="show"?c:0;h[g.position]=f=="show"?0:c/2;d.animate(h,{queue:false,duration:e.duration,easing:e.options.easing,complete:function(){f=="hide"&&a.hide();b.effects.restore(a,i);b.effects.removeWrapper(a);e.callback&&e.callback.apply(a[0],arguments);a.dequeue()}})})}})(jQuery);
+;/*
+ * jQuery UI Effects Drop 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Drop
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(c){c.effects.drop=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right","opacity"],e=c.effects.setMode(a,d.options.mode||"hide"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a);var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true})/2:a.outerWidth({margin:true})/2);if(e=="show")a.css("opacity",0).css(f,b=="pos"?-g:g);var i={opacity:e==
+"show"?1:0};i[f]=(e=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+;/*
+ * jQuery UI Effects Explode 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Explode
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(j){j.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode=a.options.mode=="toggle"?j(this).is(":visible")?"hide":"show":a.options.mode;var b=j(this).show().css("visibility","hidden"),g=b.offset();g.top-=parseInt(b.css("marginTop"),10)||0;g.left-=parseInt(b.css("marginLeft"),10)||0;for(var h=b.outerWidth(true),i=b.outerHeight(true),e=0;e<c;e++)for(var f=
+0;f<d;f++)b.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+
+e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery);
+;/*
+ * jQuery UI Effects Fade 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Fade
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+;/*
+ * jQuery UI Effects Fold 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Fold
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],
+10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery);
+;/*
+ * jQuery UI Effects Highlight 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Highlight
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&&
+this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+;/*
+ * jQuery UI Effects Pulsate 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Pulsate
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c<times;c++){b.animate({opacity:animateTo},duration,a.options.easing);animateTo=(animateTo+1)%2}b.animate({opacity:animateTo},duration,
+a.options.easing,function(){animateTo==0&&b.hide();a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()}).dequeue()})}})(jQuery);
+;/*
+ * jQuery UI Effects Scale 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Scale
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(c){c.effects.puff=function(b){return this.queue(function(){var a=c(this),e=c.effects.setMode(a,b.options.mode||"hide"),g=parseInt(b.options.percent,10)||150,h=g/100,i={height:a.height(),width:a.width()};c.extend(b.options,{fade:true,mode:e,percent:e=="hide"?g:100,from:e=="hide"?i:{height:i.height*h,width:i.width*h}});a.effect("scale",b.options,b.duration,b.callback);a.dequeue()})};c.effects.scale=function(b){return this.queue(function(){var a=c(this),e=c.extend(true,{},b.options),g=c.effects.setMode(a,
+b.options.mode||"effect"),h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:g=="hide"?0:100),i=b.options.direction||"both",f=b.options.origin;if(g!="effect"){e.origin=f||["middle","center"];e.restore=true}f={height:a.height(),width:a.width()};a.from=b.options.from||(g=="show"?{height:0,width:0}:f);h={y:i!="horizontal"?h/100:1,x:i!="vertical"?h/100:1};a.to={height:f.height*h.y,width:f.width*h.x};if(b.options.fade){if(g=="show"){a.from.opacity=0;a.to.opacity=1}if(g=="hide"){a.from.opacity=
+1;a.to.opacity=0}}e.from=a.from;e.to=a.to;e.mode=g;a.effect("size",e,b.duration,b.callback);a.dequeue()})};c.effects.size=function(b){return this.queue(function(){var a=c(this),e=["position","top","bottom","left","right","width","height","overflow","opacity"],g=["position","top","bottom","left","right","overflow","opacity"],h=["width","height","overflow"],i=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],k=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],
+p=c.effects.setMode(a,b.options.mode||"effect"),n=b.options.restore||false,m=b.options.scale||"both",l=b.options.origin,j={height:a.height(),width:a.width()};a.from=b.options.from||j;a.to=b.options.to||j;if(l){l=c.effects.getBaseline(l,j);a.from.top=(j.height-a.from.height)*l.y;a.from.left=(j.width-a.from.width)*l.x;a.to.top=(j.height-a.to.height)*l.y;a.to.left=(j.width-a.to.width)*l.x}var d={from:{y:a.from.height/j.height,x:a.from.width/j.width},to:{y:a.to.height/j.height,x:a.to.width/j.width}};
+if(m=="box"||m=="both"){if(d.from.y!=d.to.y){e=e.concat(f);a.from=c.effects.setTransition(a,f,d.from.y,a.from);a.to=c.effects.setTransition(a,f,d.to.y,a.to)}if(d.from.x!=d.to.x){e=e.concat(k);a.from=c.effects.setTransition(a,k,d.from.x,a.from);a.to=c.effects.setTransition(a,k,d.to.x,a.to)}}if(m=="content"||m=="both")if(d.from.y!=d.to.y){e=e.concat(i);a.from=c.effects.setTransition(a,i,d.from.y,a.from);a.to=c.effects.setTransition(a,i,d.to.y,a.to)}c.effects.save(a,n?e:g);a.show();c.effects.createWrapper(a);
+a.css("overflow","hidden").css(a.from);if(m=="content"||m=="both"){f=f.concat(["marginTop","marginBottom"]).concat(i);k=k.concat(["marginLeft","marginRight"]);h=e.concat(f).concat(k);a.find("*[width]").each(function(){child=c(this);n&&c.effects.save(child,h);var o={height:child.height(),width:child.width()};child.from={height:o.height*d.from.y,width:o.width*d.from.x};child.to={height:o.height*d.to.y,width:o.width*d.to.x};if(d.from.y!=d.to.y){child.from=c.effects.setTransition(child,f,d.from.y,child.from);
+child.to=c.effects.setTransition(child,f,d.to.y,child.to)}if(d.from.x!=d.to.x){child.from=c.effects.setTransition(child,k,d.from.x,child.from);child.to=c.effects.setTransition(child,k,d.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){n&&c.effects.restore(child,h)})})}a.animate(a.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){a.to.opacity===0&&a.css("opacity",a.from.opacity);p=="hide"&&a.hide();c.effects.restore(a,
+n?e:g);c.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+;/*
+ * jQuery UI Effects Shake 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Shake
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(d){d.effects.shake=function(a){return this.queue(function(){var b=d(this),j=["position","top","bottom","left","right"];d.effects.setMode(b,a.options.mode||"effect");var c=a.options.direction||"left",e=a.options.distance||20,l=a.options.times||3,f=a.duration||a.options.duration||140;d.effects.save(b,j);b.show();d.effects.createWrapper(b);var g=c=="up"||c=="down"?"top":"left",h=c=="up"||c=="left"?"pos":"neg";c={};var i={},k={};c[g]=(h=="pos"?"-=":"+=")+e;i[g]=(h=="pos"?"+=":"-=")+e*2;k[g]=
+(h=="pos"?"-=":"+=")+e*2;b.animate(c,f,a.options.easing);for(e=1;e<l;e++)b.animate(i,f,a.options.easing).animate(k,f,a.options.easing);b.animate(i,f,a.options.easing).animate(c,f/2,a.options.easing,function(){d.effects.restore(b,j);d.effects.removeWrapper(b);a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()});b.dequeue()})}})(jQuery);
+;/*
+ * jQuery UI Effects Slide 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Slide
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(c){c.effects.slide=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right"],f=c.effects.setMode(a,d.options.mode||"show"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a).css({overflow:"hidden"});var g=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var e=d.options.distance||(g=="top"?a.outerHeight({margin:true}):a.outerWidth({margin:true}));if(f=="show")a.css(g,b=="pos"?isNaN(e)?"-"+e:-e:e);
+var i={};i[g]=(f=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+e;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){f=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+;/*
+ * jQuery UI Effects Transfer 1.8.9
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Transfer
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(e){e.effects.transfer=function(a){return this.queue(function(){var b=e(this),c=e(a.options.to),d=c.offset();c={top:d.top,left:d.left,height:c.innerHeight(),width:c.innerWidth()};d=b.offset();var f=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments);
+b.dequeue()})})}})(jQuery);
+;
\ No newline at end of file
diff --git a/Sankore-3.1/resources/startupHints/locales/en/1.html b/Sankore-3.1/resources/startupHints/locales/en/1.html
new file mode 100644
index 0000000..9bd4f5a
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/en/1.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Modify the handwritten strokes</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130430;14521700">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+		P.msonormal { margin-bottom: 0.14in; font-family: "Cambria" }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Handwritten
+strokes created with the stylus or the markers are now considered as
+objects just as images, texts, …</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Therefore,
+they benefit from the same properties as the other objects which
+means that you can now move them, modify their size, rotate, apply a
+symmetry, group them and add an action.</FONT></FONT></FONT></P>
+<P CLASS="msonormal" ALIGN=CENTER STYLE="margin-bottom: 0in"><IMG SRC="images/image0041.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=129 HEIGHT=126 BORDER=0>
+</P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/en/2.html b/Sankore-3.1/resources/startupHints/locales/en/2.html
new file mode 100644
index 0000000..9822ed9
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/en/2.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Move the z position of the objects</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130430;14572700">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+		P.msonormal { margin-bottom: 0.14in; font-family: "Cambria" }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Each
+object can now be moved forward or backward in the scene</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>When
+you select the object with the pointer tool, the edition frame shows
+two new buttons on the lower left side. The first icon from the left
+lets you move, step by step, the position of the object to the front
+(compared to the other objects) while the second icon lets you move
+the object to the back.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>A
+long clic on the icon will send the object all the way to the back or
+bring it all the way to the front. A visual signal, in the form of an
+animated circle, will let you know when the modification to the
+object has been applied.</FONT></FONT></FONT></P>
+<P CLASS="msonormal" ALIGN=CENTER STYLE="margin-bottom: 0in"><IMG SRC="images/image0061.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=284 HEIGHT=187 BORDER=0>
+</P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/en/3.html b/Sankore-3.1/resources/startupHints/locales/en/3.html
new file mode 100644
index 0000000..80b17fe
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/en/3.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Apply symmetry on images</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130430;15000600">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+		P.msonormal { margin-bottom: 0.14in; font-family: "Cambria" }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>You
+can now apply an horizontal or vertical symmetry of an image by
+dragging one of the side of the image to the opposite side.</FONT></FONT></FONT></P>
+<P CLASS="msonormal" ALIGN=CENTER STYLE="margin-bottom: 0in"><IMG SRC="images/image0091.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=281 HEIGHT=202 BORDER=0></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/en/4.html b/Sankore-3.1/resources/startupHints/locales/en/4.html
new file mode 100644
index 0000000..53f44c1
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/en/4.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Use the magnifier tool</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130430;15033100">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>You
+can now highlight part of an illustration, text or any part of the
+board by using the Magnifier tool that is located in the
+« Applications Â» folder in the library (right drawer).</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>The
+Magnifier tool gives you the option to choose a rectangular or
+circular shape as well as the possibility to modify its size and zoom
+level.</FONT></FONT></FONT></P>
+<P ALIGN=CENTER><IMG SRC="images/image0131.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=329 HEIGHT=311 BORDER=0></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/en/5.html b/Sankore-3.1/resources/startupHints/locales/en/5.html
new file mode 100644
index 0000000..c64b6ba
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/en/5.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Copy a page from one lesson to another</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130430;15071200">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>You
+can easily copy a slide from one lesson to another by a simple drag &
+drop.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>In
+the « Documents Â» mode, simply select one of several
+pages from the source document and drag the page(s) in the target
+document.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>The
+pages will be copied (and not moved) to your new document where you
+will be able to edit them like any other page.</FONT></FONT></FONT></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/en/error.html b/Sankore-3.1/resources/startupHints/locales/en/error.html
new file mode 100644
index 0000000..6ee564d
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/en/error.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Error!</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130430;15044700">
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P STYLE="margin-bottom: 0in">There's been a little glitch. Check in
+your software package insided “Ressources/startuHints/... if the
+hints are in the right folder.</P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0021.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0021.png
new file mode 100644
index 0000000..4451150
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0021.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0022.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0022.png
new file mode 100644
index 0000000..28fb534
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0022.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0033.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0033.png
new file mode 100644
index 0000000..5c2326a
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0033.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0041.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0041.png
new file mode 100644
index 0000000..89fe348
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0041.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0051.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0051.png
new file mode 100644
index 0000000..c51965c
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0051.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0052.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0052.png
new file mode 100644
index 0000000..3edbe48
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0052.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0061.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0061.png
new file mode 100644
index 0000000..cb15401
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0061.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0071.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0071.png
new file mode 100644
index 0000000..1ca52b1
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0071.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0081.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0081.png
new file mode 100644
index 0000000..2ee7c20
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0081.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0091.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0091.png
new file mode 100644
index 0000000..deb3ef1
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0091.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0101.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0101.png
new file mode 100644
index 0000000..669943b
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0101.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0102.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0102.png
new file mode 100644
index 0000000..6ea6ac8
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0102.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0111.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0111.png
new file mode 100644
index 0000000..81a2712
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0111.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0121.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0121.png
new file mode 100644
index 0000000..6133123
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0121.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0122.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0122.png
new file mode 100644
index 0000000..bc1c8ef
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0122.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0131.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0131.png
new file mode 100644
index 0000000..a150433
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0131.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image01401.png b/Sankore-3.1/resources/startupHints/locales/en/images/image01401.png
new file mode 100644
index 0000000..bbca7e6
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image01401.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0141.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0141.png
new file mode 100644
index 0000000..065ce69
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0141.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0142.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0142.png
new file mode 100644
index 0000000..0756786
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0142.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0151.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0151.png
new file mode 100644
index 0000000..5b0c4b9
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0151.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0152.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0152.png
new file mode 100644
index 0000000..bd5cf70
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0152.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0161.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0161.png
new file mode 100644
index 0000000..33a00da
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0161.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0171.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0171.png
new file mode 100644
index 0000000..0051414
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0171.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0172.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0172.png
new file mode 100644
index 0000000..539caec
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0172.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0181.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0181.png
new file mode 100644
index 0000000..e0a26f7
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0181.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0191.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0191.png
new file mode 100644
index 0000000..cd9ca8b
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0191.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0201.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0201.png
new file mode 100644
index 0000000..ac16407
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0201.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0211.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0211.png
new file mode 100644
index 0000000..5571587
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0211.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0241.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0241.png
new file mode 100644
index 0000000..adac2fe
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0241.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0261.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0261.png
new file mode 100644
index 0000000..0c49b7a
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0261.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/en/images/image0271.png b/Sankore-3.1/resources/startupHints/locales/en/images/image0271.png
new file mode 100644
index 0000000..a404db6
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/en/images/image0271.png differ
diff --git a/Sankore-3.1/resources/etc/Tutorial/tutorial_en/images/logo_open_sankore.png b/Sankore-3.1/resources/startupHints/locales/en/images/opensankore.png
similarity index 100%
copy from Sankore-3.1/resources/etc/Tutorial/tutorial_en/images/logo_open_sankore.png
copy to Sankore-3.1/resources/startupHints/locales/en/images/opensankore.png
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/1.html b/Sankore-3.1/resources/startupHints/locales/fr/1.html
new file mode 100644
index 0000000..fd92355
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/1.html
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Lire des médias sur tous les ordinateurs</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130428;21423200">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Le
+logiciel Open-Sankoré sollicite les lecteurs disponibles par défaut
+sur l'ordinateur pour interpréter les médias audio, vidéo ou
+flash. Cependant tous les formats ne peuvent donc pas être lus dans
+ce logiciel si l’ordinateur ne contient pas les codecs nécessaires.</FONT></FONT></FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Les
+codecs sont des petits programmes qui permettent de décoder les
+différents formats de fichiers audio et vidéo disponibles.</FONT></FONT></FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Les
+lecteurs employés par Open-Sankoré sont : </FONT></FONT></FONT></FONT></FONT>
+</P>
+<UL>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Windows
+	Media Player pour Windows, </FONT></FONT></FONT>
+	</P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>QuickTime
+	Player pour Mac,</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Phonon
+	(qui abstrait gstreamer ou xine) pour Linux.</FONT></FONT></FONT></P>
+</UL>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Privilégiez
+les formats suivants qui devraient être décodés aisément par tous
+les systèmes :</FONT></FONT></FONT></FONT></FONT></P>
+<UL>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>images
+	au format .png, .svg, .jpg ou .gif</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>vidéo
+	au format .mp4 ou .flv</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>sons
+	au format .mp3</FONT></FONT></FONT></P>
+</UL>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Il
+existe quelques packs de codecs vous permettant d’étendre la gamme
+des formats multimédia pris en charge par le lecteur sur lequel
+repose Open-Sankoré. </FONT></FONT></FONT>
+</P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Soyez
+toutefois vigilants à l’installation de ces derniers,
+particulièrement avec les packs gratuits censés contenir des codecs
+de plusieurs sociétés ou fabricants. Certains de ces packs peuvent
+occasionner des problèmes ou instabilités sur votre système
+d’exploitation. </FONT></FONT></FONT>
+</P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Reportez
+vous à la documentation de votre système d’exploitation et de
+consulter le forum de support en ligne.</FONT></FONT></FONT></P>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/10.html b/Sankore-3.1/resources/startupHints/locales/fr/10.html
new file mode 100644
index 0000000..f8bee99
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/10.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Ajouter des liens hypermédias aux objets (actions)</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130429;5125700">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Il
+est possible d'ajouter des liens hypermédias sur des objets
+contenant des images fixes ou du texte.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Un
+menu permet de choisir de placer :</FONT></FONT></FONT></P>
+<UL>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>un
+	lien vers une page web (nécessite une connexion internet),</FONT></FONT></FONT></P>
+</UL>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>-
+un lien vers une autre page de la présentation, </FONT></FONT></FONT>
+</P>
+<UL>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>un
+	lien qui permet de jouer un son au clic sur l’objet. </FONT></FONT></FONT>
+	</P>
+</UL>
+<P ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2"><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="fr-FR">Pour
+ajouter une action, il faut sélectionner l’option présente dans
+le menu du cadre de l'objet. </SPAN></FONT></FONT></FONT><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="fr-FR">Cliquez
+sur « OK Â» pour valider votre action.</SPAN></FONT></FONT></FONT></P>
+<P ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2"><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="fr-FR">Pour
+retirer l'action, il suffit de repasser par ce même menu.</SPAN></FONT></FONT></FONT></P>
+<P ALIGN=CENTER><IMG SRC="images/image0101.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=391 HEIGHT=225 BORDER=0></P>
+<P ALIGN=CENTER><IMG SRC="images/image0102.png" NAME="graphics2" ALIGN=BOTTOM WIDTH=527 HEIGHT=147 BORDER=0></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/11.html b/Sankore-3.1/resources/startupHints/locales/fr/11.html
new file mode 100644
index 0000000..8f8013b
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/11.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Sélectionner la langue de l'interface</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="0;0">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Le
+changement de la langue du logiciel s'effectue dans le premier onglet
+des "Préférences" du menu Open-Sankoré, onglet
+“Afficher”.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Le
+choix de la langue est effectif une fois que le logiciel est
+redémarré. </FONT></FONT></FONT>
+</P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Ce
+réglage prime sur le réglage de la langue par défaut du système
+d'exploitation de votre ordinateur.</FONT></FONT></FONT></P>
+<P ALIGN=CENTER><IMG SRC="images/image0111.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=526 HEIGHT=244 BORDER=0></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/12.html b/Sankore-3.1/resources/startupHints/locales/fr/12.html
new file mode 100644
index 0000000..14a85a0
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/12.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Utiliser les signets web</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130429;5174100">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>La
+bibliothèque propose un dossier "Signets" dans lequel il
+est possible de stocker des signets Web (ou bookmarks).</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Lorsque
+vous utiliser un glisser-déposer depuis la bibliothèque vers la
+page, un widget est alors directement ouvert avec le contenu de la
+page web.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Si
+vous cliquez sur l'icône du signet, une page s’ouvre alors dans le
+navigateur Web intégré d'Open-Sankoré.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Un
+clic l’icône "Signet" dans la barre d'outils </FONT></FONT><FONT FACE="Arial, sans-serif">en
+</FONT><FONT FACE="Arial, sans-serif">mode Web ajoute 
+</FONT><FONT FACE="Arial, sans-serif">automatiquement</FONT><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">
+un  signet dans le dossier «Signets». </FONT></FONT></FONT></FONT></FONT>
+</P>
+<P ALIGN=CENTER><IMG SRC="images/image0121.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=84 HEIGHT=96 BORDER=0></P>
+<P ALIGN=CENTER><IMG SRC="images/image0122.png" NAME="graphics2" ALIGN=BOTTOM WIDTH=632 HEIGHT=165 BORDER=0></P>
+<P ALIGN=CENTER> </P>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/13.html b/Sankore-3.1/resources/startupHints/locales/fr/13.html
new file mode 100644
index 0000000..c4a33e4
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/13.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Utiliser l'outil "Loupe"</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="0;0">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Vous
+pouvez mettre en évidence des parties d’une illustration ou d’un
+texte en utilisant la loupe présente dans le dossier «Applications»
+de la bibliothèque (volet de droite).</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Vous
+pouvez choisir la forme de la loupe (rectangulaire ou circulaire)
+ainsi que sa taille et régler le taux d'agrandissement.</FONT></FONT></FONT></P>
+<P ALIGN=CENTER><IMG SRC="images/image0131.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=329 HEIGHT=311 BORDER=0></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/14.html b/Sankore-3.1/resources/startupHints/locales/fr/14.html
new file mode 100644
index 0000000..9288ffe
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/14.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Rechercher des illustrations avec Google Images</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="0;0">
+	<STYLE TYPE="text/css">
+	<!--
+		TD P { font-family: sans-serif; text-align: justify }
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Open-Sankoré
+permet de rechercher directement des images depuis le web en
+utilisant le moteur de Google Images.</FONT></FONT></P>
+<P><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Choisir le
+moteur «Google Images» puis renseigner le champ de recherche en
+haut.</FONT></FONT></P>
+<P><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Vous pouvez
+également utiliser des filtres de taille, de type d’illustration
+et de licence.</FONT></FONT></P>
+<P><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Notez que les
+images sont proposées après un filtrage strict des contenus
+utilisant la fonction «Safe Search» de Google.</FONT></FONT></P>
+<P><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Ce widget de
+recherche est disponible dans le dossier "Recherche Web" de
+la bibliothèque.</FONT></FONT></P>
+<CENTER>
+	<TABLE WIDTH=624 BORDER=0 CELLPADDING=2 CELLSPACING=2>
+		<TR>
+			<TD WIDTH=389>
+				<P><IMG SRC="images/image0141.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=146 HEIGHT=166 BORDER=0></P>
+			</TD>
+			<TD WIDTH=225>
+				<P><IMG SRC="images/image0142.png" NAME="graphics2" ALIGN=BOTTOM WIDTH=287 HEIGHT=387 BORDER=0></P>
+			</TD>
+		</TR>
+	</TABLE>
+</CENTER>
+<P><BR><BR>
+</P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/14_01.html b/Sankore-3.1/resources/startupHints/locales/fr/14_01.html
new file mode 100644
index 0000000..aa099a4
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/14_01.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Rechercher des médias sur Planète Sankoré</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="0;0">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Open-Sankoré
+permet une recherche directe de médias et d’applications (widgets)
+sur le site de partage planete.sankore.org (application, audio,
+flash, image, interactivité, vidéo).</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Ces
+widgets de recherches sont disponibles dans le dossier "Recherche
+Web" de la bibliothèque</FONT></FONT></FONT></P>
+<P ALIGN=CENTER><FONT COLOR="#002939"><IMG SRC="images/image01401.png" NAME="graphics2" ALIGN=BOTTOM WIDTH=326 HEIGHT=236 BORDER=0></FONT></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/15.html b/Sankore-3.1/resources/startupHints/locales/fr/15.html
new file mode 100644
index 0000000..ede8f4b
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/15.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Capturer des médias depuis le navigateur web intégré</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="0;0">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>L’outil
+“Capturer du contenu Web” est disponible dans la barre d’outils
+en mode navigateur Web intégré. Il vous permet de récupérer une
+page entière ou des médias (sons, vidéo, animations flash).</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Vous
+pourrez selon les médias et leur disponibilité effective réaliser
+les opérations suivantes :</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>-
+télécharger dans la bibliothèque (utilisable ultérieurement sans
+connexion)</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>-
+télécharger sur la page courante (utilisable ultérieurement sans
+connexion)</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>-
+ajouter l’objet en lien dans la bibliothèque (nécessitera une
+connexion internet)</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>-
+ajouter l’objet en lien sur la page courante (nécessitera une
+connexion internet).</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>N.B
+: en fonction de la configuration des sites, il ne vous sera pas
+toujours possible de choisir entre ces 4 possibilités (certaines
+serons alors “grisées” ce qui signifie qu’elle ne sont pas
+utilisables). </FONT></FONT></FONT>
+</P>
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>ajouter
+une flèche sur l’icône utilisée </FONT></FONT></FONT>
+</P>
+<P ALIGN=CENTER STYLE="margin-bottom: 0in; widows: 2; orphans: 2"><FONT COLOR="#002939"><IMG SRC="images/image0151.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=102 HEIGHT=292 BORDER=0><IMG SRC="images/image0152.png" NAME="graphics2" ALIGN=BOTTOM WIDTH=123 HEIGHT=389 BORDER=0></FONT></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/16.html b/Sankore-3.1/resources/startupHints/locales/fr/16.html
new file mode 100644
index 0000000..2ff0f37
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/16.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Exporter et importer des fichiers .ubz par dossiers</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130429;5485500">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Le
+mode "Documents" permet l'export et l'import sous forme
+d’archive de dossiers contenant des documents de présentation ou
+des sous-dossiers.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Pour
+créer une archive il est nécessaire de regrouper les documents dans
+un dossier. Sélectionnez le dossier que vous désirez exporter au
+format d’archive et cliquez sur le bouton "Exporter" en
+choisissant l’option "Exporter au format UBX Open-Sankoré".</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Le
+logiciel génère alors une archive (.ubx) que vous nommerez et
+enregistrerez dans l'emplacement désiré.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Pour
+importer une archive contenant plusieurs fichiers (.ubx), cliquer sur
+le bouton "Importer" du mode "Documents".</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Il
+n’est pas possible actuellement d’importer par lots plusieurs
+fichiers .ubz présent sur un disque ou une clé USB.</FONT></FONT></FONT></FONT></FONT></P>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/17.html b/Sankore-3.1/resources/startupHints/locales/fr/17.html
new file mode 100644
index 0000000..333f258
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/17.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Utiliser l'outil Spot</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130429;5494300">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>L'application
+«Spot» permet de mettre en évidence des zones spécifiques de
+votre page en choisissant :</FONT></FONT></FONT></P>
+<UL>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>la
+	forme rectangulaire/carrée ou circulaire/ellipse</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>le
+	maintien des proportions</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>le
+	mode d’affichage (sur un clic de la souris ou persistant)</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>une
+	prévisualisation de la forme</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>une
+	transparence du masque</FONT></FONT></FONT></P>
+</UL>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Comme
+les autres outils, «Spot» est disponible dans les "Applications"
+de la bibliothèque.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Notez
+également que vous pouvez employer l'outil "Masque" pour
+dévoiler progressivement le contenu d’un écran.</FONT></FONT></FONT></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/18.html b/Sankore-3.1/resources/startupHints/locales/fr/18.html
new file mode 100644
index 0000000..073713f
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/18.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Masquer open-Sankoré pour travailler sur un autre logiciel</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130429;5504500">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Open-Sankoré
+n’est pas disponible en mode fenêtre. Le logiciel occupera
+toujours toute la surface de votre écran.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Cependant,
+il vous est possible de passer en mode “bureau” ou de “masquer”
+Open-Sankoré.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Le
+mode «bureau» est accessible en cliquant sur l’icône «Bureau»
+dans la barre des outils.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Pour
+masquer open-Sankoré vous pouvez utiliser la commande «Ctrl+H»
+sous Windows et Linux ou «Cmd+H» sous MacOS.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Vous
+pouvez également utiliser la commande «Ctrl+Tab» sous Windows ou
+Linux ou «Cmd+Tab» sous MacOS pour passer d’une application à
+l’autre pour réaliser des copier-coller par exemple.</FONT></FONT></FONT></FONT></FONT></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/19.html b/Sankore-3.1/resources/startupHints/locales/fr/19.html
new file mode 100644
index 0000000..e3150c7
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/19.html
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Utiliser le mode “documents” </TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130429;5512500">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Un
+nouveau document est créé lors chaque lancement d’open-Sankoré.
+Ce dernier </FONT></FONT><FONT FACE="Arial, sans-serif">apparaît</FONT><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">
+dans le dossier "Documents sans titre" du mode "Documents"
+(colonne de gauche). </FONT></FONT></FONT></FONT></FONT>
+</P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Pour
+faciliter le travail des utilisateurs, Open-Sankoré enregistre
+automatiquement votre travail à chaque changement de page ou lorsque
+le logiciel est quitté. Il n’y a donc pas de fonction
+«enregistrer».</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Le
+dossier «Modèles» vous permet d’y glisser des présentations que
+vous souhaitez conserver sans que celles-ci soient modifiables. Vous
+devrez les glisser vers un autre dossier pour les dupliquer et
+pouvoir les éditer.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Dans
+le mode «Document», il vous est notamment possible de :</FONT></FONT></FONT></P>
+<UL>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>renommer
+	le document</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>créer
+	des dossiers et sous-dossiers</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>importer
+	ou exporter des documents Open-Sankoré (*.ubz) ou des dossiers
+	comportant des documents (*.ubx)</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>ajouter
+	des .pdf à vos pages</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>ajouter
+	des dossiers d’images</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>réutiliser
+	des pages depuis une présentation</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>...</FONT></FONT></FONT></P>
+</UL>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/2.html b/Sankore-3.1/resources/startupHints/locales/fr/2.html
new file mode 100644
index 0000000..a42f94b
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/2.html
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>La fiche guide</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130428;21441600">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>La
+fiche guide des enseignants contient les informations utiles aux
+enseignants qui vont utiliser une ressource mutualisée par d’autres
+enseignant.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Elle
+est disponible dans le volet de gauche avec un onglet disposant d'une
+icône représentant la toque du professeur.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Cette
+fiche guide vous offre la possibilité de :</FONT></FONT></FONT></P>
+<UL>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>citer
+	les auteurs successifs de la ressource et les crédits des médias
+	et ressources utilisées,</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>renseigner
+	les informations de la séance (titre, objectifs pédagogiques,
+	activité du maître ou des élèves…),</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>décrire
+	la ressource (niveau scolaire, discipline concernée, mots-clés,
+	licence de la ressource…),</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>proposer
+	les actions à réaliser par les enseignants et les
+	élèves/étudiants,</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>stocker
+	des éléments complémentaires ou facultatifs (image, son, vidéo,
+	application, liens web, …) ainsi que les corrigés des exercices
+	proposés si nécessaire.</FONT></FONT></FONT></P>
+</UL>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>L'ensemble
+des champs de la fiche guide appartient donc au document et permet
+aux utilisateurs d’avoir une meilleure visibilité du cadre
+pédagogique dans lequel l'activité est proposée. </FONT></FONT></FONT>
+</P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>NB
+: si vous exportez votre document Open-Sankoré au format PDF, la
+fiche guide ne sera pour le moment pas inclue dans le celui-ci.</FONT></FONT></FONT></P>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/20.html b/Sankore-3.1/resources/startupHints/locales/fr/20.html
new file mode 100644
index 0000000..254a42e
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/20.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Que représente le cadre grisé sur la page ?</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="0;0">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Le
+cadre grisé présent sur toutes les pages définit la surface
+minimale qu'Open-Sankoré affichera sur tous types de projecteurs
+(4/3, 16/9, HD...) indépendamment de la résolution du projecteur.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Tout
+ce que vous glisserez-déposerez ou écrirez dans cette zone sera
+obligatoirement visible sur votre surface de projection.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Cette
+indication est très importante si vous souhaitez partager les
+ressources produites sur planete.sankore.org ou avec vos collègues.</FONT></FONT></FONT></P>
+<P><IMG SRC="images/image0201.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=620 HEIGHT=387 BORDER=0></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/21.html b/Sankore-3.1/resources/startupHints/locales/fr/21.html
new file mode 100644
index 0000000..856c8ce
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/21.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Sélectionner ce qui sera effacé</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="0;0">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Il
+est possible d’utiliser un clic long sur la gomme dans la barre
+d’outils pour disposer de 4 options : </FONT></FONT></FONT>
+</P>
+<P ALIGN=CENTER><IMG SRC="images/image0211.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=596 HEIGHT=141 BORDER=0></P>
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>NB
+: Le clic long sur la gomme utilisée sur la surface du tableau
+permet d'avoir le même résultat qu'avec un clic long sur la gomme
+dans la barre d’outil.</FONT></FONT></FONT></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/22.html b/Sankore-3.1/resources/startupHints/locales/fr/22.html
new file mode 100644
index 0000000..0e8c159
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/22.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Réutiliser une diapo d’un fichier dans un autre fichier</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130429;5572300">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Il
+est possible de dupliquer une diapo par un simple glisser déposer
+vers une autre présentation lorsque l’on utilise le mode
+«Documents».</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Il
+suffit de sélectionner une ou plusieurs diapositives depuis le
+document source et de le déplacer sur le nom du fichier qui
+accueillera les pages dupliquées.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Cette
+fonction est très efficace pour réutiliser des ressources ou des
+traces de travaux avec les élèves réalisés lors de séances
+précédentes.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial Bold, sans-serif"><FONT SIZE=3><FONT SIZE=3><SPAN LANG="fr-FR">Placer
+une illustration avec une flèche indiquant le mouvement pour glisser
+les pages vers un autre fichier.</SPAN></FONT></FONT></FONT></FONT></P>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/23.html b/Sankore-3.1/resources/startupHints/locales/fr/23.html
new file mode 100644
index 0000000..b04d331
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/23.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Ajouter des médias dans la bibliothèque depuis le mode «Bureau»</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130429;5582200">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">En
+ mode </FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial Italic, sans-serif">"Afficher
+ le  bureau"</FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">,
+vous pouvez ajouter des fichiers directement dans votre bibliothèque
+: il vous suffit de glisser-déposer les fichiers souhaités sur le
+volet de la bibliothèque, Open-Sankoré triera automatiquement le
+type de fichier ajouté (image, vidéo ou son) et le placera à la
+racine </FONT></FONT><FONT FACE="Arial, sans-serif">du dossier
+correspondant </FONT><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">de
+la bibliothèque correspondante. </FONT></FONT></FONT></FONT></FONT>
+</P>
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Vous
+pourrez ensuite le classer dans le dossier de votre choix.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><FONT SIZE=3><SPAN LANG="fr-FR">Cela
+fonctionne également depuis une page Web ouverte avec un navigateur
+externe.</SPAN></FONT></FONT></FONT></FONT></P>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/24.html b/Sankore-3.1/resources/startupHints/locales/fr/24.html
new file mode 100644
index 0000000..e295f8c
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/24.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Ajouter ou dupliquer des pages en mode «tableau»</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="0;0">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><FONT FACE="Arial, sans-serif">Si
+vous faites un clic long sur le bouton </FONT><FONT FACE="Arial Italic, sans-serif">"Pages"
+</FONT><FONT FACE="Arial, sans-serif">dans la barre des outils, un
+menu s’ouvre qui vous permet de choisir si voulez ajouter une
+nouvelle page à la suite, dupliquer la page en cours ou importer une
+page ou un ensemble de pages depuis un fichier présent sur votre
+ordinateur. Ce fichier comporte au moins une page de format image
+(png, jpg, gif, ...) ou .pdf.</FONT></FONT></FONT></FONT></P>
+<P ALIGN=CENTER><IMG SRC="images/image0241.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=384 HEIGHT=139 BORDER=0></P>
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>NB
+: pour la page de garde (page 0), seules deux fonctions sont
+disponibles (nouvelle page et importer une page).</FONT></FONT></FONT></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/25.html b/Sankore-3.1/resources/startupHints/locales/fr/25.html
new file mode 100644
index 0000000..edc100b
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/25.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Revenir à la taille normale après l’utilisation du zoom en avant ou en arrière</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130501;9110200">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Si
+vous agrandissez/réduisez votre page en utilisant les outils </FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial Italic, sans-serif">"Zoomer
+en avant "Zoomer en arrière" </FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">(dans
+la barre du stylet) et que vous voulez ensuite revenir à la
+dimension originale, vous trouverez à droite en bas de la page un
+bouton avec une loupe barrée.</FONT></FONT></FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Si
+vous cliquez dessus vous retournerez automatiquement à la taille
+d’origine au lieu d’utiliser l’outil inverse.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Vous
+pouvez également faire un double-clic sur l’icône «Zoom» que
+vous avez utilisé pour revenir à l'affichage original.</FONT></FONT></FONT></P>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/26.html b/Sankore-3.1/resources/startupHints/locales/fr/26.html
new file mode 100644
index 0000000..ddfada7
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/26.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Déplacer la page et la recentrer rapidement</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="0;0">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2"><FONT COLOR="#002939"><FONT FACE="Arial"><FONT SIZE=3><SPAN LANG="fr-FR">Si
+vous déplacez la page à l'aide de l'outil </SPAN></FONT></FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial Italic"><FONT SIZE=3><SPAN LANG="fr-FR">"Déplacer
+la page"</SPAN></FONT></FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="fr-FR">
+</SPAN></FONT></FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial"><FONT SIZE=3><SPAN LANG="fr-FR">(symbole
+de la main dans la barre du stylet), vous pouvez recentrer la vue
+directement en double-cliquant sur la même icône.</SPAN></FONT></FONT></FONT></P>
+<P ALIGN=CENTER><IMG SRC="images/image0261.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=65 HEIGHT=67 BORDER=0></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/3.html b/Sankore-3.1/resources/startupHints/locales/fr/3.html
new file mode 100644
index 0000000..fc6a583
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/3.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Utiliser les nouvelles interactivités</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130428;21455100">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+		P.msolistparagraphcxsplast { margin-left: 0.5in; margin-bottom: 0.14in; font-family: "Cambria"; font-size: 12pt }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>De
+nouvelles activités viennent compléter le dossier des
+interactivités :</FONT></FONT></FONT></P>
+<UL>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial Italic, sans-serif">Balance</FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">
+	permet de travailler les différentes équivalences de masse de
+	manière visuelle.</FONT></FONT></FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial Italic, sans-serif">Cadran</FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">
+	permet de travailler le nombre du jour avec les quatre opérations
+	de base.</FONT></FONT></FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial Italic, sans-serif">Calcul</FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">
+	génère automatiquement une série de calculs à résoudre.</FONT></FONT></FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial Italic, sans-serif">Train</FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">
+	permet de travailler les notions des nombres croissants et
+	décroissants.</FONT></FONT></FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial Italic, sans-serif">OpenStreetMap</FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">
+	est une alternative à l'application GoogleMap avec des ressources
+	ouvertes et sans publicité.</FONT></FONT></FONT></FONT></FONT></P>
+</UL>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Le
+design et les aides des interactivités ont été également
+améliorés.</FONT></FONT></FONT></P>
+<P CLASS="msolistparagraphcxsplast" ALIGN=CENTER><IMG SRC="images/image0033.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=517 HEIGHT=120 BORDER=0>
+</P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/4.html b/Sankore-3.1/resources/startupHints/locales/fr/4.html
new file mode 100644
index 0000000..33818f8
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/4.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Modifier les annotations et surlignages manuscrits</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130428;21525800">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+		P.msonormal { margin-bottom: 0.14in; font-family: "Cambria" }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Les
+traits manuscrits et les courbes réalisés avec le stylo ou le
+surligneur sont des objets au même titre que les images et les blocs
+de texte. </FONT></FONT></FONT>
+</P>
+<P ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2"><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="fr-FR">Ils
+bénéficient donc des mêmes propriétés que les autres objets
+(déplacement, modification de la taille, rotation, symétrie,
+groupement, liens hypermédias, …).</SPAN></FONT></FONT></FONT></P>
+<P CLASS="msonormal" ALIGN=CENTER STYLE="margin-bottom: 0in"><IMG SRC="images/image0041.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=129 HEIGHT=126 BORDER=0>
+</P>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/5.html b/Sankore-3.1/resources/startupHints/locales/fr/5.html
new file mode 100644
index 0000000..6c57c48
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/5.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Interagir avec les objets sans passer en mode "édition"</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="0;0">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+		P.msonormal { margin-bottom: 0.14in; font-family: "Cambria"; font-size: 12pt }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">L'outil
+</FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial Italic, sans-serif">Interagir
+avec des objets</FONT></FONT><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">
+(doigt magique) permet de déplacer ces derniers sans afficher leur
+cadre gris. Privilégiez cet outil pour le travail des élèves ou
+les étudiants afin de ne pas surcharger l'interface.</FONT></FONT></FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>L’outil
+permet également de jouer une série d'actions (lien hypertexte,
+lien sur une autre page, jouer un son) et d’agir au sein
+d’applications, de widgets ou d’animations flash.</FONT></FONT></FONT></P>
+<P CLASS="msonormal" ALIGN=CENTER STYLE="margin-bottom: 0in"><IMG SRC="images/image0051.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=286 HEIGHT=170 BORDER=0><IMG SRC="images/image0052.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=286 HEIGHT=125 BORDER=0></P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/6.html b/Sankore-3.1/resources/startupHints/locales/fr/6.html
new file mode 100644
index 0000000..aac20c4
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/6.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Déplacer les objets sur couches</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="0;0">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+		P.msonormal { margin-bottom: 0.14in; font-family: "Cambria"; font-size: 12pt }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Chaque
+objet dispose dans la partie inférieure de son rectangle d’édition
+de deux boutons.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Celui
+de droite (avec la flèche vers le bas) permet de faire descendre
+l’objet d’un plan par rapport aux autres objets utilisés à
+l’écran.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Celui
+de gauche (avec la flèche vers le haut) permet de faire monter
+l’objet d’un plan par rapport aux autres objets utilisés à
+l’écran.</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Un
+clic prolongé (avec une petite flèche blanche se déplaçant autour
+de l’icône) permet de placer l’objet au tout dernier plan pour
+le premier et au tout premier plan pour le second.</FONT></FONT></FONT></P>
+<P CLASS="msonormal" ALIGN=CENTER STYLE="margin-bottom: 0in"><IMG SRC="images/image0061.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=284 HEIGHT=187 BORDER=0>
+</P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/7.html b/Sankore-3.1/resources/startupHints/locales/fr/7.html
new file mode 100644
index 0000000..0364041
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/7.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Utiliser la sélection multiple, grouper et dégrouper des objets</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="0;0">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+		P.msonormal { margin-bottom: 0.14in; font-family: "Cambria"; font-size: 12pt }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">Tous
+les objets </FONT></FONT><FONT FACE="Arial, sans-serif">(image,
+son,... )</FONT><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">
+ajoutés sur une page ainsi que les annotations manuscrites et les
+surlignages peuvent être sélectionnés avec le curseur et groupés
+pour ne faire qu'un seul objet en cliquant sur l’icône «Grouper»
+dans la barre des outils.</FONT></FONT></FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Ils
+peuvent également être dégroupés en cliquant à nouveau sur
+l’icône «Dégrouper».</FONT></FONT></FONT></P>
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>La
+sélection multiple est réalisée de deux façons : </FONT></FONT></FONT>
+</P>
+<UL>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>le
+	curseur permet de sélectionner un ensemble d’objets présents
+	dans le rectangle désigné si les objets sont contigus.</FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>il
+	est possible d’utiliser la commande Maj+Clic pour grouper des
+	objets non contigus.</FONT></FONT></FONT></P>
+</UL>
+<P CLASS="msonormal" ALIGN=CENTER STYLE="margin-bottom: 0in"><IMG SRC="images/image0071.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=406 HEIGHT=336 BORDER=0>
+</P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/8.html b/Sankore-3.1/resources/startupHints/locales/fr/8.html
new file mode 100644
index 0000000..14c0274
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/8.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Utiliser des polices cursives</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130429;5074300">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+		P.msonormal { margin-bottom: 0.14in; font-family: "Cambria"; font-size: 12pt }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Des
+polices adaptées à l’utilisation avec des enfants apprenant à
+lire et à écrire sont disponibles.</FONT></FONT></FONT></P>
+<UL>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">polices
+	cursives,</FONT></FONT></FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">polices
+	cursives avec lignes et modèles,</FONT></FONT></FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">polices
+	script,</FONT></FONT></FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#000000"><FONT FACE="Helvetica, sans-serif"><FONT SIZE=3><FONT COLOR="#002939"><FONT FACE="Arial, sans-serif">polices
+	phonétiques,</FONT></FONT></FONT></FONT></FONT></P>
+	<LI><P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+	<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>polices
+	pour les dyslexiques (Andika).</FONT></FONT></FONT></P>
+</UL>
+<P LANG="fr-FR" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Celles
+ci sont disponibles en cliquant sur le «F» qui est disponible dans
+la barre d’icône du bloc de texte.</FONT></FONT></FONT></P>
+<P CLASS="msonormal" ALIGN=CENTER STYLE="margin-bottom: 0in"><IMG SRC="images/image0081.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=444 HEIGHT=177 BORDER=0>
+</P>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/9.html b/Sankore-3.1/resources/startupHints/locales/fr/9.html
new file mode 100644
index 0000000..48ed462
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/9.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Utiliser la symétrie pour les images</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130429;5082900">
+	<STYLE TYPE="text/css">
+	<!--
+		P { font-family: sans-serif; text-align: justify }
+		P.msonormal { margin-bottom: 0.14in; font-family: "Cambria"; font-size: 12pt }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P LANG="fr-FR" ALIGN=JUSTIFY STYLE="margin-bottom: 0in; widows: 2; orphans: 2">
+<FONT COLOR="#002939"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Il
+est possible d'effectuer une symétrie axiale horizontale ou
+verticale d'une image en la glissant par les poignées vers le côté
+opposé de l'objet au-delà de la partie opposée.</FONT></FONT></FONT></P>
+<P CLASS="msonormal" ALIGN=CENTER STYLE="margin-bottom: 0in"><IMG SRC="images/image0091.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=281 HEIGHT=202 BORDER=0>
+</P>
+</BODY>
+</HTML>
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/error.html b/Sankore-3.1/resources/startupHints/locales/fr/error.html
new file mode 100644
index 0000000..2142ca4
--- /dev/null
+++ b/Sankore-3.1/resources/startupHints/locales/fr/error.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>erreur</TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.4.1  (Unix)">
+	<META NAME="CREATED" CONTENT="0;0">
+	<META NAME="CHANGED" CONTENT="20130429;6074300">
+</HEAD>
+<BODY LANG="en" DIR="LTR">
+<P STYLE="margin-bottom: 0in">Quelque chose s'est mal passé ...
+Vérifier l'existence de vos conseils dans le dossier
+/Resources/startupHints/ …</P>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0021.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0021.png
new file mode 100644
index 0000000..4451150
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0021.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0022.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0022.png
new file mode 100644
index 0000000..28fb534
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0022.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0033.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0033.png
new file mode 100644
index 0000000..5c2326a
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0033.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0041.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0041.png
new file mode 100644
index 0000000..89fe348
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0041.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0051.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0051.png
new file mode 100644
index 0000000..c51965c
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0051.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0052.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0052.png
new file mode 100644
index 0000000..3edbe48
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0052.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0061.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0061.png
new file mode 100644
index 0000000..cb15401
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0061.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0071.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0071.png
new file mode 100644
index 0000000..1ca52b1
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0071.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0081.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0081.png
new file mode 100644
index 0000000..2ee7c20
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0081.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0091.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0091.png
new file mode 100644
index 0000000..deb3ef1
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0091.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0101.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0101.png
new file mode 100644
index 0000000..669943b
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0101.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0102.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0102.png
new file mode 100644
index 0000000..6ea6ac8
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0102.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0111.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0111.png
new file mode 100644
index 0000000..81a2712
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0111.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0121.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0121.png
new file mode 100644
index 0000000..6133123
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0121.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0122.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0122.png
new file mode 100644
index 0000000..bc1c8ef
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0122.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0131.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0131.png
new file mode 100644
index 0000000..a150433
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0131.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image01401.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image01401.png
new file mode 100644
index 0000000..bbca7e6
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image01401.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0141.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0141.png
new file mode 100644
index 0000000..065ce69
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0141.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0142.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0142.png
new file mode 100644
index 0000000..0756786
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0142.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0151.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0151.png
new file mode 100644
index 0000000..5b0c4b9
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0151.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0152.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0152.png
new file mode 100644
index 0000000..bd5cf70
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0152.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0161.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0161.png
new file mode 100644
index 0000000..33a00da
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0161.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0171.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0171.png
new file mode 100644
index 0000000..0051414
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0171.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0172.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0172.png
new file mode 100644
index 0000000..539caec
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0172.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0181.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0181.png
new file mode 100644
index 0000000..e0a26f7
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0181.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0191.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0191.png
new file mode 100644
index 0000000..cd9ca8b
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0191.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0201.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0201.png
new file mode 100644
index 0000000..ac16407
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0201.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0211.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0211.png
new file mode 100644
index 0000000..5571587
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0211.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0241.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0241.png
new file mode 100644
index 0000000..adac2fe
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0241.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0261.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0261.png
new file mode 100644
index 0000000..0c49b7a
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0261.png differ
diff --git a/Sankore-3.1/resources/startupHints/locales/fr/images/image0271.png b/Sankore-3.1/resources/startupHints/locales/fr/images/image0271.png
new file mode 100644
index 0000000..a404db6
Binary files /dev/null and b/Sankore-3.1/resources/startupHints/locales/fr/images/image0271.png differ
diff --git a/Sankore-3.1/resources/etc/Tutorial/tutorial_en/images/logo_open_sankore.png b/Sankore-3.1/resources/startupHints/locales/fr/images/opensankore.png
similarity index 100%
copy from Sankore-3.1/resources/etc/Tutorial/tutorial_en/images/logo_open_sankore.png
copy to Sankore-3.1/resources/startupHints/locales/fr/images/opensankore.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/0.gif b/Sankore-3.1/resources/startupHints/objects/0.gif
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/0.gif
copy to Sankore-3.1/resources/startupHints/objects/0.gif
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/1.gif b/Sankore-3.1/resources/startupHints/objects/1.gif
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/1.gif
copy to Sankore-3.1/resources/startupHints/objects/1.gif
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/2.gif b/Sankore-3.1/resources/startupHints/objects/2.gif
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/2.gif
copy to Sankore-3.1/resources/startupHints/objects/2.gif
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/3.gif b/Sankore-3.1/resources/startupHints/objects/3.gif
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/3.gif
copy to Sankore-3.1/resources/startupHints/objects/3.gif
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/4.gif b/Sankore-3.1/resources/startupHints/objects/4.gif
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/4.gif
copy to Sankore-3.1/resources/startupHints/objects/4.gif
diff --git a/Sankore-3.1/resources/style.qss b/Sankore-3.1/resources/style.qss
index e53e0ee..29d4b66 100644
--- a/Sankore-3.1/resources/style.qss
+++ b/Sankore-3.1/resources/style.qss
@@ -106,6 +106,11 @@ QComboBox#DockPaletteWidgetComboBox::down-arrow
 	border-radius: 10px;
 }
 
+QComboBox#CacheModeSelectionComboBox
+{
+      background:#DDDDDD;
+}
+
 QPushButton#DockPaletteWidgetButton
 {
 	background-color : #DDDDDD;
diff --git a/Sankore-3.1/resources/win/sankore.rc b/Sankore-3.1/resources/win/sankore.rc
index 6ed7fcc..8c22fde 100644
--- a/Sankore-3.1/resources/win/sankore.rc
+++ b/Sankore-3.1/resources/win/sankore.rc
@@ -39,7 +39,7 @@ BEGIN
 
             VALUE "FileVersion",      UBVERSION
 
-            VALUE "LegalCopyright",   "(c) Webdoc SA, 2009-2012. All rights reserved\000"
+            VALUE "LegalCopyright",   "(C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)\000"
 
             VALUE "OriginalFilename", "Sankore 3.1.exe\000"
 
diff --git a/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.cpp b/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.cpp
index f43bf53..73a81c5 100644
--- a/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.cpp
+++ b/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,1531 +18,1532 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include <QRegExp>
-#include <QSvgGenerator>
-#include <QSvgRenderer>
-#include <QPixmap>
-#include <QMap>
-
-#include "core/UBPersistenceManager.h"
-
-#include "document/UBDocumentProxy.h"
-
-#include "domain/UBItem.h"
-#include "domain/UBGraphicsPolygonItem.h"
-#include "domain/UBGraphicsStroke.h"
-#include "domain/UBGraphicsTextItem.h"
-#include "domain/UBGraphicsSvgItem.h"
-#include "domain/UBGraphicsPixmapItem.h"
-#include "domain/UBGraphicsMediaItem.h"
-#include "domain/UBGraphicsWidgetItem.h"
-#include "domain/UBGraphicsTextItem.h"
-#include "domain/UBGraphicsTextItemDelegate.h"
-#include "domain/UBGraphicsWidgetItem.h"
-#include "domain/UBGraphicsGroupContainerItem.h"
-
-#include "frameworks/UBFileSystemUtils.h"
-
-#include "UBCFFSubsetAdaptor.h"
-#include "UBMetadataDcSubsetAdaptor.h"
-#include "UBThumbnailAdaptor.h"
-#include "UBSvgSubsetAdaptor.h"
-
-#include "core/UBApplication.h"
-#include "QFile"
-
-#include "core/memcheck.h"
-//#include "qtlogger.h"
-
-//tag names definition. Use them everiwhere!
-static QString tElement         = "element";
-static QString tGroup           = "group";
-static QString tEllipse         = "ellipse";
-static QString tIwb             = "iwb";
-static QString tMeta            = "meta";
-static QString tPage            = "page";
-static QString tPageset         = "pageset";
-static QString tG               = "g";
-static QString tSwitch          = "switch";
-static QString tPolygon         = "polygon";
-static QString tPolyline        = "polyline";
-static QString tRect            = "rect";
-static QString tSvg             = "svg";
-static QString tText            = "text";
-static QString tTextarea        = "textarea";
-static QString tTspan           = "tspan";
-static QString tBreak           = "tbreak";
-static QString tImage           = "image";
-static QString tFlash           = "flash";
-static QString tAudio           = "a";
-static QString tVideo           = "video";
-
-//attribute names definition
-static QString aFill            = "fill";
-static QString aFillopacity     = "fill-opacity";
-static QString aX               = "x";
-static QString aY               = "y";
-static QString aWidth           = "width";
-static QString aHeight          = "height";
-static QString aStroke          = "stroke";
-static QString aStrokewidth     = "stroke-width";
-static QString aCx              = "cx";
-static QString aCy              = "cy";
-static QString aRx              = "rx";
-static QString aRy              = "ry";
-static QString aTransform       = "transform";
-static QString aViewbox         = "viewbox";
-static QString aFontSize        = "font-size";
-static QString aFontfamily      = "font-family";
-static QString aFontstretch     = "font-stretch";
-static QString aFontstyle       = "font-style";
-static QString aFontweight      = "font-weight";
-static QString aTextalign       = "text-align";
-static QString aPoints          = "points";
-static QString svgNS            = "http://www.w3.org/2000/svg";
-static QString iwbNS            = "http://www.imsglobal.org/xsd/iwb_v1p0";
-static QString aId              = "id";
-static QString aRef             = "ref";
-static QString aHref            = "href";
-static QString aBackground      = "background";
-static QString aLocked          = "locked";
-static QString aEditable        = "editable";
-
-//attributes part names
-static QString apRotate         = "rotate";
-static QString apTranslate      = "translate";
-
-
-UBCFFSubsetAdaptor::UBCFFSubsetAdaptor()
-{}
-
-bool UBCFFSubsetAdaptor::ConvertCFFFileToUbz(QString &cffSourceFile, UBDocumentProxy* pDocument)
-{
-    //TODO
-    // fill document proxy metadata
-    // create persistance manager to save data using proxy
-    // create UBCFFSubsetReader and make it parse cffSourceFolder
-    QFile file(cffSourceFile);
-
-    if (!file.open(QIODevice::ReadOnly))
-    {
-        qWarning() << "Cannot open file " << cffSourceFile << " for reading ...";
-        return false;
-    }
-
-    UBCFFSubsetReader cffReader(pDocument, &file);
-    bool result =  cffReader.parse();
-    file.close();
-
-    return result;
-}
-UBCFFSubsetAdaptor::UBCFFSubsetReader::UBCFFSubsetReader(UBDocumentProxy *proxy, QFile *content)
-    : mProxy(proxy)
-    , mGSectionContainer(NULL)
-{
-    int errorLine, errorColumn;
-    QString errorStr;
-    if(!mDOMdoc.setContent(content, true, &errorStr, &errorLine, &errorColumn)){
-        qWarning() << "Error:Parseerroratline" << errorLine << ","
-                  << "column" << errorColumn << ":" << errorStr;
-    } else {
-        qDebug() << "well parsed to DOM";
-        pwdContent = QFileInfo(content->fileName()).dir().absolutePath();
-    }
-    qDebug() << "tmp path is" << pwdContent;
-}
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parse()
-{
-    UBMetadataDcSubsetAdaptor::persist(mProxy);
-
-    mIndent = "";
-    if (!getTempFileName() || !createTempFlashPath())
-        return false;
-
-    if (mDOMdoc.isNull())
-        return false;
-
-    bool result = parseDoc();
-    if (result)
-        result = mProxy->pageCount() != 0;
-
-    if (QFile::exists(mTempFilePath))
-        QFile::remove(mTempFilePath);
-
-//    if (mTmpFlashDir.exists())
-//        UBFileSystemUtils::deleteDir(mTmpFlashDir.path());
-
-    return result;
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseGSection(const QDomElement &element)
-{
-    mGSectionContainer = new UBGraphicsGroupContainerItem();
-
-    QDomElement currentSvgElement = element.firstChildElement();
-    while (!currentSvgElement.isNull()) {
-        parseSvgElement(currentSvgElement);
-        currentSvgElement = currentSvgElement.nextSiblingElement();
-    }
-
-    if (mGSectionContainer->childItems().count())
-    { 
-        mCurrentScene->addGroup(mGSectionContainer);
-    }
-    else 
-    {
-        delete mGSectionContainer;
-    }
-    mGSectionContainer = NULL;
-
-    return true;
-}
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgSwitchSection(const QDomElement &element)
-{
-
-    QDomElement currentSvgElement = element.firstChildElement();
-    while (!currentSvgElement.isNull()) {
-        if (parseSvgElement(currentSvgElement))
-            return true;
-    }
-
-    return false;
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgRect(const QDomElement &element)
-{
-    qreal x1 = element.attribute(aX).toDouble();
-    qreal y1 = element.attribute(aY).toDouble();
-    //rect dimensions
-    qreal width = element.attribute(aWidth).toDouble();
-    qreal height = element.attribute(aHeight).toDouble();
-
-    QString textFillColor = element.attribute(aFill);
-    QString textStrokeColor = element.attribute(aStroke);
-    QString textStrokeWidth = element.attribute(aStrokewidth);
-
-    QColor fillColor = !textFillColor.isNull() ? colorFromString(textFillColor) : QColor();
-    QColor strokeColor = !textStrokeColor.isNull() ? colorFromString(textStrokeColor) : QColor();
-    int strokeWidth = textStrokeWidth.toInt();
-
-    x1 -= strokeWidth/2;
-    y1 -= strokeWidth/2;
-    width += strokeWidth;
-    height += strokeWidth;
-
-    //init svg generator with temp file
-    QSvgGenerator *generator = createSvgGenerator(width, height);
-
-    //init painter to paint to svg
-    QPainter painter;
-
-    painter.begin(generator);
-
-    //fill rect
-    if (fillColor.isValid()) {
-        painter.setBrush(QBrush(fillColor));
-        painter.fillRect(0, 0, width, height, fillColor);
-    }
-    QPen pen;
-    if (strokeColor.isValid()) {
-        pen.setColor(strokeColor);
-    }
-    if (strokeWidth)
-        pen.setWidth(strokeWidth);
-    painter.setPen(pen);
-    painter.drawRect(0, 0, width, height);
-
-    painter.end();
-
-    UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
-   
-    QString uuid = QUuid::createUuid().toString();
-    mRefToUuidMap.insert(element.attribute(aId), uuid);
-    svgItem->setUuid(QUuid(uuid));
-
-    QTransform transform;
-    QString textTransform = element.attribute(aTransform);
-
-    svgItem->resetTransform();
-    if (!textTransform.isNull()) {
-        transform = transformFromString(textTransform, svgItem);
-    }
-
-    repositionSvgItem(svgItem, width, height, x1, y1, transform);
-    hashSceneItem(element, svgItem);
-
-    if (mGSectionContainer)
-    {
-        addItemToGSection(svgItem);
-    }
-
-    delete generator;
-
-    return true;
-}
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgEllipse(const QDomElement &element)
-{
-    //ellipse horisontal and vertical radius
-    qreal rx = element.attribute(aRx).toDouble();
-    qreal ry = element.attribute(aRy).toDouble();
-    QSvgGenerator *generator = createSvgGenerator(rx * 2, ry * 2);
-
-    //fill and stroke color
-    QColor fillColor = colorFromString(element.attribute(aFill));
-    QColor strokeColor = colorFromString(element.attribute(aStroke));
-    int strokeWidth = element.attribute(aStrokewidth).toInt();
-
-    //ellipse center coordinates
-    qreal cx = element.attribute(aCx).toDouble();
-    qreal cy = element.attribute(aCy).toDouble();
-
-    //init painter to paint to svg
-    QPainter painter;
-    painter.begin(generator);
-
-    QPen pen(strokeColor);
-    pen.setWidth(strokeWidth);
-    painter.setPen(pen);
-    painter.setBrush(QBrush(fillColor));
-
-    painter.drawEllipse(0, 0, rx * 2, ry * 2);
-
-    painter.end();
-
-    UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
-
-    QString uuid = QUuid::createUuid().toString();
-    mRefToUuidMap.insert(element.attribute(aId), uuid);
-    svgItem->setUuid(QUuid(uuid));
-
-    QTransform transform;
-    QString textTransform = element.attribute(aTransform);
-
-    svgItem->resetTransform();
-    if (!textTransform.isNull()) {
-        transform = transformFromString(textTransform, svgItem);
-    }
-
-
-    repositionSvgItem(svgItem, rx * 2, ry * 2, cx - 2*rx, cy+ry, transform);
-    hashSceneItem(element, svgItem);
-
-    if (mGSectionContainer)
-    {
-        addItemToGSection(svgItem);
-    }
-
-    delete generator;
-
-    return true;
-}
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPolygon(const QDomElement &element)
-{
-    QString svgPoints = element.attribute(aPoints);
-    QPolygonF polygon;
-
-    if (!svgPoints.isNull()) {
-        QStringList ts = svgPoints.split(QLatin1Char(' '), QString::SkipEmptyParts);
-
-        foreach(const QString sPoint, ts) {
-            QStringList sCoord = sPoint.split(QLatin1Char(','), QString::SkipEmptyParts);
-            if (sCoord.size() == 2) {
-                QPointF point;
-                point.setX(sCoord.at(0).toFloat());
-                point.setY(sCoord.at(1).toFloat());
-                polygon << point;
-            }
-            else if (sCoord.size() == 4){
-                //This is the case on system were the "," is used to seperate decimal
-                QPointF point;
-                QString x = sCoord.at(0) + "." + sCoord.at(1);
-                QString y = sCoord.at(2) + "." + sCoord.at(3);
-                point.setX(x.toFloat());
-                point.setY(y.toFloat());
-                polygon << point;
-            }
-            else {
-                qWarning() << "cannot make sense of a 'point' value" << sCoord;
-            }
-        }
-    }
-
-    //bounding rect lef top corner coordinates
-    qreal x1 = polygon.boundingRect().topLeft().x();
-    qreal y1 = polygon.boundingRect().topLeft().y();
-    //bounding rect dimensions
-    qreal width = polygon.boundingRect().width();
-    qreal height = polygon.boundingRect().height();
-
-    QString strokeColorText = element.attribute(aStroke);
-    QString fillColorText = element.attribute(aFill);
-    QString strokeWidthText = element.attribute(aStrokewidth);
-
-    QColor strokeColor = !strokeColorText.isEmpty() ? colorFromString(strokeColorText) : QColor();
-    QColor fillColor = !fillColorText.isEmpty() ? colorFromString(fillColorText) : QColor();
-    int strokeWidth = strokeWidthText.toDouble();
-
-    QPen pen;
-    pen.setColor(strokeColor);
-    pen.setWidth(strokeWidth);
-
-    QBrush brush;
-    brush.setColor(fillColor);
-    brush.setStyle(Qt::SolidPattern);
-
- 
-    QUuid itemUuid(element.attribute(aId).right(QUuid().toString().length()));
-    QUuid itemGroupUuid(element.attribute(aId).left(QUuid().toString().length()-1));
-    if (!itemUuid.isNull() && (itemGroupUuid!=itemUuid)) // reimported from UBZ
-    {
-        UBGraphicsPolygonItem *graphicsPolygon = mCurrentScene->polygonToPolygonItem(polygon);
-
-        graphicsPolygon->setBrush(brush);
-
-        QTransform transform;
-        QString textTransform = element.attribute(aTransform);
-
-        graphicsPolygon->resetTransform();
-        if (!textTransform.isNull()) {
-            transform = transformFromString(textTransform, graphicsPolygon);
-        }
-        mCurrentScene->addItem(graphicsPolygon);
-
-        graphicsPolygon->setUuid(itemUuid);
-        mRefToUuidMap.insert(element.attribute(aId), itemUuid);
-
-    }
-    else // single CFF
-    {
-        QSvgGenerator *generator = createSvgGenerator(width + pen.width(), height + pen.width());
-        QPainter painter;
-
-        painter.begin(generator); //drawing to svg tmp file
-
-        painter.translate(pen.widthF() / 2 - x1, pen.widthF() / 2 - y1);
-        painter.setBrush(brush);
-        painter.setPen(pen);
-        painter.drawPolygon(polygon);
-
-        painter.end();
-
-        //add resulting svg file to scene
-        UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
-        QTransform transform;
-        QString textTransform = element.attribute(aTransform);
-        
-        QUuid uuid = QUuid::createUuid().toString();
-        mRefToUuidMap.insert(element.attribute(aId), uuid);
-        svgItem->setUuid(uuid);
-
-        svgItem->resetTransform();
-        if (!textTransform.isNull()) {
-            transform = transformFromString(textTransform, svgItem);
-        }
-        repositionSvgItem(svgItem, width +strokeWidth, height + strokeWidth, x1 - strokeWidth/2 + transform.m31(), y1 + strokeWidth/2 + transform.m32(), transform);
-        hashSceneItem(element, svgItem);
-
-        if (mGSectionContainer)
-        {
-            addItemToGSection(svgItem);
-        }
-
-        delete generator;
-    }
-    return true;
-}
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPolyline(const QDomElement &element)
-{
-    QString svgPoints = element.attribute(aPoints);
-    QPolygonF polygon;
-
-    if (!svgPoints.isNull()) {
-        QStringList ts = svgPoints.split(QLatin1Char(' '),
-                                                    QString::SkipEmptyParts);
-
-        foreach(const QString sPoint, ts) {
-            QStringList sCoord = sPoint.split(QLatin1Char(','), QString::SkipEmptyParts);
-            if (sCoord.size() == 2) {
-                QPointF point;
-                point.setX(sCoord.at(0).toFloat());
-                point.setY(sCoord.at(1).toFloat());
-                polygon << point;
-            }
-            else if (sCoord.size() == 4){
-                //This is the case on system were the "," is used to seperate decimal
-                QPointF point;
-                QString x = sCoord.at(0) + "." + sCoord.at(1);
-                QString y = sCoord.at(2) + "." + sCoord.at(3);
-                point.setX(x.toFloat());
-                point.setY(y.toFloat());
-                polygon << point;
-            }
-            else {
-                qWarning() << "cannot make sense of a 'point' value" << sCoord;
-            }
-        }
-    }
-
-    //bounding rect lef top corner coordinates
-    qreal x1 = polygon.boundingRect().topLeft().x();
-    qreal y1 = polygon.boundingRect().topLeft().y();
-
-    //bounding rect dimensions
-    qreal width = polygon.boundingRect().width();
-    qreal height = polygon.boundingRect().height();
-
-    QString strokeColorText = element.attribute(aStroke);
-    QString strokeWidthText = element.attribute(aStrokewidth);
-
-    QColor strokeColor = !strokeColorText.isEmpty() ? colorFromString(strokeColorText) : QColor();
-    int strokeWidth = strokeWidthText.toDouble();
-
-    width += strokeWidth;
-    height += strokeWidth;
-
-    QPen pen;
-    pen.setColor(strokeColor);
-    pen.setWidth(strokeWidth);
-
-    QBrush brush;
-    brush.setColor(strokeColor);
-    brush.setStyle(Qt::SolidPattern);
-
-    QUuid itemUuid(element.attribute(aId).right(QUuid().toString().length()));
-    QUuid itemGroupUuid(element.attribute(aId).left(QUuid().toString().length()-1));
-    if (!itemUuid.isNull() && (itemGroupUuid!=itemUuid)) // reimported from UBZ
-    {
-        UBGraphicsPolygonItem *graphicsPolygon = new UBGraphicsPolygonItem(polygon);
-
-        UBGraphicsStroke *stroke = new UBGraphicsStroke();
-        graphicsPolygon->setStroke(stroke);
-
-        graphicsPolygon->setBrush(brush);
-        QTransform transform;
-        QString textTransform = element.attribute(aTransform);
-
-        graphicsPolygon->resetTransform();
-        if (!textTransform.isNull()) {
-            transform = transformFromString(textTransform, graphicsPolygon);
-        }
-        mCurrentScene->addItem(graphicsPolygon);
-
-        graphicsPolygon->setUuid(itemUuid);
-        mRefToUuidMap.insert(element.attribute(aId), itemUuid);
-
-    }
-    else // simple CFF
-    {
-        QSvgGenerator *generator = createSvgGenerator(width + pen.width(), height + pen.width());
-        QPainter painter;
-
-        painter.begin(generator); //drawing to svg tmp file
-
-        painter.translate(pen.widthF() / 2 - x1, pen.widthF() / 2 - y1);
-        painter.setBrush(brush);
-        painter.setPen(pen);
-        painter.drawPolygon(polygon);
-
-        painter.end();
-
-        //add resulting svg file to scene
-        UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
-        
-        QString uuid = QUuid::createUuid().toString();
-        mRefToUuidMap.insert(element.attribute(aId), uuid);
-        svgItem->setUuid(QUuid(uuid));
-
-        QTransform transform;
-        QString textTransform = element.attribute(aTransform);
-
-        svgItem->resetTransform();
-        if (!textTransform.isNull()) {
-            transform = transformFromString(textTransform, svgItem);
-        }
-        repositionSvgItem(svgItem, width +strokeWidth, height + strokeWidth, x1 - strokeWidth/2 + transform.m31(), y1 + strokeWidth/2 + transform.m32(), transform);
-        hashSceneItem(element, svgItem);
-
-        if (mGSectionContainer)
-        {
-            addItemToGSection(svgItem);
-        }
-
-        delete generator;
-    }
-
-
-    return true;
-}
-void UBCFFSubsetAdaptor::UBCFFSubsetReader::parseTextAttributes(const QDomElement &element,
-                                                                qreal &fontSize, QColor &fontColor, QString &fontFamily,
-                                                                QString &fontStretch, bool &italic, int &fontWeight,
-                                                                int &textAlign, QTransform &fontTransform)
-{
-    //consider inch has 72 liens
-    //since svg font size is given in pixels, divide it by pixels per line
-    QString fontSz = element.attribute(aFontSize);
-    if (!fontSz.isNull()) fontSize = fontSz.toDouble() * 72 / QApplication::desktop()->physicalDpiY();
-
-    QString fontColorText = element.attribute(aFill);
-    if (!fontColorText.isNull()) fontColor = colorFromString(fontColorText);
-
-    QString fontFamilyText = element.attribute(aFontfamily);
-    if (!fontFamilyText.isNull()) fontFamily = fontFamilyText;
-
-    QString fontStretchText = element.attribute(aFontstretch);
-    if (!fontStretchText.isNull()) fontStretch = fontStretchText;
-
-    if (!element.attribute(aFontstyle).isNull())
-        italic = (element.attribute(aFontstyle) == "italic");
-
-    QString weight = element.attribute(aFontweight);
-    if (!weight.isNull()) {
-        if      (weight == "normal")   fontWeight = QFont::Normal;
-        else if (weight == "light")    fontWeight = QFont::Light;
-        else if (weight == "demibold") fontWeight = QFont::DemiBold;
-        else if (weight == "bold")     fontWeight = QFont::Bold;
-        else if (weight == "black")    fontWeight = QFont::Black;
-    }
-    QString align = element.attribute(aTextalign);
-    if (!align.isNull()) {
-        if      (align == "middle" || align == "center") textAlign = Qt::AlignHCenter;
-        else if (align == "start")                       textAlign = Qt::AlignLeft;
-        else if (align == "end")                         textAlign = Qt::AlignRight;
-    }
-
-    if (!element.attribute(aTransform).isNull())
-        fontTransform = transformFromString(element.attribute(aTransform));
-}
-void UBCFFSubsetAdaptor::UBCFFSubsetReader::readTextBlockAttr(const QDomElement &element, QTextBlockFormat &format)
-{
-    QString fontStretchText = element.attribute(aFontstretch);
-    if (!fontStretchText.isNull()) format.setAlignment(Qt::AlignJustify);
-
-    QString align = element.attribute(aTextalign);
-    if (!align.isNull()) {
-        if      (align == "middle" || align == "center") format.setAlignment(Qt::AlignHCenter);
-        else if (align == "start")                       format.setAlignment(Qt::AlignLeft);
-        else if (align == "end")                         format.setAlignment(Qt::AlignRight);
-        else if (align == "justify")                     format.setAlignment(Qt::AlignJustify);
-    }
-}
-void UBCFFSubsetAdaptor::UBCFFSubsetReader::readTextCharAttr(const QDomElement &element, QTextCharFormat &format)
-{
-    QString fontSz = element.attribute(aFontSize);
-    if (!fontSz.isNull()) {
-        qreal fontSize = fontSz.remove("pt").toDouble();
-        format.setFontPointSize(fontSize);
-    }
-    QString fontColorText = element.attribute(aFill);
-    if (!fontColorText.isNull()) {
-        QColor fontColor = colorFromString(fontColorText);
-        if (fontColor.isValid()) format.setForeground(fontColor);
-    }
-    QString fontFamilyText = element.attribute(aFontfamily);
-    if (!fontFamilyText.isNull()) {
-        format.setFontFamily(fontFamilyText);
-    }
-    if (!element.attribute(aFontstyle).isNull()) {
-        bool italic = (element.attribute(aFontstyle) == "italic");
-        format.setFontItalic(italic);
-    }
-    QString weight = element.attribute(aFontweight);
-    if (!weight.isNull())  {
-        if      (weight == "normal")   format.setFontWeight(QFont::Normal);
-        else if (weight == "light")    format.setFontWeight(QFont::Light);
-        else if (weight == "demibold") format.setFontWeight(QFont::DemiBold);
-        else if (weight == "bold")     format.setFontWeight(QFont::Bold);
-        else if (weight == "black")    format.setFontWeight(QFont::Black);
-    }
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgText(const QDomElement &element)
-{
-    qreal x = element.attribute(aX).toDouble();
-    qreal y = element.attribute(aY).toDouble();
-    qreal width = element.attribute(aWidth).toDouble();
-    qreal height = element.attribute(aHeight).toDouble();
-
-
-    qreal fontSize = 12;
-    QColor fontColor(qApp->palette().foreground().color());
-    QString fontFamily = "Arial";
-    QString fontStretch = "normal";
-    bool italic = false;
-    int fontWeight = QFont::Normal;
-    int textAlign = Qt::AlignLeft;
-    QTransform fontTransform;
-    parseTextAttributes(element, fontSize, fontColor, fontFamily, fontStretch, italic, fontWeight, textAlign, fontTransform);
-
-    QFont startFont(fontFamily, fontSize, fontWeight, italic);
-    height = QFontMetrics(startFont).height();
-    width = QFontMetrics(startFont).width(element.text()) + 5;
-
-    QSvgGenerator *generator = createSvgGenerator(width, height);
-    QPainter painter;
-    painter.begin(generator);
-    painter.setFont(startFont);
-
-    qreal curY = 0.0;
-    qreal curX = 0.0;
-    qreal linespacing = QFontMetricsF(painter.font()).leading();
-
-//    remember if text area has transform
-//    QString transformString;
-    QTransform transform = fontTransform;
-
-    QRectF lastDrawnTextBoundingRect;
-    //parse text area tags
-
-    //recursive call any tspan in text svg element
-    parseTSpan(element, painter
-               , curX, curY, width, height, linespacing, lastDrawnTextBoundingRect
-               , fontSize, fontColor, fontFamily, fontStretch, italic, fontWeight, textAlign, fontTransform);
-
-    painter.end();
-
-    //add resulting svg file to scene
-    UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
-
-    QString uuid = QUuid::createUuid().toString();
-    mRefToUuidMap.insert(element.attribute(aId), uuid);
-    svgItem->setUuid(QUuid(uuid));
-
-    svgItem->resetTransform();
-    repositionSvgItem(svgItem, width, height, x + transform.m31(), y + transform.m32(), transform);
-    hashSceneItem(element, svgItem);
-
-    if (mGSectionContainer)
-    {
-        addItemToGSection(svgItem);
-    }
-
-    delete generator;
-    return true;
-}
-
-void UBCFFSubsetAdaptor::UBCFFSubsetReader::parseTSpan(const QDomElement &parent, QPainter &painter
-                , qreal &curX, qreal &curY, qreal &width, qreal &height, qreal &linespacing, QRectF &lastDrawnTextBoundingRect
-                , qreal &fontSize, QColor &fontColor, QString &fontFamily, QString &fontStretch, bool &italic
-                , int &fontWeight, int &textAlign, QTransform &fontTransform)
-{
-    QDomNode curNode = parent.firstChild();
-    while (!curNode.isNull()) {
-        if (curNode.toElement().tagName() == tTspan) {
-            QDomElement curTSpan = curNode.toElement();
-            parseTextAttributes(curTSpan, fontSize, fontColor, fontFamily, fontStretch, italic
-                                , fontWeight, textAlign, fontTransform);
-            painter.setFont(QFont(fontFamily, fontSize, fontWeight, italic));
-            painter.setPen(fontColor);
-            linespacing = QFontMetricsF(painter.font()).leading();
-            parseTSpan(curTSpan, painter
-                       , curX, curY, width, height, linespacing, lastDrawnTextBoundingRect
-                       , fontSize, fontColor, fontFamily, fontStretch, italic, fontWeight, textAlign, fontTransform);
-        } else if (curNode.nodeType() == QDomNode::CharacterDataNode
-                   || curNode.nodeType() == QDomNode::CDATASectionNode
-                   || curNode.nodeType() == QDomNode::TextNode) {
-
-            QDomCharacterData textData = curNode.toCharacterData();
-            QString text = textData.data().trimmed();
-//            width = painter.fontMetrics().width(text);
-            //get bounding rect to obtain desired text height
-            lastDrawnTextBoundingRect = painter.boundingRect(QRectF(curX, curY, width, height - curY), textAlign|Qt::TextWordWrap, text);
-            painter.drawText(curX, curY, width, lastDrawnTextBoundingRect.height(), textAlign|Qt::TextWordWrap, text);
-            curX += lastDrawnTextBoundingRect.x() + lastDrawnTextBoundingRect.width();
-        } else if (curNode.nodeType() == QDomNode::ElementNode
-                   && curNode.toElement().tagName() == tBreak) {
-
-            curY += lastDrawnTextBoundingRect.height() + linespacing;
-            curX = 0.0;
-            lastDrawnTextBoundingRect = QRectF(0,0,0,0);
-        }
-        curNode = curNode.nextSibling();
-    }
-}
-void UBCFFSubsetAdaptor::UBCFFSubsetReader::parseTSpan(const QDomElement &element, QTextCursor &cursor
-                                                       , QTextBlockFormat &blockFormat, QTextCharFormat &charFormat)
-{
-    QDomNode curNode = element.firstChild();
-    while (!curNode.isNull()) {
-        if (curNode.toElement().tagName() == tTspan) {
-            QDomElement curTspan = curNode.toElement();
-            readTextBlockAttr(curTspan, blockFormat);
-            readTextCharAttr(curTspan, charFormat);
-            cursor.setBlockFormat(blockFormat);
-            cursor.setCharFormat(charFormat);
-            parseTSpan(curTspan, cursor, blockFormat, charFormat);
-
-        } else if (curNode.nodeType() == QDomNode::CharacterDataNode
-                   || curNode.nodeType() == QDomNode::CDATASectionNode
-                   || curNode.nodeType() == QDomNode::TextNode) {
-
-            QDomCharacterData textData = curNode.toCharacterData();
-            QString text = textData.data().trimmed();
-            cursor.insertText(text, charFormat);
-
-        } else if (curNode.nodeType() == QDomNode::ElementNode
-                   && curNode.toElement().tagName() == tBreak) {
-            cursor.insertBlock();
-        }
-        curNode = curNode.nextSibling();
-    }
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgTextarea(const QDomElement &element)
-{
-    qreal x = element.attribute(aX).toDouble();
-    qreal y = element.attribute(aY).toDouble();
-    qreal width = element.attribute(aWidth).toDouble();
-    qreal height = element.attribute(aHeight).toDouble();
-
-    QTextBlockFormat blockFormat;
-    blockFormat.setAlignment(Qt::AlignLeft);
-
-    QTextCharFormat textFormat;
-     // default values
-    textFormat.setFontPointSize(12);
-    textFormat.setForeground(qApp->palette().foreground().color());
-    textFormat.setFontFamily("Arial");
-    textFormat.setFontItalic(false);
-    textFormat.setFontWeight(QFont::Normal);
-
-    // readed values
-    readTextBlockAttr(element, blockFormat);
-    readTextCharAttr(element, textFormat);
-
-    QTextDocument doc;
-    doc.setPlainText("");
-    QTextCursor tCursor(&doc);
-    tCursor.setBlockFormat(blockFormat);
-    tCursor.setCharFormat(textFormat);
-
-    parseTSpan(element, tCursor, blockFormat, textFormat);
-
-    UBGraphicsTextItem *svgItem = mCurrentScene->addTextHtml(doc.toHtml());
-    svgItem->resize(width, height);
-
-    QString uuid = QUuid::createUuid().toString();
-    mRefToUuidMap.insert(element.attribute(aId), uuid);
-    svgItem->setUuid(QUuid(uuid));
-
-    QTransform transform;
-    QString textTransform = element.attribute(aTransform);
-
-    svgItem->resetTransform();
-    if (!textTransform.isNull()) {
-        transform = transformFromString(textTransform, svgItem);
-    }
-
-    //by default all the textAreas are not editable
-    UBGraphicsTextItemDelegate *curDelegate = dynamic_cast<UBGraphicsTextItemDelegate*>(svgItem->Delegate());
-    if (curDelegate) {
-        curDelegate->setEditable(false);
-    }
-
-    repositionSvgItem(svgItem, width, height, x + transform.m31(), y + transform.m32(), transform);
-    hashSceneItem(element, svgItem);
-
-    if (mGSectionContainer)
-    {
-        addItemToGSection(svgItem);
-    }
-
-    return true;
-}
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgImage(const QDomElement &element)
-{
-    qreal x = element.attribute(aX).toDouble();
-    qreal y = element.attribute(aY).toDouble();
-    qreal width = element.attribute(aWidth).toDouble();
-    qreal height = element.attribute(aHeight).toDouble();
-
-    QString itemRefPath = element.attribute(aHref);
-
-    QPixmap pix;
-    if (!itemRefPath.isNull()) {
-        QString imagePath = pwdContent + "/" + itemRefPath;
-        if (!QFile::exists(imagePath)) {
-            qDebug() << "can't load file" << pwdContent + "/" + itemRefPath << "maybe file corrupted";
-            return false;
-        } else {
-//            qDebug() << "size of file" << itemRefPath << QFileInfo(itemRefPath).size();
-        }
-        pix.load(imagePath);
-        if (pix.isNull()) {
-            qDebug() << "can't create pixmap for file" << pwdContent + "/" + itemRefPath << "maybe format does not supported";
-        }
-    }
-
-   UBGraphicsPixmapItem *pixItem = mCurrentScene->addPixmap(pix, NULL);
-
-   QString uuid = QUuid::createUuid().toString();
-   mRefToUuidMap.insert(element.attribute(aId), uuid);
-   pixItem->setUuid(QUuid(uuid));
-
-   QTransform transform;
-   QString textTransform = element.attribute(aTransform);
-
-   pixItem->resetTransform();
-   if (!textTransform.isNull()) {
-       transform = transformFromString(textTransform, pixItem);
-   }
-   repositionSvgItem(pixItem, width, height, x + transform.m31(), y + transform.m32(), transform);
-   hashSceneItem(element, pixItem);
-
-   if (mGSectionContainer)
-   {
-       addItemToGSection(pixItem);
-   }
-
-   return true;
-}
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgFlash(const QDomElement &element)
-{
-    QString itemRefPath = element.attribute(aHref);
-
-    qreal x = element.attribute(aX).toDouble();
-    qreal y = element.attribute(aY).toDouble();
-    qreal width = element.attribute(aWidth).toDouble();
-    qreal height = element.attribute(aHeight).toDouble();
-
-    QUrl urlPath;
-    QString flashPath;
-    if (!itemRefPath.isNull()) {
-        flashPath = pwdContent + "/" + itemRefPath;
-        if (!QFile::exists(flashPath)) {
-            qDebug() << "can't load file" << pwdContent + "/" + itemRefPath << "maybe file corrupted";
-            return false;
-        }
-        urlPath = QUrl::fromLocalFile(flashPath);
-    }
-    QDir tmpFlashDir(mTmpFlashDir);
-    if (!tmpFlashDir.exists()) {
-        qDebug() << "Can't create temporary directory to put flash";
-        return false;
-    }
-
-    QString flashUrl = UBGraphicsW3CWidgetItem::createNPAPIWrapperInDir(flashPath, tmpFlashDir, "application/x-shockwave-flash"
-                                                            ,QSize(mCurrentSceneRect.width(), mCurrentSceneRect.height()));
-    UBGraphicsWidgetItem *flashItem = mCurrentScene->addW3CWidget(QUrl::fromLocalFile(flashUrl));
-    flashItem->setSourceUrl(urlPath);
-
-    QString uuid = QUuid::createUuid().toString();
-    mRefToUuidMap.insert(element.attribute(aId), uuid);
-    flashItem->setUuid(QUuid(uuid));
-
-    QTransform transform;
-    QString textTransform = element.attribute(aTransform);
-
-    flashItem->resetTransform();
-    if (!textTransform.isNull()) {
-        transform = transformFromString(textTransform, flashItem);
-    }
-    repositionSvgItem(flashItem, width, height, x + transform.m31(), y + transform.m32(), transform);
-    hashSceneItem(element, flashItem);
-
-    if (mGSectionContainer)
-    {
-        addItemToGSection(flashItem);
-    }
-
-    return true;
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgAudio(const QDomElement &element)
-{
-    QDomElement parentOfAudio = element.firstChild().toElement();
-    
-    qreal x = parentOfAudio.attribute(aX).toDouble();
-    qreal y = parentOfAudio.attribute(aY).toDouble();
-
-    QString itemRefPath = element.attribute(aHref);
-
-    QUrl concreteUrl;
-    if (!itemRefPath.isNull()) {
-        QString audioPath = pwdContent + "/" + itemRefPath;
-        if (!QFile::exists(audioPath)) {
-            qDebug() << "can't load file" << pwdContent + "/" + itemRefPath << "maybe file corrupted";
-            return false;
-        }
-        concreteUrl = QUrl::fromLocalFile(audioPath);
-    }
-
-    QString uuid = QUuid::createUuid().toString();
-    mRefToUuidMap.insert(element.attribute(aId), uuid);
-
-    QString destFile;
-    bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(
-            mCurrentScene->document(), 
-            concreteUrl.toLocalFile(), 
-            UBPersistenceManager::audioDirectory,
-            QUuid(uuid),
-            destFile);
-    if (!b)
-    {
-        return false;
-    }
-    concreteUrl = QUrl::fromLocalFile(destFile);
-    
-    UBGraphicsMediaItem *audioItem = mCurrentScene->addAudio(concreteUrl, false);
-
-    QTransform transform;
-    QString textTransform = parentOfAudio.attribute(aTransform);
-
-    audioItem->resetTransform();
-    if (!textTransform.isNull()) {
-        transform = transformFromString(textTransform, audioItem);
-    }
-    repositionSvgItem(audioItem, audioItem->boundingRect().width(), audioItem->boundingRect().height(), x + transform.m31(), y + transform.m32(), transform);
-    hashSceneItem(element, audioItem);
-
-    if (mGSectionContainer)
-    {
-        addItemToGSection(audioItem);
-    }
-
-    return true;
-}
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgVideo(const QDomElement &element)
-{
-    QString itemRefPath = element.attribute(aHref);
-    if (itemRefPath.startsWith(tFlash + "/") && itemRefPath.endsWith(".swf")) {
-        if (parseSvgFlash(element)) return true;
-        else return false;
-    }
-    qreal x = element.attribute(aX).toDouble();
-    qreal y = element.attribute(aY).toDouble();
-
-    QUrl concreteUrl;
-    if (!itemRefPath.isNull()) {
-        QString videoPath = pwdContent + "/" + itemRefPath;
-        if (!QFile::exists(videoPath)) {
-            qDebug() << "can't load file" << pwdContent + "/" + itemRefPath << "maybe file corrupted";
-            return false;
-        }
-        concreteUrl = QUrl::fromLocalFile(videoPath);
-    }
-
-    QString uuid = QUuid::createUuid().toString();
-    mRefToUuidMap.insert(element.attribute(aId), uuid);
-
-    QString destFile;
-    bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(
-            mCurrentScene->document(), 
-            concreteUrl.toLocalFile(), 
-            UBPersistenceManager::videoDirectory,
-            QUuid(uuid),
-            destFile);
-    if (!b)
-    {
-        return false;
-    }
-    concreteUrl = QUrl::fromLocalFile(destFile);
-
-    UBGraphicsMediaItem *videoItem = mCurrentScene->addVideo(concreteUrl, false);
-
-    QTransform transform;
-    QString textTransform = element.attribute(aTransform);
-
-    videoItem->resetTransform();
-    if (!textTransform.isNull()) {
-        transform = transformFromString(textTransform, videoItem);
-    }
-    repositionSvgItem(videoItem, videoItem->boundingRect().width(), videoItem->boundingRect().height(), x + transform.m31(), y + transform.m32(), transform);
-    hashSceneItem(element, videoItem);
-
-    if (mGSectionContainer)
-    {
-        addItemToGSection(videoItem);
-    }
-
-    return true;
-}
-
-void UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgSectionAttr(const QDomElement &svgSection)
-{
-    getViewBoxDimenstions(svgSection.attribute(aViewbox));
-    mSize = QSize(svgSection.attribute(aWidth).toInt(),
-                  svgSection.attribute(aHeight).toInt());
-}
-
-void UBCFFSubsetAdaptor::UBCFFSubsetReader::addItemToGSection(QGraphicsItem *item)
-{
-    mGSectionContainer->addToGroup(item);
-}
-
-void UBCFFSubsetAdaptor::UBCFFSubsetReader::hashSceneItem(const QDomElement &element, UBGraphicsItem *item)
-{
-//    adding element pointer to hash to refer if needed
-    QString key = element.attribute(aId);
-    if (!key.isNull()) {
-        persistedItems.insert(key, item);
-    }
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgElement(const QDomElement &parent)
-{
-    QString tagName = parent.tagName();
-    if (parent.namespaceURI() != svgNS) {
-        qWarning() << "Incorrect namespace, error at content file, line number" << parent.lineNumber();
-        //return false;
-    }
-
-    if      (tagName == tG          &&  !parseGSection(parent))             return false;
-    else if (tagName == tSwitch     &&  !parseSvgSwitchSection(parent))     return false;
-    else if (tagName == tRect       &&  !parseSvgRect(parent))              return false;    
-    else if (tagName == tEllipse    &&  !parseSvgEllipse(parent))           return false;
-    else if (tagName == tPolygon    &&  !parseSvgPolygon(parent))           return false;
-    else if (tagName == tPolyline   &&  !parseSvgPolyline(parent))          return false;
-    else if (tagName == tText       &&  !parseSvgText(parent))              return false;
-    else if (tagName == tTextarea   &&  !parseSvgTextarea(parent))          return false;
-    else if (tagName == tImage      &&  !parseSvgImage(parent))             return false;
-    else if (tagName == tFlash      &&  !parseSvgFlash(parent))             return false;
-    else if (tagName == tAudio      &&  !parseSvgAudio(parent))             return false;
-    else if (tagName == tVideo      &&  !parseSvgVideo(parent))             return false;
-
-    return true;
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPage(const QDomElement &parent)
-{
-    createNewScene();
-    QDomElement currentSvgElement = parent.firstChildElement();
-    while (!currentSvgElement.isNull()) {
-        if (!parseSvgElement(currentSvgElement))
-            return false;
-
-        currentSvgElement = currentSvgElement.nextSiblingElement();
-    }
-
-    return true;
-}
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPageset(const QDomElement &parent)
-{
-    QDomElement currentPage = parent.firstChildElement(tPage);
-    while (!currentPage.isNull()) {
-        if (!parseSvgPage(currentPage))
-            return false;
-        currentPage = currentPage.nextSiblingElement(tPage);
-    }
-    return true;
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbMeta(const QDomElement &element)
-{
-    if (element.namespaceURI() != iwbNS) {
-        qWarning() << "incorrect meta namespace, incorrect document";
-        //return false;
-    }
-
-    return true;
-}
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvg(const QDomElement &svgSection)
-{
-    if (svgSection.namespaceURI() != svgNS) {
-        qWarning() << "incorrect svg namespace, incorrect document";
-       // return false;
-    }
-
-    parseSvgSectionAttr(svgSection);
-    QDomElement currentSvg = svgSection.firstChildElement();
-
-    if (currentSvg.tagName() != tPageset) {
-        parseSvgPage(svgSection);
-    } else if (currentSvg.tagName() == tPageset){
-        parseSvgPageset(currentSvg);
-    }
-
-    return true;
-}
-
-UBGraphicsGroupContainerItem *UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbGroup(QDomElement &parent)
-{
-    //TODO. Create groups from elements parsed by parseIwbElement() function
-    if (parent.namespaceURI() != iwbNS) {
-        qWarning() << "incorrect iwb group namespace, incorrect document";
-      //  return false;
-    }
-
-    UBGraphicsGroupContainerItem *group = new UBGraphicsGroupContainerItem();
-    QMultiMap<QString, UBGraphicsPolygonItem *> strokesGroupsContainer;    
-    QList<QGraphicsItem *> groupContainer;    
-    QString currentStrokeIdentifier;
-
-    QDomElement currentStrokeElement = parent.firstChildElement();    
-    while (!currentStrokeElement.isNull())
-    {
-        if (tGroup == currentStrokeElement.tagName())
-            group->addToGroup(parseIwbGroup(currentStrokeElement));
-        else
-        {
-            
-            QString ref = currentStrokeElement.attribute(aRef);
-            QString uuid = mRefToUuidMap[ref];
-            if (!uuid.isEmpty())
-            {
-                if (ref.size() > QUuid().toString().length()) // create stroke group
-                {              
-                    currentStrokeIdentifier = ref.left(QUuid().toString().length()-1);
-                    UBGraphicsPolygonItem *strokeByUuid = qgraphicsitem_cast<UBGraphicsPolygonItem *>(mCurrentScene->itemForUuid(QUuid(ref.right(QUuid().toString().length()))));
-
-                    if (strokeByUuid)
-                        strokesGroupsContainer.insert(currentStrokeIdentifier, strokeByUuid);
-                }
-                else // single elements in group
-                    groupContainer.append(mCurrentScene->itemForUuid(QUuid(uuid)));
-            }
-        }
-        currentStrokeElement = currentStrokeElement.nextSiblingElement();
-    }
-
-
-
-    foreach (QString key, strokesGroupsContainer.keys().toSet())
-    {
-        UBGraphicsStrokesGroup* pStrokesGroup = new UBGraphicsStrokesGroup();
-        UBGraphicsStroke *currentStroke = new UBGraphicsStroke();
-        foreach(UBGraphicsPolygonItem* poly, strokesGroupsContainer.values(key))
-        {
-            if (poly)
-            {
-                mCurrentScene->removeItem(poly);
-                mCurrentScene->removeItemFromDeletion(poly);
-                poly->setStrokesGroup(pStrokesGroup);
-                poly->setStroke(currentStroke);
-                pStrokesGroup->addToGroup(poly);
-            }
-        }
-        if (currentStroke->polygons().empty())
-            delete currentStroke;
-
-        if (pStrokesGroup->childItems().count())
-            mCurrentScene->addItem(pStrokesGroup);
-        else
-            delete pStrokesGroup;
-
-        if (pStrokesGroup)
-        {
-            QGraphicsItem *strokeGroup = qgraphicsitem_cast<QGraphicsItem *>(pStrokesGroup);
-            groupContainer.append(strokeGroup);
-        }
-    }
-
-    foreach(QGraphicsItem* item, groupContainer)
-        group->addToGroup(item);
-
-    if (group->childItems().count())
-    {
-        mCurrentScene->addItem(group);
-
-        if (1 == group->childItems().count())
-        {
-            group->destroy(false);
-        }
-    }
-
-    return group;
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::strToBool(QString str)
-{
-    return str == "true";
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbElement(QDomElement &element)
-{
-    if (element.namespaceURI() != iwbNS) {
-        qWarning() << "incorrect iwb element namespace, incorrect document";
-      //  return false;
-    }
-
-    bool locked = false;
-    bool isEditableItem = false;
-    bool isEditable = false; //Text items to convert to UBGraphicsTextItem only
-
-    QString IDRef = element.attribute(aRef);
-    if (!IDRef.isNull()) {
-        element.hasAttribute(aBackground) ? strToBool(element.attribute(aBackground)) : false;
-        locked = element.hasAttribute(aBackground) ? strToBool(element.attribute(aBackground)) : false;
-        isEditableItem = element.hasAttribute(aEditable);
-        if (isEditableItem)
-            isEditable = strToBool(element.attribute(aEditable));
-
-        UBGraphicsItem *referedItem(0);
-        QHash<QString, UBGraphicsItem*>::iterator iReferedItem;
-        iReferedItem = persistedItems.find(IDRef);
-        if (iReferedItem != persistedItems.end()) {
-            referedItem = *iReferedItem;
-            referedItem->Delegate()->lock(locked);
-        }
-        if (isEditableItem) {
-            UBGraphicsTextItemDelegate *textDelegate = dynamic_cast<UBGraphicsTextItemDelegate*>(referedItem->Delegate());
-            if (textDelegate) {
-                textDelegate->setEditable(isEditable);
-            }
-        }
-    }
-
-    return true;
-}
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseDoc()
-{
-    QDomElement currentTopElement = mDOMdoc.documentElement().firstChildElement();
-    while (!currentTopElement.isNull()) {
-        QString tagName = currentTopElement.tagName();
-        if      (tagName == tMeta       && !parseIwbMeta(currentTopElement))    return false;
-        else if (tagName == tSvg        && !parseSvg(currentTopElement))        return false;
-        else if (tagName == tGroup      && !parseIwbGroup(currentTopElement))   return false;
-        else if (tagName == tElement    && !parseIwbElement(currentTopElement)) return false;
-
-        currentTopElement = currentTopElement.nextSiblingElement();
-    }
-    if (!persistScenes()) return false;
-
-    return true;
-}
-
-void UBCFFSubsetAdaptor::UBCFFSubsetReader::repositionSvgItem(QGraphicsItem *item, qreal width, qreal height,
-                                                              qreal x, qreal y,
-                                                              QTransform &transform)
-{
-    //First using viebox coordinates, then translate them to scene coordinates
-
-    QRectF itemBounds = item->boundingRect();
-
-    qreal xScale = width  / itemBounds.width();
-    qreal yScale = height / itemBounds.height();
-
-    qreal fullScaleX = mVBTransFactor * xScale;
-    qreal fullScaleY = mVBTransFactor * yScale;
-
-    QPointF oldVector((x - transform.dx()), (y - transform.dy()));
-    QTransform rTransform;
-    QPointF newVector = rTransform.map(oldVector);
-
-    QTransform tr = item->sceneTransform();
-    item->setTransform(rTransform.scale(fullScaleX, fullScaleY), true);
-    tr = item->sceneTransform();
-    QPoint pos;
-    if (UBGraphicsTextItem::Type == item->type())
-        pos = QPoint((int)((x + mShiftVector.x() + (newVector - oldVector).x())), (int)((y +mShiftVector.y() + (newVector - oldVector).y()) * mVBTransFactor));
-    else
-        pos = QPoint((int)((x + mShiftVector.x() + (newVector - oldVector).x()) * mVBTransFactor), (int)((y +mShiftVector.y() + (newVector - oldVector).y()) * mVBTransFactor));
-        
-
-    item->setPos(pos);
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::createNewScene()
-{
-    mCurrentScene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(mProxy, mProxy->pageCount(), false);
-    mCurrentScene->setSceneRect(mViewBox);
-    if ((mCurrentScene->sceneRect().topLeft().x() >= 0) || (mCurrentScene->sceneRect().topLeft().y() >= 0)) {
-        mShiftVector = -mViewBox.center();
-    }
-    mCurrentSceneRect = mViewBox;
-    mVBTransFactor = qMin(mCurrentScene->normalizedSceneRect().width()  / mViewPort.width(),
-                          mCurrentScene->normalizedSceneRect().height() / mViewPort.height());
-    return true;
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::persistCurrentScene()
-{
-    if (mCurrentScene != 0 && mCurrentScene->isModified())
-    {
-        UBThumbnailAdaptor::persistScene(mProxy, mCurrentScene, mProxy->pageCount() - 1);
-        UBSvgSubsetAdaptor::persistScene(mProxy, mCurrentScene, mProxy->pageCount() - 1);
-
-        mCurrentScene->setModified(false);
-        mCurrentScene = 0;
-    }
-    return true;
-}
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::persistScenes()
-{
-    if (!mProxy->pageCount()) {
-        qDebug() << "No pages created";
-        return false;
-    }
-    for (int i = 0; i < mProxy->pageCount(); i++) {
-        mCurrentScene = UBPersistenceManager::persistenceManager()->getDocumentScene(mProxy, i);
-        if (!mCurrentScene) {
-            qDebug() << "can't allocate scene, loading failed";
-            return false;
-        }
-
-        UBSvgSubsetAdaptor::persistScene(mProxy, mCurrentScene, i);
-        UBGraphicsScene *tmpScene = UBSvgSubsetAdaptor::loadScene(mProxy, i);
-        tmpScene->setModified(true);
-        UBThumbnailAdaptor::persistScene(mProxy, tmpScene, i);
-        mCurrentScene->setModified(false);
-    }
-
-    return true;
-}
-
-QColor UBCFFSubsetAdaptor::UBCFFSubsetReader::colorFromString(const QString& clrString)
-{
-    //init regexp with pattern
-    //pattern corresponds to strings like 'rgb(1,2,3) or rgb(10%,20%,30%)'
-    QRegExp regexp("rgb\\(([0-9]+%{0,1}),([0-9]+%{0,1}),([0-9]+%{0,1})\\)");
-    if (regexp.exactMatch(clrString))
-    {
-        if (regexp.capturedTexts().count() == 4 && regexp.capturedTexts().at(0).length() == clrString.length())
-        {
-            int r = regexp.capturedTexts().at(1).toInt();
-            if (regexp.capturedTexts().at(1).indexOf("%") != -1)
-                r = r * 255 / 100;
-            int g = regexp.capturedTexts().at(2).toInt();
-            if (regexp.capturedTexts().at(2).indexOf("%") != -1)
-                g = g * 255 / 100;
-            int b = regexp.capturedTexts().at(3).toInt();
-            if (regexp.capturedTexts().at(3).indexOf("%") != -1)
-                b = b * 255 / 100;
-            return QColor(r, g, b);
-        }
-        else
-            return QColor();
-    }
-    else
-        return QColor(clrString);
-}
-
-QTransform UBCFFSubsetAdaptor::UBCFFSubsetReader::transformFromString(const QString trString, QGraphicsItem *item)
-{
-    qreal dxr = 0.0;
-    qreal dyr = 0.0;
-    qreal dx = 0.0;
-    qreal dy = 0.0;
-    qreal angle = 0.0;
-    QTransform tr;
-
-    foreach(QString trStr, trString.split(" ", QString::SkipEmptyParts))
-    {
-        //check pattern for strings like 'rotate(10)'
-        QRegExp regexp("rotate\\( *([-+]{0,1}[0-9]*\\.{0,1}[0-9]*) *\\)");
-        if (regexp.exactMatch(trStr)) {
-            angle = regexp.capturedTexts().at(1).toDouble();
-            if (item)
-            {    
-                item->setTransformOriginPoint(QPointF(0, 0));
-                item->rotate(angle);
-            }
-            continue;
-        };
-        
-        //check pattern for strings like 'rotate(10,20,20)' or 'rotate(10.1,10.2,34.2)'
-        regexp.setPattern("rotate\\( *([-+]{0,1}[0-9]*\\.{0,1}[0-9]*) *, *([-+]{0,1}[0-9]*\\.{0,1}[0-9]*) *, *([-+]{0,1}[0-9]*\\.{0,1}[0-9]*) *\\)");
-        if (regexp.exactMatch(trStr)) {
-            angle = regexp.capturedTexts().at(1).toDouble();
-            dxr = regexp.capturedTexts().at(2).toDouble();
-            dyr = regexp.capturedTexts().at(3).toDouble();
-            if (item)
-            {                
-                item->setTransformOriginPoint(QPointF(dxr, dyr)-item->pos());
-                item->rotate(angle);
-            }
-            continue;
-        }
-
-        //check pattern for strings like 'translate(11.0, 12.34)'
-        regexp.setPattern("translate\\( *([-+]{0,1}[0-9]*\\.{0,1}[0-9]*) *,*([-+]{0,1}[0-9]*\\.{0,1}[0-9]*)*\\)");
-        if (regexp.exactMatch(trStr)) {
-            dx = regexp.capturedTexts().at(1).toDouble();
-            dy = regexp.capturedTexts().at(2).toDouble();
-            tr.translate(dx,dy);
-            continue;
-        }
-    }
-    return tr;
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::getViewBoxDimenstions(const QString& viewBox)
-{
-    QStringList capturedTexts = viewBox.split(" ", QString::SkipEmptyParts);
-    if (capturedTexts.count())
-    {
-        if (4 == capturedTexts.count())
-        {
-            mViewBox = QRectF(capturedTexts.at(0).toDouble(), capturedTexts.at(1).toDouble(), capturedTexts.at(2).toDouble(), capturedTexts.at(3).toDouble());
-            mViewPort = mViewBox;
-            mViewPort.translate(- mViewPort.center());
-            mViewBoxCenter.setX(mViewBox.width() / 2);
-            mViewBoxCenter.setY(mViewBox.height() / 2);
-
-            return true;
-        }
-    }
-
-    mViewBox = QRectF(0, 0, 1000, 1000);
-    mViewBoxCenter = QPointF(500, 500);
-    return false;
-}
-
-QSvgGenerator* UBCFFSubsetAdaptor::UBCFFSubsetReader::createSvgGenerator(qreal width, qreal height)
-{
-    QSvgGenerator* generator = new QSvgGenerator();
-//    qWarning() << QString("Making generator with file %1, size (%2, %3) and viewbox (%4 %5 %6 %7)").arg(mTempFilePath)
-//        .arg(width).arg(height).arg(0.0).arg(0.0).arg(width).arg(width);
-    generator->setResolution(QApplication::desktop()->physicalDpiY());
-    generator->setFileName(mTempFilePath);
-    generator->setSize(QSize(width, height));
-    generator->setViewBox(QRectF(0, 0, width, height));
-
-    return generator;
-}
-
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::getTempFileName()
-{
-    int tmpNumber = 0;
-    QDir rootDir;
-    while (true)
-    {
-        mTempFilePath = QString("%1/sanksvg%2.%3")
-                .arg(rootDir.tempPath())
-                .arg(QDateTime::currentDateTime().toString("dd_MM_yyyy_HH-mm"))
-                .arg(tmpNumber);
-        if (!QFile::exists(mTempFilePath))
-            return true;
-        tmpNumber++;
-        if (tmpNumber == 100000)
-        {
-            qWarning() << "Import failed. Failed to create temporary file for svg objects";
-            return false;
-        }
-    }
-}
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::createTempFlashPath()
-{
-    int tmpNumber = 0;
-    QDir systemTmp = QDir::temp();
-
-    while (true) {
-        QString dirName = QString("SankTmpFlash%1.%2")
-                .arg(QDateTime::currentDateTime().toString("dd_MM_yyyy_HH-mm"))
-                .arg(tmpNumber++);
-        if (!systemTmp.exists(dirName)) {
-            if (systemTmp.mkdir(dirName)) {
-                mTmpFlashDir = QDir(systemTmp.absolutePath() + "/" + dirName);
-                return true;
-            } else {
-                qDebug() << "Can't create temporary dir maybe due to permissions";
-                return false;
-            }
-        } else if (tmpNumber == 1000) {
-            qWarning() << "Import failed. Failed to create temporary file for svg objects";
-            return false;
-        }
-    }
-
-    return true;
-}
-UBCFFSubsetAdaptor::UBCFFSubsetReader::~UBCFFSubsetReader()
-{
-//    QList<int> pages;
-//    for (int i = 0; i < mProxy->pageCount(); i++) {
-//        pages << i;
-//    }
-//    UBPersistenceManager::persistenceManager()->deleteDocumentScenes(mProxy, pages);
-}
+
+
+
+#include <QRegExp>
+#include <QSvgGenerator>
+#include <QSvgRenderer>
+#include <QPixmap>
+#include <QMap>
+
+#include "core/UBPersistenceManager.h"
+
+#include "document/UBDocumentProxy.h"
+
+#include "domain/UBItem.h"
+#include "domain/UBGraphicsPolygonItem.h"
+#include "domain/UBGraphicsStroke.h"
+#include "domain/UBGraphicsTextItem.h"
+#include "domain/UBGraphicsSvgItem.h"
+#include "domain/UBGraphicsPixmapItem.h"
+#include "domain/UBGraphicsMediaItem.h"
+#include "domain/UBGraphicsWidgetItem.h"
+#include "domain/UBGraphicsTextItem.h"
+#include "domain/UBGraphicsTextItemDelegate.h"
+#include "domain/UBGraphicsWidgetItem.h"
+#include "domain/UBGraphicsGroupContainerItem.h"
+
+#include "frameworks/UBFileSystemUtils.h"
+
+#include "UBCFFSubsetAdaptor.h"
+#include "UBMetadataDcSubsetAdaptor.h"
+#include "UBThumbnailAdaptor.h"
+#include "UBSvgSubsetAdaptor.h"
+
+#include "core/UBApplication.h"
+#include "QFile"
+
+#include "core/memcheck.h"
+//#include "qtlogger.h"
+
+//tag names definition. Use them everiwhere!
+static QString tElement         = "element";
+static QString tGroup           = "group";
+static QString tEllipse         = "ellipse";
+static QString tIwb             = "iwb";
+static QString tMeta            = "meta";
+static QString tPage            = "page";
+static QString tPageset         = "pageset";
+static QString tG               = "g";
+static QString tSwitch          = "switch";
+static QString tPolygon         = "polygon";
+static QString tPolyline        = "polyline";
+static QString tRect            = "rect";
+static QString tSvg             = "svg";
+static QString tText            = "text";
+static QString tTextarea        = "textarea";
+static QString tTspan           = "tspan";
+static QString tBreak           = "tbreak";
+static QString tImage           = "image";
+static QString tFlash           = "flash";
+static QString tAudio           = "a";
+static QString tVideo           = "video";
+
+//attribute names definition
+static QString aFill            = "fill";
+static QString aFillopacity     = "fill-opacity";
+static QString aX               = "x";
+static QString aY               = "y";
+static QString aWidth           = "width";
+static QString aHeight          = "height";
+static QString aStroke          = "stroke";
+static QString aStrokewidth     = "stroke-width";
+static QString aCx              = "cx";
+static QString aCy              = "cy";
+static QString aRx              = "rx";
+static QString aRy              = "ry";
+static QString aTransform       = "transform";
+static QString aViewbox         = "viewbox";
+static QString aFontSize        = "font-size";
+static QString aFontfamily      = "font-family";
+static QString aFontstretch     = "font-stretch";
+static QString aFontstyle       = "font-style";
+static QString aFontweight      = "font-weight";
+static QString aTextalign       = "text-align";
+static QString aPoints          = "points";
+static QString svgNS            = "http://www.w3.org/2000/svg";
+static QString iwbNS            = "http://www.imsglobal.org/xsd/iwb_v1p0";
+static QString aId              = "id";
+static QString aRef             = "ref";
+static QString aHref            = "href";
+static QString aBackground      = "background";
+static QString aLocked          = "locked";
+static QString aEditable        = "editable";
+
+//attributes part names
+static QString apRotate         = "rotate";
+static QString apTranslate      = "translate";
+
+
+UBCFFSubsetAdaptor::UBCFFSubsetAdaptor()
+{}
+
+bool UBCFFSubsetAdaptor::ConvertCFFFileToUbz(QString &cffSourceFile, UBDocumentProxy* pDocument)
+{
+    //TODO
+    // fill document proxy metadata
+    // create persistance manager to save data using proxy
+    // create UBCFFSubsetReader and make it parse cffSourceFolder
+    QFile file(cffSourceFile);
+
+    if (!file.open(QIODevice::ReadOnly))
+    {
+        qWarning() << "Cannot open file " << cffSourceFile << " for reading ...";
+        return false;
+    }
+
+    UBCFFSubsetReader cffReader(pDocument, &file);
+    bool result =  cffReader.parse();
+    file.close();
+
+    return result;
+}
+UBCFFSubsetAdaptor::UBCFFSubsetReader::UBCFFSubsetReader(UBDocumentProxy *proxy, QFile *content)
+    : mProxy(proxy)
+    , mGSectionContainer(NULL)
+{
+    int errorLine, errorColumn;
+    QString errorStr;
+    if(!mDOMdoc.setContent(content, true, &errorStr, &errorLine, &errorColumn)){
+        qWarning() << "Error:Parseerroratline" << errorLine << ","
+                  << "column" << errorColumn << ":" << errorStr;
+    } else {
+        qDebug() << "well parsed to DOM";
+        pwdContent = QFileInfo(content->fileName()).dir().absolutePath();
+    }
+    qDebug() << "tmp path is" << pwdContent;
+}
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parse()
+{
+    UBMetadataDcSubsetAdaptor::persist(mProxy);
+
+    mIndent = "";
+    if (!getTempFileName() || !createTempFlashPath())
+        return false;
+
+    if (mDOMdoc.isNull())
+        return false;
+
+    bool result = parseDoc();
+    if (result)
+        result = mProxy->pageCount() != 0;
+
+    if (QFile::exists(mTempFilePath))
+        QFile::remove(mTempFilePath);
+
+//    if (mTmpFlashDir.exists())
+//        UBFileSystemUtils::deleteDir(mTmpFlashDir.path());
+
+    return result;
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseGSection(const QDomElement &element)
+{
+    mGSectionContainer = new UBGraphicsGroupContainerItem();
+
+    QDomElement currentSvgElement = element.firstChildElement();
+    while (!currentSvgElement.isNull()) {
+        parseSvgElement(currentSvgElement);
+        currentSvgElement = currentSvgElement.nextSiblingElement();
+    }
+
+    if (mGSectionContainer->childItems().count())
+    { 
+        mCurrentScene->addGroup(mGSectionContainer);
+    }
+    else 
+    {
+        delete mGSectionContainer;
+    }
+    mGSectionContainer = NULL;
+
+    return true;
+}
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgSwitchSection(const QDomElement &element)
+{
+
+    QDomElement currentSvgElement = element.firstChildElement();
+    while (!currentSvgElement.isNull()) {
+        if (parseSvgElement(currentSvgElement))
+            return true;
+    }
+
+    return false;
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgRect(const QDomElement &element)
+{
+    qreal x1 = element.attribute(aX).toDouble();
+    qreal y1 = element.attribute(aY).toDouble();
+    //rect dimensions
+    qreal width = element.attribute(aWidth).toDouble();
+    qreal height = element.attribute(aHeight).toDouble();
+
+    QString textFillColor = element.attribute(aFill);
+    QString textStrokeColor = element.attribute(aStroke);
+    QString textStrokeWidth = element.attribute(aStrokewidth);
+
+    QColor fillColor = !textFillColor.isNull() ? colorFromString(textFillColor) : QColor();
+    QColor strokeColor = !textStrokeColor.isNull() ? colorFromString(textStrokeColor) : QColor();
+    int strokeWidth = textStrokeWidth.toInt();
+
+    x1 -= strokeWidth/2;
+    y1 -= strokeWidth/2;
+    width += strokeWidth;
+    height += strokeWidth;
+
+    //init svg generator with temp file
+    QSvgGenerator *generator = createSvgGenerator(width, height);
+
+    //init painter to paint to svg
+    QPainter painter;
+
+    painter.begin(generator);
+
+    //fill rect
+    if (fillColor.isValid()) {
+        painter.setBrush(QBrush(fillColor));
+        painter.fillRect(0, 0, width, height, fillColor);
+    }
+    QPen pen;
+    if (strokeColor.isValid()) {
+        pen.setColor(strokeColor);
+    }
+    if (strokeWidth)
+        pen.setWidth(strokeWidth);
+    painter.setPen(pen);
+    painter.drawRect(0, 0, width, height);
+
+    painter.end();
+
+    UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
+   
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+    svgItem->setUuid(QUuid(uuid));
+
+    QTransform transform;
+    QString textTransform = element.attribute(aTransform);
+
+    svgItem->resetTransform();
+    if (!textTransform.isNull()) {
+        transform = transformFromString(textTransform, svgItem);
+    }
+
+    repositionSvgItem(svgItem, width, height, x1, y1, transform);
+    hashSceneItem(element, svgItem);
+
+    if (mGSectionContainer)
+    {
+        addItemToGSection(svgItem);
+    }
+
+    delete generator;
+
+    return true;
+}
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgEllipse(const QDomElement &element)
+{
+    //ellipse horisontal and vertical radius
+    qreal rx = element.attribute(aRx).toDouble();
+    qreal ry = element.attribute(aRy).toDouble();
+    QSvgGenerator *generator = createSvgGenerator(rx * 2, ry * 2);
+
+    //fill and stroke color
+    QColor fillColor = colorFromString(element.attribute(aFill));
+    QColor strokeColor = colorFromString(element.attribute(aStroke));
+    int strokeWidth = element.attribute(aStrokewidth).toInt();
+
+    //ellipse center coordinates
+    qreal cx = element.attribute(aCx).toDouble();
+    qreal cy = element.attribute(aCy).toDouble();
+
+    //init painter to paint to svg
+    QPainter painter;
+    painter.begin(generator);
+
+    QPen pen(strokeColor);
+    pen.setWidth(strokeWidth);
+    painter.setPen(pen);
+    painter.setBrush(QBrush(fillColor));
+
+    painter.drawEllipse(0, 0, rx * 2, ry * 2);
+
+    painter.end();
+
+    UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
+
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+    svgItem->setUuid(QUuid(uuid));
+
+    QTransform transform;
+    QString textTransform = element.attribute(aTransform);
+
+    svgItem->resetTransform();
+    if (!textTransform.isNull()) {
+        transform = transformFromString(textTransform, svgItem);
+    }
+
+
+    repositionSvgItem(svgItem, rx * 2, ry * 2, cx - 2*rx, cy+ry, transform);
+    hashSceneItem(element, svgItem);
+
+    if (mGSectionContainer)
+    {
+        addItemToGSection(svgItem);
+    }
+
+    delete generator;
+
+    return true;
+}
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPolygon(const QDomElement &element)
+{
+    QString svgPoints = element.attribute(aPoints);
+    QPolygonF polygon;
+
+    if (!svgPoints.isNull()) {
+        QStringList ts = svgPoints.split(QLatin1Char(' '), QString::SkipEmptyParts);
+
+        foreach(const QString sPoint, ts) {
+            QStringList sCoord = sPoint.split(QLatin1Char(','), QString::SkipEmptyParts);
+            if (sCoord.size() == 2) {
+                QPointF point;
+                point.setX(sCoord.at(0).toFloat());
+                point.setY(sCoord.at(1).toFloat());
+                polygon << point;
+            }
+            else if (sCoord.size() == 4){
+                //This is the case on system were the "," is used to seperate decimal
+                QPointF point;
+                QString x = sCoord.at(0) + "." + sCoord.at(1);
+                QString y = sCoord.at(2) + "." + sCoord.at(3);
+                point.setX(x.toFloat());
+                point.setY(y.toFloat());
+                polygon << point;
+            }
+            else {
+                qWarning() << "cannot make sense of a 'point' value" << sCoord;
+            }
+        }
+    }
+
+    //bounding rect lef top corner coordinates
+    qreal x1 = polygon.boundingRect().topLeft().x();
+    qreal y1 = polygon.boundingRect().topLeft().y();
+    //bounding rect dimensions
+    qreal width = polygon.boundingRect().width();
+    qreal height = polygon.boundingRect().height();
+
+    QString strokeColorText = element.attribute(aStroke);
+    QString fillColorText = element.attribute(aFill);
+    QString strokeWidthText = element.attribute(aStrokewidth);
+
+    QColor strokeColor = !strokeColorText.isEmpty() ? colorFromString(strokeColorText) : QColor();
+    QColor fillColor = !fillColorText.isEmpty() ? colorFromString(fillColorText) : QColor();
+    int strokeWidth = strokeWidthText.toDouble();
+
+    QPen pen;
+    pen.setColor(strokeColor);
+    pen.setWidth(strokeWidth);
+
+    QBrush brush;
+    brush.setColor(fillColor);
+    brush.setStyle(Qt::SolidPattern);
+
+ 
+    QUuid itemUuid(element.attribute(aId).right(QUuid().toString().length()));
+    QUuid itemGroupUuid(element.attribute(aId).left(QUuid().toString().length()-1));
+    if (!itemUuid.isNull() && (itemGroupUuid!=itemUuid)) // reimported from UBZ
+    {
+        UBGraphicsPolygonItem *graphicsPolygon = mCurrentScene->polygonToPolygonItem(polygon);
+
+        graphicsPolygon->setBrush(brush);
+
+        QTransform transform;
+        QString textTransform = element.attribute(aTransform);
+
+        graphicsPolygon->resetTransform();
+        if (!textTransform.isNull()) {
+            transform = transformFromString(textTransform, graphicsPolygon);
+        }
+        mCurrentScene->addItem(graphicsPolygon);
+
+        graphicsPolygon->setUuid(itemUuid);
+        mRefToUuidMap.insert(element.attribute(aId), itemUuid);
+
+    }
+    else // single CFF
+    {
+        QSvgGenerator *generator = createSvgGenerator(width + pen.width(), height + pen.width());
+        QPainter painter;
+
+        painter.begin(generator); //drawing to svg tmp file
+
+        painter.translate(pen.widthF() / 2 - x1, pen.widthF() / 2 - y1);
+        painter.setBrush(brush);
+        painter.setPen(pen);
+        painter.drawPolygon(polygon);
+
+        painter.end();
+
+        //add resulting svg file to scene
+        UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
+        QTransform transform;
+        QString textTransform = element.attribute(aTransform);
+        
+        QUuid uuid = QUuid::createUuid().toString();
+        mRefToUuidMap.insert(element.attribute(aId), uuid);
+        svgItem->setUuid(uuid);
+
+        svgItem->resetTransform();
+        if (!textTransform.isNull()) {
+            transform = transformFromString(textTransform, svgItem);
+        }
+        repositionSvgItem(svgItem, width +strokeWidth, height + strokeWidth, x1 - strokeWidth/2 + transform.m31(), y1 + strokeWidth/2 + transform.m32(), transform);
+        hashSceneItem(element, svgItem);
+
+        if (mGSectionContainer)
+        {
+            addItemToGSection(svgItem);
+        }
+
+        delete generator;
+    }
+    return true;
+}
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPolyline(const QDomElement &element)
+{
+    QString svgPoints = element.attribute(aPoints);
+    QPolygonF polygon;
+
+    if (!svgPoints.isNull()) {
+        QStringList ts = svgPoints.split(QLatin1Char(' '),
+                                                    QString::SkipEmptyParts);
+
+        foreach(const QString sPoint, ts) {
+            QStringList sCoord = sPoint.split(QLatin1Char(','), QString::SkipEmptyParts);
+            if (sCoord.size() == 2) {
+                QPointF point;
+                point.setX(sCoord.at(0).toFloat());
+                point.setY(sCoord.at(1).toFloat());
+                polygon << point;
+            }
+            else if (sCoord.size() == 4){
+                //This is the case on system were the "," is used to seperate decimal
+                QPointF point;
+                QString x = sCoord.at(0) + "." + sCoord.at(1);
+                QString y = sCoord.at(2) + "." + sCoord.at(3);
+                point.setX(x.toFloat());
+                point.setY(y.toFloat());
+                polygon << point;
+            }
+            else {
+                qWarning() << "cannot make sense of a 'point' value" << sCoord;
+            }
+        }
+    }
+
+    //bounding rect lef top corner coordinates
+    qreal x1 = polygon.boundingRect().topLeft().x();
+    qreal y1 = polygon.boundingRect().topLeft().y();
+
+    //bounding rect dimensions
+    qreal width = polygon.boundingRect().width();
+    qreal height = polygon.boundingRect().height();
+
+    QString strokeColorText = element.attribute(aStroke);
+    QString strokeWidthText = element.attribute(aStrokewidth);
+
+    QColor strokeColor = !strokeColorText.isEmpty() ? colorFromString(strokeColorText) : QColor();
+    int strokeWidth = strokeWidthText.toDouble();
+
+    width += strokeWidth;
+    height += strokeWidth;
+
+    QPen pen;
+    pen.setColor(strokeColor);
+    pen.setWidth(strokeWidth);
+
+    QBrush brush;
+    brush.setColor(strokeColor);
+    brush.setStyle(Qt::SolidPattern);
+
+    QUuid itemUuid(element.attribute(aId).right(QUuid().toString().length()));
+    QUuid itemGroupUuid(element.attribute(aId).left(QUuid().toString().length()-1));
+    if (!itemUuid.isNull() && (itemGroupUuid!=itemUuid)) // reimported from UBZ
+    {
+        UBGraphicsPolygonItem *graphicsPolygon = new UBGraphicsPolygonItem(polygon);
+
+        UBGraphicsStroke *stroke = new UBGraphicsStroke();
+        graphicsPolygon->setStroke(stroke);
+
+        graphicsPolygon->setBrush(brush);
+        QTransform transform;
+        QString textTransform = element.attribute(aTransform);
+
+        graphicsPolygon->resetTransform();
+        if (!textTransform.isNull()) {
+            transform = transformFromString(textTransform, graphicsPolygon);
+        }
+        mCurrentScene->addItem(graphicsPolygon);
+
+        graphicsPolygon->setUuid(itemUuid);
+        mRefToUuidMap.insert(element.attribute(aId), itemUuid);
+
+    }
+    else // simple CFF
+    {
+        QSvgGenerator *generator = createSvgGenerator(width + pen.width(), height + pen.width());
+        QPainter painter;
+
+        painter.begin(generator); //drawing to svg tmp file
+
+        painter.translate(pen.widthF() / 2 - x1, pen.widthF() / 2 - y1);
+        painter.setBrush(brush);
+        painter.setPen(pen);
+        painter.drawPolygon(polygon);
+
+        painter.end();
+
+        //add resulting svg file to scene
+        UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
+        
+        QString uuid = QUuid::createUuid().toString();
+        mRefToUuidMap.insert(element.attribute(aId), uuid);
+        svgItem->setUuid(QUuid(uuid));
+
+        QTransform transform;
+        QString textTransform = element.attribute(aTransform);
+
+        svgItem->resetTransform();
+        if (!textTransform.isNull()) {
+            transform = transformFromString(textTransform, svgItem);
+        }
+        repositionSvgItem(svgItem, width +strokeWidth, height + strokeWidth, x1 - strokeWidth/2 + transform.m31(), y1 + strokeWidth/2 + transform.m32(), transform);
+        hashSceneItem(element, svgItem);
+
+        if (mGSectionContainer)
+        {
+            addItemToGSection(svgItem);
+        }
+
+        delete generator;
+    }
+
+
+    return true;
+}
+void UBCFFSubsetAdaptor::UBCFFSubsetReader::parseTextAttributes(const QDomElement &element,
+                                                                qreal &fontSize, QColor &fontColor, QString &fontFamily,
+                                                                QString &fontStretch, bool &italic, int &fontWeight,
+                                                                int &textAlign, QTransform &fontTransform)
+{
+    //consider inch has 72 liens
+    //since svg font size is given in pixels, divide it by pixels per line
+    QString fontSz = element.attribute(aFontSize);
+    if (!fontSz.isNull()) fontSize = fontSz.toDouble() * 72 / QApplication::desktop()->physicalDpiY();
+
+    QString fontColorText = element.attribute(aFill);
+    if (!fontColorText.isNull()) fontColor = colorFromString(fontColorText);
+
+    QString fontFamilyText = element.attribute(aFontfamily);
+    if (!fontFamilyText.isNull()) fontFamily = fontFamilyText;
+
+    QString fontStretchText = element.attribute(aFontstretch);
+    if (!fontStretchText.isNull()) fontStretch = fontStretchText;
+
+    if (!element.attribute(aFontstyle).isNull())
+        italic = (element.attribute(aFontstyle) == "italic");
+
+    QString weight = element.attribute(aFontweight);
+    if (!weight.isNull()) {
+        if      (weight == "normal")   fontWeight = QFont::Normal;
+        else if (weight == "light")    fontWeight = QFont::Light;
+        else if (weight == "demibold") fontWeight = QFont::DemiBold;
+        else if (weight == "bold")     fontWeight = QFont::Bold;
+        else if (weight == "black")    fontWeight = QFont::Black;
+    }
+    QString align = element.attribute(aTextalign);
+    if (!align.isNull()) {
+        if      (align == "middle" || align == "center") textAlign = Qt::AlignHCenter;
+        else if (align == "start")                       textAlign = Qt::AlignLeft;
+        else if (align == "end")                         textAlign = Qt::AlignRight;
+    }
+
+    if (!element.attribute(aTransform).isNull())
+        fontTransform = transformFromString(element.attribute(aTransform));
+}
+void UBCFFSubsetAdaptor::UBCFFSubsetReader::readTextBlockAttr(const QDomElement &element, QTextBlockFormat &format)
+{
+    QString fontStretchText = element.attribute(aFontstretch);
+    if (!fontStretchText.isNull()) format.setAlignment(Qt::AlignJustify);
+
+    QString align = element.attribute(aTextalign);
+    if (!align.isNull()) {
+        if      (align == "middle" || align == "center") format.setAlignment(Qt::AlignHCenter);
+        else if (align == "start")                       format.setAlignment(Qt::AlignLeft);
+        else if (align == "end")                         format.setAlignment(Qt::AlignRight);
+        else if (align == "justify")                     format.setAlignment(Qt::AlignJustify);
+    }
+}
+void UBCFFSubsetAdaptor::UBCFFSubsetReader::readTextCharAttr(const QDomElement &element, QTextCharFormat &format)
+{
+    QString fontSz = element.attribute(aFontSize);
+    if (!fontSz.isNull()) {
+        qreal fontSize = fontSz.remove("pt").toDouble();
+        format.setFontPointSize(fontSize);
+    }
+    QString fontColorText = element.attribute(aFill);
+    if (!fontColorText.isNull()) {
+        QColor fontColor = colorFromString(fontColorText);
+        if (fontColor.isValid()) format.setForeground(fontColor);
+    }
+    QString fontFamilyText = element.attribute(aFontfamily);
+    if (!fontFamilyText.isNull()) {
+        format.setFontFamily(fontFamilyText);
+    }
+    if (!element.attribute(aFontstyle).isNull()) {
+        bool italic = (element.attribute(aFontstyle) == "italic");
+        format.setFontItalic(italic);
+    }
+    QString weight = element.attribute(aFontweight);
+    if (!weight.isNull())  {
+        if      (weight == "normal")   format.setFontWeight(QFont::Normal);
+        else if (weight == "light")    format.setFontWeight(QFont::Light);
+        else if (weight == "demibold") format.setFontWeight(QFont::DemiBold);
+        else if (weight == "bold")     format.setFontWeight(QFont::Bold);
+        else if (weight == "black")    format.setFontWeight(QFont::Black);
+    }
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgText(const QDomElement &element)
+{
+    qreal x = element.attribute(aX).toDouble();
+    qreal y = element.attribute(aY).toDouble();
+    qreal width = element.attribute(aWidth).toDouble();
+    qreal height = element.attribute(aHeight).toDouble();
+
+
+    qreal fontSize = 12;
+    QColor fontColor(qApp->palette().foreground().color());
+    QString fontFamily = "Arial";
+    QString fontStretch = "normal";
+    bool italic = false;
+    int fontWeight = QFont::Normal;
+    int textAlign = Qt::AlignLeft;
+    QTransform fontTransform;
+    parseTextAttributes(element, fontSize, fontColor, fontFamily, fontStretch, italic, fontWeight, textAlign, fontTransform);
+
+    QFont startFont(fontFamily, fontSize, fontWeight, italic);
+    height = QFontMetrics(startFont).height();
+    width = QFontMetrics(startFont).width(element.text()) + 5;
+
+    QSvgGenerator *generator = createSvgGenerator(width, height);
+    QPainter painter;
+    painter.begin(generator);
+    painter.setFont(startFont);
+
+    qreal curY = 0.0;
+    qreal curX = 0.0;
+    qreal linespacing = QFontMetricsF(painter.font()).leading();
+
+//    remember if text area has transform
+//    QString transformString;
+    QTransform transform = fontTransform;
+
+    QRectF lastDrawnTextBoundingRect;
+    //parse text area tags
+
+    //recursive call any tspan in text svg element
+    parseTSpan(element, painter
+               , curX, curY, width, height, linespacing, lastDrawnTextBoundingRect
+               , fontSize, fontColor, fontFamily, fontStretch, italic, fontWeight, textAlign, fontTransform);
+
+    painter.end();
+
+    //add resulting svg file to scene
+    UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
+
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+    svgItem->setUuid(QUuid(uuid));
+
+    svgItem->resetTransform();
+    repositionSvgItem(svgItem, width, height, x + transform.m31(), y + transform.m32(), transform);
+    hashSceneItem(element, svgItem);
+
+    if (mGSectionContainer)
+    {
+        addItemToGSection(svgItem);
+    }
+
+    delete generator;
+    return true;
+}
+
+void UBCFFSubsetAdaptor::UBCFFSubsetReader::parseTSpan(const QDomElement &parent, QPainter &painter
+                , qreal &curX, qreal &curY, qreal &width, qreal &height, qreal &linespacing, QRectF &lastDrawnTextBoundingRect
+                , qreal &fontSize, QColor &fontColor, QString &fontFamily, QString &fontStretch, bool &italic
+                , int &fontWeight, int &textAlign, QTransform &fontTransform)
+{
+    QDomNode curNode = parent.firstChild();
+    while (!curNode.isNull()) {
+        if (curNode.toElement().tagName() == tTspan) {
+            QDomElement curTSpan = curNode.toElement();
+            parseTextAttributes(curTSpan, fontSize, fontColor, fontFamily, fontStretch, italic
+                                , fontWeight, textAlign, fontTransform);
+            painter.setFont(QFont(fontFamily, fontSize, fontWeight, italic));
+            painter.setPen(fontColor);
+            linespacing = QFontMetricsF(painter.font()).leading();
+            parseTSpan(curTSpan, painter
+                       , curX, curY, width, height, linespacing, lastDrawnTextBoundingRect
+                       , fontSize, fontColor, fontFamily, fontStretch, italic, fontWeight, textAlign, fontTransform);
+        } else if (curNode.nodeType() == QDomNode::CharacterDataNode
+                   || curNode.nodeType() == QDomNode::CDATASectionNode
+                   || curNode.nodeType() == QDomNode::TextNode) {
+
+            QDomCharacterData textData = curNode.toCharacterData();
+            QString text = textData.data().trimmed();
+//            width = painter.fontMetrics().width(text);
+            //get bounding rect to obtain desired text height
+            lastDrawnTextBoundingRect = painter.boundingRect(QRectF(curX, curY, width, height - curY), textAlign|Qt::TextWordWrap, text);
+            painter.drawText(curX, curY, width, lastDrawnTextBoundingRect.height(), textAlign|Qt::TextWordWrap, text);
+            curX += lastDrawnTextBoundingRect.x() + lastDrawnTextBoundingRect.width();
+        } else if (curNode.nodeType() == QDomNode::ElementNode
+                   && curNode.toElement().tagName() == tBreak) {
+
+            curY += lastDrawnTextBoundingRect.height() + linespacing;
+            curX = 0.0;
+            lastDrawnTextBoundingRect = QRectF(0,0,0,0);
+        }
+        curNode = curNode.nextSibling();
+    }
+}
+void UBCFFSubsetAdaptor::UBCFFSubsetReader::parseTSpan(const QDomElement &element, QTextCursor &cursor
+                                                       , QTextBlockFormat &blockFormat, QTextCharFormat &charFormat)
+{
+    QDomNode curNode = element.firstChild();
+    while (!curNode.isNull()) {
+        if (curNode.toElement().tagName() == tTspan) {
+            QDomElement curTspan = curNode.toElement();
+            readTextBlockAttr(curTspan, blockFormat);
+            readTextCharAttr(curTspan, charFormat);
+            cursor.setBlockFormat(blockFormat);
+            cursor.setCharFormat(charFormat);
+            parseTSpan(curTspan, cursor, blockFormat, charFormat);
+
+        } else if (curNode.nodeType() == QDomNode::CharacterDataNode
+                   || curNode.nodeType() == QDomNode::CDATASectionNode
+                   || curNode.nodeType() == QDomNode::TextNode) {
+
+            QDomCharacterData textData = curNode.toCharacterData();
+            QString text = textData.data().trimmed();
+            cursor.insertText(text, charFormat);
+
+        } else if (curNode.nodeType() == QDomNode::ElementNode
+                   && curNode.toElement().tagName() == tBreak) {
+            cursor.insertBlock();
+        }
+        curNode = curNode.nextSibling();
+    }
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgTextarea(const QDomElement &element)
+{
+    qreal x = element.attribute(aX).toDouble();
+    qreal y = element.attribute(aY).toDouble();
+    qreal width = element.attribute(aWidth).toDouble();
+    qreal height = element.attribute(aHeight).toDouble();
+
+    QTextBlockFormat blockFormat;
+    blockFormat.setAlignment(Qt::AlignLeft);
+
+    QTextCharFormat textFormat;
+     // default values
+    textFormat.setFontPointSize(12);
+    textFormat.setForeground(qApp->palette().foreground().color());
+    textFormat.setFontFamily("Arial");
+    textFormat.setFontItalic(false);
+    textFormat.setFontWeight(QFont::Normal);
+
+    // readed values
+    readTextBlockAttr(element, blockFormat);
+    readTextCharAttr(element, textFormat);
+
+    QTextDocument doc;
+    doc.setPlainText("");
+    QTextCursor tCursor(&doc);
+    tCursor.setBlockFormat(blockFormat);
+    tCursor.setCharFormat(textFormat);
+
+    parseTSpan(element, tCursor, blockFormat, textFormat);
+
+    UBGraphicsTextItem *svgItem = mCurrentScene->addTextHtml(doc.toHtml());
+    svgItem->resize(width, height);
+
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+    svgItem->setUuid(QUuid(uuid));
+
+    QTransform transform;
+    QString textTransform = element.attribute(aTransform);
+
+    svgItem->resetTransform();
+    if (!textTransform.isNull()) {
+        transform = transformFromString(textTransform, svgItem);
+    }
+
+    //by default all the textAreas are not editable
+    UBGraphicsTextItemDelegate *curDelegate = dynamic_cast<UBGraphicsTextItemDelegate*>(svgItem->Delegate());
+    if (curDelegate) {
+        curDelegate->setEditable(false);
+    }
+
+    repositionSvgItem(svgItem, width, height, x + transform.m31(), y + transform.m32(), transform);
+    hashSceneItem(element, svgItem);
+
+    if (mGSectionContainer)
+    {
+        addItemToGSection(svgItem);
+    }
+
+    return true;
+}
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgImage(const QDomElement &element)
+{
+    qreal x = element.attribute(aX).toDouble();
+    qreal y = element.attribute(aY).toDouble();
+    qreal width = element.attribute(aWidth).toDouble();
+    qreal height = element.attribute(aHeight).toDouble();
+
+    QString itemRefPath = element.attribute(aHref);
+
+    QPixmap pix;
+    if (!itemRefPath.isNull()) {
+        QString imagePath = pwdContent + "/" + itemRefPath;
+        if (!QFile::exists(imagePath)) {
+            qDebug() << "can't load file" << pwdContent + "/" + itemRefPath << "maybe file corrupted";
+            return false;
+        } else {
+//            qDebug() << "size of file" << itemRefPath << QFileInfo(itemRefPath).size();
+        }
+        pix.load(imagePath);
+        if (pix.isNull()) {
+            qDebug() << "can't create pixmap for file" << pwdContent + "/" + itemRefPath << "maybe format does not supported";
+        }
+    }
+
+   UBGraphicsPixmapItem *pixItem = mCurrentScene->addPixmap(pix, NULL);
+
+   QString uuid = QUuid::createUuid().toString();
+   mRefToUuidMap.insert(element.attribute(aId), uuid);
+   pixItem->setUuid(QUuid(uuid));
+
+   QTransform transform;
+   QString textTransform = element.attribute(aTransform);
+
+   pixItem->resetTransform();
+   if (!textTransform.isNull()) {
+       transform = transformFromString(textTransform, pixItem);
+   }
+   repositionSvgItem(pixItem, width, height, x + transform.m31(), y + transform.m32(), transform);
+   hashSceneItem(element, pixItem);
+
+   if (mGSectionContainer)
+   {
+       addItemToGSection(pixItem);
+   }
+
+   return true;
+}
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgFlash(const QDomElement &element)
+{
+    QString itemRefPath = element.attribute(aHref);
+
+    qreal x = element.attribute(aX).toDouble();
+    qreal y = element.attribute(aY).toDouble();
+    qreal width = element.attribute(aWidth).toDouble();
+    qreal height = element.attribute(aHeight).toDouble();
+
+    QUrl urlPath;
+    QString flashPath;
+    if (!itemRefPath.isNull()) {
+        flashPath = pwdContent + "/" + itemRefPath;
+        if (!QFile::exists(flashPath)) {
+            qDebug() << "can't load file" << pwdContent + "/" + itemRefPath << "maybe file corrupted";
+            return false;
+        }
+        urlPath = QUrl::fromLocalFile(flashPath);
+    }
+    QDir tmpFlashDir(mTmpFlashDir);
+    if (!tmpFlashDir.exists()) {
+        qDebug() << "Can't create temporary directory to put flash";
+        return false;
+    }
+
+    QString flashUrl = UBGraphicsW3CWidgetItem::createNPAPIWrapperInDir(flashPath, tmpFlashDir, "application/x-shockwave-flash"
+                                                            ,QSize(mCurrentSceneRect.width(), mCurrentSceneRect.height()));
+    UBGraphicsWidgetItem *flashItem = mCurrentScene->addW3CWidget(QUrl::fromLocalFile(flashUrl));
+    flashItem->setSourceUrl(urlPath);
+
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+    flashItem->setUuid(QUuid(uuid));
+
+    QTransform transform;
+    QString textTransform = element.attribute(aTransform);
+
+    flashItem->resetTransform();
+    if (!textTransform.isNull()) {
+        transform = transformFromString(textTransform, flashItem);
+    }
+    repositionSvgItem(flashItem, width, height, x + transform.m31(), y + transform.m32(), transform);
+    hashSceneItem(element, flashItem);
+
+    if (mGSectionContainer)
+    {
+        addItemToGSection(flashItem);
+    }
+
+    return true;
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgAudio(const QDomElement &element)
+{
+    QDomElement parentOfAudio = element.firstChild().toElement();
+    
+    qreal x = parentOfAudio.attribute(aX).toDouble();
+    qreal y = parentOfAudio.attribute(aY).toDouble();
+
+    QString itemRefPath = element.attribute(aHref);
+
+    QUrl concreteUrl;
+    if (!itemRefPath.isNull()) {
+        QString audioPath = pwdContent + "/" + itemRefPath;
+        if (!QFile::exists(audioPath)) {
+            qDebug() << "can't load file" << pwdContent + "/" + itemRefPath << "maybe file corrupted";
+            return false;
+        }
+        concreteUrl = QUrl::fromLocalFile(audioPath);
+    }
+
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+
+    QString destFile;
+    bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(
+            mCurrentScene->document(), 
+            concreteUrl.toLocalFile(), 
+            UBPersistenceManager::audioDirectory,
+            QUuid(uuid),
+            destFile);
+    if (!b)
+    {
+        return false;
+    }
+    concreteUrl = QUrl::fromLocalFile(destFile);
+    
+    UBGraphicsMediaItem *audioItem = mCurrentScene->addAudio(concreteUrl, false);
+
+    QTransform transform;
+    QString textTransform = parentOfAudio.attribute(aTransform);
+
+    audioItem->resetTransform();
+    if (!textTransform.isNull()) {
+        transform = transformFromString(textTransform, audioItem);
+    }
+    repositionSvgItem(audioItem, audioItem->boundingRect().width(), audioItem->boundingRect().height(), x + transform.m31(), y + transform.m32(), transform);
+    hashSceneItem(element, audioItem);
+
+    if (mGSectionContainer)
+    {
+        addItemToGSection(audioItem);
+    }
+
+    return true;
+}
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgVideo(const QDomElement &element)
+{
+    QString itemRefPath = element.attribute(aHref);
+    if (itemRefPath.startsWith(tFlash + "/") && itemRefPath.endsWith(".swf")) {
+        if (parseSvgFlash(element)) return true;
+        else return false;
+    }
+    qreal x = element.attribute(aX).toDouble();
+    qreal y = element.attribute(aY).toDouble();
+
+    QUrl concreteUrl;
+    if (!itemRefPath.isNull()) {
+        QString videoPath = pwdContent + "/" + itemRefPath;
+        if (!QFile::exists(videoPath)) {
+            qDebug() << "can't load file" << pwdContent + "/" + itemRefPath << "maybe file corrupted";
+            return false;
+        }
+        concreteUrl = QUrl::fromLocalFile(videoPath);
+    }
+
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+
+    QString destFile;
+    bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(
+            mCurrentScene->document(), 
+            concreteUrl.toLocalFile(), 
+            UBPersistenceManager::videoDirectory,
+            QUuid(uuid),
+            destFile);
+    if (!b)
+    {
+        return false;
+    }
+    concreteUrl = QUrl::fromLocalFile(destFile);
+
+    UBGraphicsMediaItem *videoItem = mCurrentScene->addVideo(concreteUrl, false);
+
+    QTransform transform;
+    QString textTransform = element.attribute(aTransform);
+
+    videoItem->resetTransform();
+    if (!textTransform.isNull()) {
+        transform = transformFromString(textTransform, videoItem);
+    }
+    repositionSvgItem(videoItem, videoItem->boundingRect().width(), videoItem->boundingRect().height(), x + transform.m31(), y + transform.m32(), transform);
+    hashSceneItem(element, videoItem);
+
+    if (mGSectionContainer)
+    {
+        addItemToGSection(videoItem);
+    }
+
+    return true;
+}
+
+void UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgSectionAttr(const QDomElement &svgSection)
+{
+    getViewBoxDimenstions(svgSection.attribute(aViewbox));
+    mSize = QSize(svgSection.attribute(aWidth).toInt(),
+                  svgSection.attribute(aHeight).toInt());
+}
+
+void UBCFFSubsetAdaptor::UBCFFSubsetReader::addItemToGSection(QGraphicsItem *item)
+{
+    mGSectionContainer->addToGroup(item);
+}
+
+void UBCFFSubsetAdaptor::UBCFFSubsetReader::hashSceneItem(const QDomElement &element, UBGraphicsItem *item)
+{
+//    adding element pointer to hash to refer if needed
+    QString key = element.attribute(aId);
+    if (!key.isNull()) {
+        persistedItems.insert(key, item);
+    }
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgElement(const QDomElement &parent)
+{
+    QString tagName = parent.tagName();
+    if (parent.namespaceURI() != svgNS) {
+        qWarning() << "Incorrect namespace, error at content file, line number" << parent.lineNumber();
+        //return false;
+    }
+
+    if      (tagName == tG          &&  !parseGSection(parent))             return false;
+    else if (tagName == tSwitch     &&  !parseSvgSwitchSection(parent))     return false;
+    else if (tagName == tRect       &&  !parseSvgRect(parent))              return false;    
+    else if (tagName == tEllipse    &&  !parseSvgEllipse(parent))           return false;
+    else if (tagName == tPolygon    &&  !parseSvgPolygon(parent))           return false;
+    else if (tagName == tPolyline   &&  !parseSvgPolyline(parent))          return false;
+    else if (tagName == tText       &&  !parseSvgText(parent))              return false;
+    else if (tagName == tTextarea   &&  !parseSvgTextarea(parent))          return false;
+    else if (tagName == tImage      &&  !parseSvgImage(parent))             return false;
+    else if (tagName == tFlash      &&  !parseSvgFlash(parent))             return false;
+    else if (tagName == tAudio      &&  !parseSvgAudio(parent))             return false;
+    else if (tagName == tVideo      &&  !parseSvgVideo(parent))             return false;
+
+    return true;
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPage(const QDomElement &parent)
+{
+    createNewScene();
+    QDomElement currentSvgElement = parent.firstChildElement();
+    while (!currentSvgElement.isNull()) {
+        if (!parseSvgElement(currentSvgElement))
+            return false;
+
+        currentSvgElement = currentSvgElement.nextSiblingElement();
+    }
+
+    return true;
+}
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPageset(const QDomElement &parent)
+{
+    QDomElement currentPage = parent.firstChildElement(tPage);
+    while (!currentPage.isNull()) {
+        if (!parseSvgPage(currentPage))
+            return false;
+        currentPage = currentPage.nextSiblingElement(tPage);
+    }
+    return true;
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbMeta(const QDomElement &element)
+{
+    if (element.namespaceURI() != iwbNS) {
+        qWarning() << "incorrect meta namespace, incorrect document";
+        //return false;
+    }
+
+    return true;
+}
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvg(const QDomElement &svgSection)
+{
+    if (svgSection.namespaceURI() != svgNS) {
+        qWarning() << "incorrect svg namespace, incorrect document";
+       // return false;
+    }
+
+    parseSvgSectionAttr(svgSection);
+    QDomElement currentSvg = svgSection.firstChildElement();
+
+    if (currentSvg.tagName() != tPageset) {
+        parseSvgPage(svgSection);
+    } else if (currentSvg.tagName() == tPageset){
+        parseSvgPageset(currentSvg);
+    }
+
+    return true;
+}
+
+UBGraphicsGroupContainerItem *UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbGroup(QDomElement &parent)
+{
+    //TODO. Create groups from elements parsed by parseIwbElement() function
+    if (parent.namespaceURI() != iwbNS) {
+        qWarning() << "incorrect iwb group namespace, incorrect document";
+      //  return false;
+    }
+
+    UBGraphicsGroupContainerItem *group = new UBGraphicsGroupContainerItem();
+    QMultiMap<QString, UBGraphicsPolygonItem *> strokesGroupsContainer;    
+    QList<QGraphicsItem *> groupContainer;    
+    QString currentStrokeIdentifier;
+
+    QDomElement currentStrokeElement = parent.firstChildElement();    
+    while (!currentStrokeElement.isNull())
+    {
+        if (tGroup == currentStrokeElement.tagName())
+            group->addToGroup(parseIwbGroup(currentStrokeElement));
+        else
+        {
+            
+            QString ref = currentStrokeElement.attribute(aRef);
+            QString uuid = mRefToUuidMap[ref];
+            if (!uuid.isEmpty())
+            {
+                if (ref.size() > QUuid().toString().length()) // create stroke group
+                {              
+                    currentStrokeIdentifier = ref.left(QUuid().toString().length()-1);
+                    UBGraphicsPolygonItem *strokeByUuid = qgraphicsitem_cast<UBGraphicsPolygonItem *>(mCurrentScene->itemForUuid(QUuid(ref.right(QUuid().toString().length()))));
+
+                    if (strokeByUuid)
+                        strokesGroupsContainer.insert(currentStrokeIdentifier, strokeByUuid);
+                }
+                else // single elements in group
+                    groupContainer.append(mCurrentScene->itemForUuid(QUuid(uuid)));
+            }
+        }
+        currentStrokeElement = currentStrokeElement.nextSiblingElement();
+    }
+
+
+
+    foreach (QString key, strokesGroupsContainer.keys().toSet())
+    {
+        UBGraphicsStrokesGroup* pStrokesGroup = new UBGraphicsStrokesGroup();
+        UBGraphicsStroke *currentStroke = new UBGraphicsStroke();
+        foreach(UBGraphicsPolygonItem* poly, strokesGroupsContainer.values(key))
+        {
+            if (poly)
+            {
+                mCurrentScene->removeItem(poly);
+                mCurrentScene->removeItemFromDeletion(poly);
+                poly->setStrokesGroup(pStrokesGroup);
+                poly->setStroke(currentStroke);
+                pStrokesGroup->addToGroup(poly);
+            }
+        }
+        if (currentStroke->polygons().empty())
+            delete currentStroke;
+
+        if (pStrokesGroup->childItems().count())
+            mCurrentScene->addItem(pStrokesGroup);
+        else
+            delete pStrokesGroup;
+
+        if (pStrokesGroup)
+        {
+            QGraphicsItem *strokeGroup = qgraphicsitem_cast<QGraphicsItem *>(pStrokesGroup);
+            groupContainer.append(strokeGroup);
+        }
+    }
+
+    foreach(QGraphicsItem* item, groupContainer)
+        group->addToGroup(item);
+
+    if (group->childItems().count())
+    {
+        mCurrentScene->addItem(group);
+
+        if (1 == group->childItems().count())
+        {
+            group->destroy(false);
+        }
+    }
+
+    return group;
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::strToBool(QString str)
+{
+    return str == "true";
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbElement(QDomElement &element)
+{
+    if (element.namespaceURI() != iwbNS) {
+        qWarning() << "incorrect iwb element namespace, incorrect document";
+      //  return false;
+    }
+
+    bool locked = false;
+    bool isEditableItem = false;
+    bool isEditable = false; //Text items to convert to UBGraphicsTextItem only
+
+    QString IDRef = element.attribute(aRef);
+    if (!IDRef.isNull()) {
+        element.hasAttribute(aBackground) ? strToBool(element.attribute(aBackground)) : false;
+        locked = element.hasAttribute(aBackground) ? strToBool(element.attribute(aBackground)) : false;
+        isEditableItem = element.hasAttribute(aEditable);
+        if (isEditableItem)
+            isEditable = strToBool(element.attribute(aEditable));
+
+        UBGraphicsItem *referedItem(0);
+        QHash<QString, UBGraphicsItem*>::iterator iReferedItem;
+        iReferedItem = persistedItems.find(IDRef);
+        if (iReferedItem != persistedItems.end()) {
+            referedItem = *iReferedItem;
+            referedItem->Delegate()->lock(locked);
+        }
+        if (isEditableItem) {
+            UBGraphicsTextItemDelegate *textDelegate = dynamic_cast<UBGraphicsTextItemDelegate*>(referedItem->Delegate());
+            if (textDelegate) {
+                textDelegate->setEditable(isEditable);
+            }
+        }
+    }
+
+    return true;
+}
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseDoc()
+{
+    QDomElement currentTopElement = mDOMdoc.documentElement().firstChildElement();
+    while (!currentTopElement.isNull()) {
+        QString tagName = currentTopElement.tagName();
+        if      (tagName == tMeta       && !parseIwbMeta(currentTopElement))    return false;
+        else if (tagName == tSvg        && !parseSvg(currentTopElement))        return false;
+        else if (tagName == tGroup      && !parseIwbGroup(currentTopElement))   return false;
+        else if (tagName == tElement    && !parseIwbElement(currentTopElement)) return false;
+
+        currentTopElement = currentTopElement.nextSiblingElement();
+    }
+    if (!persistScenes()) return false;
+
+    return true;
+}
+
+void UBCFFSubsetAdaptor::UBCFFSubsetReader::repositionSvgItem(QGraphicsItem *item, qreal width, qreal height,
+                                                              qreal x, qreal y,
+                                                              QTransform &transform)
+{
+    //First using viebox coordinates, then translate them to scene coordinates
+
+    QRectF itemBounds = item->boundingRect();
+
+    qreal xScale = width  / itemBounds.width();
+    qreal yScale = height / itemBounds.height();
+
+    qreal fullScaleX = mVBTransFactor * xScale;
+    qreal fullScaleY = mVBTransFactor * yScale;
+
+    QPointF oldVector((x - transform.dx()), (y - transform.dy()));
+    QTransform rTransform;
+    QPointF newVector = rTransform.map(oldVector);
+
+    QTransform tr = item->sceneTransform();
+    item->setTransform(rTransform.scale(fullScaleX, fullScaleY), true);
+    tr = item->sceneTransform();
+    QPoint pos;
+    if (UBGraphicsTextItem::Type == item->type())
+        pos = QPoint((int)((x + mShiftVector.x() + (newVector - oldVector).x())), (int)((y +mShiftVector.y() + (newVector - oldVector).y()) * mVBTransFactor));
+    else
+        pos = QPoint((int)((x + mShiftVector.x() + (newVector - oldVector).x()) * mVBTransFactor), (int)((y +mShiftVector.y() + (newVector - oldVector).y()) * mVBTransFactor));
+        
+
+    item->setPos(pos);
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::createNewScene()
+{
+    mCurrentScene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(mProxy, mProxy->pageCount(), false);
+    mCurrentScene->setSceneRect(mViewBox);
+    if ((mCurrentScene->sceneRect().topLeft().x() >= 0) || (mCurrentScene->sceneRect().topLeft().y() >= 0)) {
+        mShiftVector = -mViewBox.center();
+    }
+    mCurrentSceneRect = mViewBox;
+    mVBTransFactor = qMin(mCurrentScene->normalizedSceneRect().width()  / mViewPort.width(),
+                          mCurrentScene->normalizedSceneRect().height() / mViewPort.height());
+    return true;
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::persistCurrentScene()
+{
+    if (mCurrentScene != 0 && mCurrentScene->isModified())
+    {
+        UBThumbnailAdaptor::persistScene(mProxy, mCurrentScene, mProxy->pageCount() - 1);
+        UBSvgSubsetAdaptor::persistScene(mProxy, mCurrentScene, mProxy->pageCount() - 1);
+
+        mCurrentScene->setModified(false);
+        mCurrentScene = 0;
+    }
+    return true;
+}
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::persistScenes()
+{
+    if (!mProxy->pageCount()) {
+        qDebug() << "No pages created";
+        return false;
+    }
+    for (int i = 0; i < mProxy->pageCount(); i++) {
+        mCurrentScene = UBPersistenceManager::persistenceManager()->getDocumentScene(mProxy, i);
+        if (!mCurrentScene) {
+            qDebug() << "can't allocate scene, loading failed";
+            return false;
+        }
+
+        UBSvgSubsetAdaptor::persistScene(mProxy, mCurrentScene, i);
+        UBGraphicsScene *tmpScene = UBSvgSubsetAdaptor::loadScene(mProxy, i);
+        tmpScene->setModified(true);
+        UBThumbnailAdaptor::persistScene(mProxy, tmpScene, i);
+        mCurrentScene->setModified(false);
+    }
+
+    return true;
+}
+
+QColor UBCFFSubsetAdaptor::UBCFFSubsetReader::colorFromString(const QString& clrString)
+{
+    //init regexp with pattern
+    //pattern corresponds to strings like 'rgb(1,2,3) or rgb(10%,20%,30%)'
+    QRegExp regexp("rgb\\(([0-9]+%{0,1}),([0-9]+%{0,1}),([0-9]+%{0,1})\\)");
+    if (regexp.exactMatch(clrString))
+    {
+        if (regexp.capturedTexts().count() == 4 && regexp.capturedTexts().at(0).length() == clrString.length())
+        {
+            int r = regexp.capturedTexts().at(1).toInt();
+            if (regexp.capturedTexts().at(1).indexOf("%") != -1)
+                r = r * 255 / 100;
+            int g = regexp.capturedTexts().at(2).toInt();
+            if (regexp.capturedTexts().at(2).indexOf("%") != -1)
+                g = g * 255 / 100;
+            int b = regexp.capturedTexts().at(3).toInt();
+            if (regexp.capturedTexts().at(3).indexOf("%") != -1)
+                b = b * 255 / 100;
+            return QColor(r, g, b);
+        }
+        else
+            return QColor();
+    }
+    else
+        return QColor(clrString);
+}
+
+QTransform UBCFFSubsetAdaptor::UBCFFSubsetReader::transformFromString(const QString trString, QGraphicsItem *item)
+{
+    qreal dxr = 0.0;
+    qreal dyr = 0.0;
+    qreal dx = 0.0;
+    qreal dy = 0.0;
+    qreal angle = 0.0;
+    QTransform tr;
+
+    foreach(QString trStr, trString.split(" ", QString::SkipEmptyParts))
+    {
+        //check pattern for strings like 'rotate(10)'
+        QRegExp regexp("rotate\\( *([-+]{0,1}[0-9]*\\.{0,1}[0-9]*) *\\)");
+        if (regexp.exactMatch(trStr)) {
+            angle = regexp.capturedTexts().at(1).toDouble();
+            if (item)
+            {    
+                item->setTransformOriginPoint(QPointF(0, 0));
+                item->rotate(angle);
+            }
+            continue;
+        };
+        
+        //check pattern for strings like 'rotate(10,20,20)' or 'rotate(10.1,10.2,34.2)'
+        regexp.setPattern("rotate\\( *([-+]{0,1}[0-9]*\\.{0,1}[0-9]*) *, *([-+]{0,1}[0-9]*\\.{0,1}[0-9]*) *, *([-+]{0,1}[0-9]*\\.{0,1}[0-9]*) *\\)");
+        if (regexp.exactMatch(trStr)) {
+            angle = regexp.capturedTexts().at(1).toDouble();
+            dxr = regexp.capturedTexts().at(2).toDouble();
+            dyr = regexp.capturedTexts().at(3).toDouble();
+            if (item)
+            {                
+                item->setTransformOriginPoint(QPointF(dxr, dyr)-item->pos());
+                item->rotate(angle);
+            }
+            continue;
+        }
+
+        //check pattern for strings like 'translate(11.0, 12.34)'
+        regexp.setPattern("translate\\( *([-+]{0,1}[0-9]*\\.{0,1}[0-9]*) *,*([-+]{0,1}[0-9]*\\.{0,1}[0-9]*)*\\)");
+        if (regexp.exactMatch(trStr)) {
+            dx = regexp.capturedTexts().at(1).toDouble();
+            dy = regexp.capturedTexts().at(2).toDouble();
+            tr.translate(dx,dy);
+            continue;
+        }
+    }
+    return tr;
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::getViewBoxDimenstions(const QString& viewBox)
+{
+    QStringList capturedTexts = viewBox.split(" ", QString::SkipEmptyParts);
+    if (capturedTexts.count())
+    {
+        if (4 == capturedTexts.count())
+        {
+            mViewBox = QRectF(capturedTexts.at(0).toDouble(), capturedTexts.at(1).toDouble(), capturedTexts.at(2).toDouble(), capturedTexts.at(3).toDouble());
+            mViewPort = mViewBox;
+            mViewPort.translate(- mViewPort.center());
+            mViewBoxCenter.setX(mViewBox.width() / 2);
+            mViewBoxCenter.setY(mViewBox.height() / 2);
+
+            return true;
+        }
+    }
+
+    mViewBox = QRectF(0, 0, 1000, 1000);
+    mViewBoxCenter = QPointF(500, 500);
+    return false;
+}
+
+QSvgGenerator* UBCFFSubsetAdaptor::UBCFFSubsetReader::createSvgGenerator(qreal width, qreal height)
+{
+    QSvgGenerator* generator = new QSvgGenerator();
+//    qWarning() << QString("Making generator with file %1, size (%2, %3) and viewbox (%4 %5 %6 %7)").arg(mTempFilePath)
+//        .arg(width).arg(height).arg(0.0).arg(0.0).arg(width).arg(width);
+    generator->setResolution(QApplication::desktop()->physicalDpiY());
+    generator->setFileName(mTempFilePath);
+    generator->setSize(QSize(width, height));
+    generator->setViewBox(QRectF(0, 0, width, height));
+
+    return generator;
+}
+
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::getTempFileName()
+{
+    int tmpNumber = 0;
+    QDir rootDir;
+    while (true)
+    {
+        mTempFilePath = QString("%1/sanksvg%2.%3")
+                .arg(rootDir.tempPath())
+                .arg(QDateTime::currentDateTime().toString("dd_MM_yyyy_HH-mm"))
+                .arg(tmpNumber);
+        if (!QFile::exists(mTempFilePath))
+            return true;
+        tmpNumber++;
+        if (tmpNumber == 100000)
+        {
+            qWarning() << "Import failed. Failed to create temporary file for svg objects";
+            return false;
+        }
+    }
+}
+bool UBCFFSubsetAdaptor::UBCFFSubsetReader::createTempFlashPath()
+{
+    int tmpNumber = 0;
+    QDir systemTmp = QDir::temp();
+
+    while (true) {
+        QString dirName = QString("SankTmpFlash%1.%2")
+                .arg(QDateTime::currentDateTime().toString("dd_MM_yyyy_HH-mm"))
+                .arg(tmpNumber++);
+        if (!systemTmp.exists(dirName)) {
+            if (systemTmp.mkdir(dirName)) {
+                mTmpFlashDir = QDir(systemTmp.absolutePath() + "/" + dirName);
+                return true;
+            } else {
+                qDebug() << "Can't create temporary dir maybe due to permissions";
+                return false;
+            }
+        } else if (tmpNumber == 1000) {
+            qWarning() << "Import failed. Failed to create temporary file for svg objects";
+            return false;
+        }
+    }
+
+    return true;
+}
+UBCFFSubsetAdaptor::UBCFFSubsetReader::~UBCFFSubsetReader()
+{
+//    QList<int> pages;
+//    for (int i = 0; i < mProxy->pageCount(); i++) {
+//        pages << i;
+//    }
+//    UBPersistenceManager::persistenceManager()->deleteDocumentScenes(mProxy, pages);
+}
diff --git a/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.h b/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.h
index 0d167c4..68f741e 100644
--- a/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.h
+++ b/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,135 +18,136 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBCFFSUBSETADAPTOR_H
-#define UBCFFSUBSETADAPTOR_H
-
-#include <QtXml>
-#include <QString>
-#include <QStack>
-#include <QDomDocument>
-#include <QHash>
-
-class UBDocumentProxy;
-class UBGraphicsScene;
-class QSvgGenerator;
-class UBGraphicsSvgItem;
-class UBGraphicsPixmapItem;
-class UBGraphicsItemDelegate;
-class QTransform;
-class QPainter;
-class UBGraphicsItem;
-class QGraphicsItem;
-class QTextBlockFormat;
-class QTextCharFormat;
-class QTextCursor;
-class UBGraphicsStrokesGroup;
-
-
-class UBCFFSubsetAdaptor
-{
-public:
-    UBCFFSubsetAdaptor();
-    static bool ConvertCFFFileToUbz(QString &cffSourceFile, UBDocumentProxy* pDocument);
-
-private:
-    class UBCFFSubsetReader
-    {
-    public:
-        UBCFFSubsetReader(UBDocumentProxy *proxy, QFile *content);
-        ~UBCFFSubsetReader();
-
-        UBDocumentProxy *mProxy;
-        QString pwdContent;
-
-        bool parse();
-
-    private:
-        QString mTempFilePath;
-        UBGraphicsScene *mCurrentScene;
-        QRectF mCurrentSceneRect;
-        QString mIndent;
-        QRectF mViewBox;
-        QRectF mViewPort;
-        qreal mVBTransFactor;
-        QPointF mViewBoxCenter;
-        QSize mSize;
-        QPointF mShiftVector;
-        bool mSvgGSectionIsOpened;
-        UBGraphicsGroupContainerItem *mGSectionContainer;
-
-    private:
-        QDomDocument mDOMdoc;
-        QDomNode mCurrentDOMElement;
-        QHash<QString, UBGraphicsItem*> persistedItems;
-        QMap<QString, QString> mRefToUuidMap;
-        QDir mTmpFlashDir;
-
-        void addItemToGSection(QGraphicsItem *item);
-        bool hashElements();
-        void addExtentionsToHash(QDomElement *parent, QDomElement *topGroup);
-
-        void hashSvg(QDomNode *parent, QString prefix = "");
-        void hashSiblingIwbElements(QDomElement *parent, QDomElement *topGroup = 0);
-
-        inline void parseSvgSectionAttr(const QDomElement &);
-        bool parseSvgPage(const QDomElement &parent);
-        bool parseSvgPageset(const QDomElement &parent);
-        bool parseSvgElement(const QDomElement &parent);
-        bool parseIwbMeta(const QDomElement &element);
-        bool parseSvg(const QDomElement &svgSection);
-
-        inline bool parseGSection(const QDomElement &element);
-        inline bool parseSvgSwitchSection(const QDomElement &element);
-        inline bool parseSvgRect(const QDomElement &element);
-        inline bool parseSvgEllipse(const QDomElement &element);
-        inline bool parseSvgPolygon(const QDomElement &element);
-        inline bool parseSvgPolyline(const QDomElement &element);
-        inline bool parseSvgText(const QDomElement &element);
-        inline bool parseSvgTextarea(const QDomElement &element);
-        inline bool parseSvgImage(const QDomElement &element);
-        inline bool parseSvgFlash(const QDomElement &element);
-        inline bool parseSvgAudio(const QDomElement &element);
-        inline bool parseSvgVideo(const QDomElement &element);
-        inline UBGraphicsGroupContainerItem *parseIwbGroup(QDomElement &parent);
-        inline bool parseIwbElement(QDomElement &element);
-        inline void parseTSpan(const QDomElement &parent, QPainter &painter
-                               , qreal &curX, qreal &curY, qreal &width, qreal &height, qreal &linespacing, QRectF &lastDrawnTextBoundingRect
-                               , qreal &fontSize, QColor &fontColor, QString &fontFamily, QString &fontStretch, bool &italic
-                               , int &fontWeight, int &textAlign, QTransform &fontTransform);
-        inline void parseTSpan(const QDomElement &element, QTextCursor &cursor
-                               , QTextBlockFormat &blockFormat, QTextCharFormat &charFormat);
-        inline void hashSceneItem(const QDomElement &element, UBGraphicsItem *item);
-
-        // to kill
-        inline void parseTextAttributes(const QDomElement &element, qreal &fontSize, QColor &fontColor,
-                                 QString &fontFamily, QString &fontStretch, bool &italic,
-                                 int &fontWeight, int &textAlign, QTransform &fontTransform);
-        inline void parseTextAttributes(const QDomElement &element, QFont &font, QColor);
-        inline void readTextBlockAttr(const QDomElement &element, QTextBlockFormat &format);
-        inline void readTextCharAttr(const QDomElement &element, QTextCharFormat &format);
-
-        //elements parsing methods
-        bool parseDoc();
-
-        bool createNewScene();
-        bool persistCurrentScene();
-        bool persistScenes();
-
-//        helper methods
-        void repositionSvgItem(QGraphicsItem *item, qreal width, qreal height,
-                               qreal x, qreal y,
-                               QTransform &transform);
-        QColor colorFromString(const QString& clrString);
-        QTransform transformFromString(const QString trString, QGraphicsItem *item = 0);
-        bool getViewBoxDimenstions(const QString& viewBox);
-        QSvgGenerator* createSvgGenerator(qreal width, qreal height);
-        bool getTempFileName();
-        inline bool strToBool(QString);
-        bool createTempFlashPath();
-    };
-};
-
-#endif // UBCFFSUBSETADAPTOR_H
+
+
+
+#ifndef UBCFFSUBSETADAPTOR_H
+#define UBCFFSUBSETADAPTOR_H
+
+#include <QtXml>
+#include <QString>
+#include <QStack>
+#include <QDomDocument>
+#include <QHash>
+
+class UBDocumentProxy;
+class UBGraphicsScene;
+class QSvgGenerator;
+class UBGraphicsSvgItem;
+class UBGraphicsPixmapItem;
+class UBGraphicsItemDelegate;
+class QTransform;
+class QPainter;
+class UBGraphicsItem;
+class QGraphicsItem;
+class QTextBlockFormat;
+class QTextCharFormat;
+class QTextCursor;
+class UBGraphicsStrokesGroup;
+
+
+class UBCFFSubsetAdaptor
+{
+public:
+    UBCFFSubsetAdaptor();
+    static bool ConvertCFFFileToUbz(QString &cffSourceFile, UBDocumentProxy* pDocument);
+
+private:
+    class UBCFFSubsetReader
+    {
+    public:
+        UBCFFSubsetReader(UBDocumentProxy *proxy, QFile *content);
+        ~UBCFFSubsetReader();
+
+        UBDocumentProxy *mProxy;
+        QString pwdContent;
+
+        bool parse();
+
+    private:
+        QString mTempFilePath;
+        UBGraphicsScene *mCurrentScene;
+        QRectF mCurrentSceneRect;
+        QString mIndent;
+        QRectF mViewBox;
+        QRectF mViewPort;
+        qreal mVBTransFactor;
+        QPointF mViewBoxCenter;
+        QSize mSize;
+        QPointF mShiftVector;
+        bool mSvgGSectionIsOpened;
+        UBGraphicsGroupContainerItem *mGSectionContainer;
+
+    private:
+        QDomDocument mDOMdoc;
+        QDomNode mCurrentDOMElement;
+        QHash<QString, UBGraphicsItem*> persistedItems;
+        QMap<QString, QString> mRefToUuidMap;
+        QDir mTmpFlashDir;
+
+        void addItemToGSection(QGraphicsItem *item);
+        bool hashElements();
+        void addExtentionsToHash(QDomElement *parent, QDomElement *topGroup);
+
+        void hashSvg(QDomNode *parent, QString prefix = "");
+        void hashSiblingIwbElements(QDomElement *parent, QDomElement *topGroup = 0);
+
+        inline void parseSvgSectionAttr(const QDomElement &);
+        bool parseSvgPage(const QDomElement &parent);
+        bool parseSvgPageset(const QDomElement &parent);
+        bool parseSvgElement(const QDomElement &parent);
+        bool parseIwbMeta(const QDomElement &element);
+        bool parseSvg(const QDomElement &svgSection);
+
+        inline bool parseGSection(const QDomElement &element);
+        inline bool parseSvgSwitchSection(const QDomElement &element);
+        inline bool parseSvgRect(const QDomElement &element);
+        inline bool parseSvgEllipse(const QDomElement &element);
+        inline bool parseSvgPolygon(const QDomElement &element);
+        inline bool parseSvgPolyline(const QDomElement &element);
+        inline bool parseSvgText(const QDomElement &element);
+        inline bool parseSvgTextarea(const QDomElement &element);
+        inline bool parseSvgImage(const QDomElement &element);
+        inline bool parseSvgFlash(const QDomElement &element);
+        inline bool parseSvgAudio(const QDomElement &element);
+        inline bool parseSvgVideo(const QDomElement &element);
+        inline UBGraphicsGroupContainerItem *parseIwbGroup(QDomElement &parent);
+        inline bool parseIwbElement(QDomElement &element);
+        inline void parseTSpan(const QDomElement &parent, QPainter &painter
+                               , qreal &curX, qreal &curY, qreal &width, qreal &height, qreal &linespacing, QRectF &lastDrawnTextBoundingRect
+                               , qreal &fontSize, QColor &fontColor, QString &fontFamily, QString &fontStretch, bool &italic
+                               , int &fontWeight, int &textAlign, QTransform &fontTransform);
+        inline void parseTSpan(const QDomElement &element, QTextCursor &cursor
+                               , QTextBlockFormat &blockFormat, QTextCharFormat &charFormat);
+        inline void hashSceneItem(const QDomElement &element, UBGraphicsItem *item);
+
+        // to kill
+        inline void parseTextAttributes(const QDomElement &element, qreal &fontSize, QColor &fontColor,
+                                 QString &fontFamily, QString &fontStretch, bool &italic,
+                                 int &fontWeight, int &textAlign, QTransform &fontTransform);
+        inline void parseTextAttributes(const QDomElement &element, QFont &font, QColor);
+        inline void readTextBlockAttr(const QDomElement &element, QTextBlockFormat &format);
+        inline void readTextCharAttr(const QDomElement &element, QTextCharFormat &format);
+
+        //elements parsing methods
+        bool parseDoc();
+
+        bool createNewScene();
+        bool persistCurrentScene();
+        bool persistScenes();
+
+//        helper methods
+        void repositionSvgItem(QGraphicsItem *item, qreal width, qreal height,
+                               qreal x, qreal y,
+                               QTransform &transform);
+        QColor colorFromString(const QString& clrString);
+        QTransform transformFromString(const QString trString, QGraphicsItem *item = 0);
+        bool getViewBoxDimenstions(const QString& viewBox);
+        QSvgGenerator* createSvgGenerator(qreal width, qreal height);
+        bool getTempFileName();
+        inline bool strToBool(QString);
+        bool createTempFlashPath();
+    };
+};
+
+#endif // UBCFFSUBSETADAPTOR_H
diff --git a/Sankore-3.1/src/adaptors/UBExportAdaptor.cpp b/Sankore-3.1/src/adaptors/UBExportAdaptor.cpp
index 67c0068..8a8df9a 100644
--- a/Sankore-3.1/src/adaptors/UBExportAdaptor.cpp
+++ b/Sankore-3.1/src/adaptors/UBExportAdaptor.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBExportAdaptor.h"
 
 #include "document/UBDocumentProxy.h"
@@ -38,6 +39,7 @@
 UBExportAdaptor::UBExportAdaptor(QObject *parent)
     : QObject(parent)
     , mIsVerbose(true)
+    , mAssociatedAction(0)
 {
     // NOOP
 }
@@ -120,4 +122,4 @@ void UBExportAdaptor::showErrorsList(QList<QString> errorsList)
         dialog->setMessages(errorsList);
         dialog->show();
     }
-}
\ No newline at end of file
+}
diff --git a/Sankore-3.1/src/adaptors/UBExportAdaptor.h b/Sankore-3.1/src/adaptors/UBExportAdaptor.h
index bedba66..0430229 100644
--- a/Sankore-3.1/src/adaptors/UBExportAdaptor.h
+++ b/Sankore-3.1/src/adaptors/UBExportAdaptor.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBEXPORTADAPTOR_H_
 #define UBEXPORTADAPTOR_H_
 
@@ -29,7 +30,7 @@ class UBDocumentProxy;
 
 class UBExportAdaptor : public QObject
 {
-    Q_OBJECT;
+    Q_OBJECT
 
     public:
         UBExportAdaptor(QObject *parent = 0);
@@ -38,6 +39,9 @@ class UBExportAdaptor : public QObject
         virtual QString exportName() = 0;
         virtual QString exportExtention() { return "";}
         virtual void persist(UBDocumentProxy* pDocument) = 0;
+        virtual bool associatedActionactionAvailableFor(const QModelIndex &selectedIndex) {Q_UNUSED(selectedIndex); return false;}
+        QAction *associatedAction() {return mAssociatedAction;}
+        void setAssociatedAction(QAction *pAssociatedAction) {mAssociatedAction = pAssociatedAction;}
 
         virtual void setVerbode(bool verbose)
         {
@@ -56,6 +60,7 @@ class UBExportAdaptor : public QObject
         void showErrorsList(QList<QString> errorsList);
 
         bool mIsVerbose;
+        QPointer<QAction>mAssociatedAction;
 
 };
 
diff --git a/Sankore-3.1/src/adaptors/UBExportCFF.cpp b/Sankore-3.1/src/adaptors/UBExportCFF.cpp
index b4eedcb..b036b2a 100644
--- a/Sankore-3.1/src/adaptors/UBExportCFF.cpp
+++ b/Sankore-3.1/src/adaptors/UBExportCFF.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,12 +20,17 @@
  */
 
 
+
 #include "UBExportCFF.h"
 #include "UBCFFAdaptor.h"
 #include "document/UBDocumentProxy.h"
 #include "core/UBDocumentManager.h"
 #include "core/UBApplication.h"
 #include "core/memcheck.h"
+#include "document/UBDocumentController.h"
+
+#include <QModelIndex>
+#include <QObject>
 
 
 UBExportCFF::UBExportCFF(QObject *parent)
@@ -81,4 +86,14 @@ void UBExportCFF::persist(UBDocumentProxy* pDocument)
     }
 
     
-}
\ No newline at end of file
+}
+
+bool UBExportCFF::associatedActionactionAvailableFor(const QModelIndex &selectedIndex)
+{
+    const UBDocumentTreeModel *docModel = qobject_cast<const UBDocumentTreeModel*>(selectedIndex.model());
+    if (!selectedIndex.isValid() || docModel->isCatalog(selectedIndex)) {
+        return false;
+    }
+
+    return true;
+}
diff --git a/Sankore-3.1/src/adaptors/UBExportCFF.h b/Sankore-3.1/src/adaptors/UBExportCFF.h
index e9d15b6..ce103e2 100644
--- a/Sankore-3.1/src/adaptors/UBExportCFF.h
+++ b/Sankore-3.1/src/adaptors/UBExportCFF.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBExportCFF_H_
 #define UBExportCFF_H_
 
@@ -33,7 +34,7 @@ class UBDocumentProxy;
 
 class UBExportCFF : public UBExportAdaptor
 {
-    Q_OBJECT;
+    Q_OBJECT
 
 public:
     UBExportCFF(QObject *parent = 0);
@@ -42,6 +43,7 @@ public:
     virtual QString exportName();
     virtual QString exportExtention();
     virtual void persist(UBDocumentProxy* pDocument);
+    virtual bool associatedActionactionAvailableFor(const QModelIndex &selectedIndex);
 };
 
-#endif /* UBExportCFF_H_ */
\ No newline at end of file
+#endif /* UBExportCFF_H_ */
diff --git a/Sankore-3.1/src/adaptors/UBExportDocument.cpp b/Sankore-3.1/src/adaptors/UBExportDocument.cpp
index 38f3c76..257cdd4 100644
--- a/Sankore-3.1/src/adaptors/UBExportDocument.cpp
+++ b/Sankore-3.1/src/adaptors/UBExportDocument.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -28,6 +28,7 @@
 #include "core/UBApplication.h"
 
 #include "document/UBDocumentProxy.h"
+#include "document/UBDocumentController.h"
 
 #include "globals/UBGlobals.h"
 
@@ -125,3 +126,14 @@ QString UBExportDocument::exportName()
 {
     return tr("Export to Sankore Format");
 }
+
+bool UBExportDocument::associatedActionactionAvailableFor(const QModelIndex &selectedIndex)
+{
+    const UBDocumentTreeModel *docModel = qobject_cast<const UBDocumentTreeModel*>(selectedIndex.model());
+    if (!selectedIndex.isValid() || docModel->isCatalog(selectedIndex)) {
+        return false;
+    }
+
+    return true;
+}
+
diff --git a/Sankore-3.1/src/adaptors/UBExportDocument.h b/Sankore-3.1/src/adaptors/UBExportDocument.h
index 3b8e2c5..8567606 100644
--- a/Sankore-3.1/src/adaptors/UBExportDocument.h
+++ b/Sankore-3.1/src/adaptors/UBExportDocument.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBEXPORTDOCUMENT_H_
 #define UBEXPORTDOCUMENT_H_
 
@@ -34,7 +35,7 @@ class UBDocumentProxy;
 
 class UBExportDocument : public UBExportAdaptor, public UBProcessingProgressListener
 {
-    Q_OBJECT;
+    Q_OBJECT
 
     public:
         UBExportDocument(QObject *parent = 0);
@@ -47,6 +48,10 @@ class UBExportDocument : public UBExportAdaptor, public UBProcessingProgressList
         virtual void persistsDocument(UBDocumentProxy* pDocument, QString filename);
 
         virtual void processing(const QString& pObjectName, int pCurrent, int pTotal);
+
+        virtual bool associatedActionactionAvailableFor(const QModelIndex &selectedIndex);
+
+
 };
 
 #endif /* UBEXPORTDOCUMENT_H_ */
diff --git a/Sankore-3.1/src/adaptors/UBExportDocumentSetAdaptor.cpp b/Sankore-3.1/src/adaptors/UBExportDocumentSetAdaptor.cpp
new file mode 100644
index 0000000..4a1aa17
--- /dev/null
+++ b/Sankore-3.1/src/adaptors/UBExportDocumentSetAdaptor.cpp
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "UBExportDocumentSetAdaptor.h"
+#include "UBExportDocument.h"
+
+#include "frameworks/UBPlatformUtils.h"
+
+#include "core/UBDocumentManager.h"
+#include "core/UBApplication.h"
+
+#include "document/UBDocumentProxy.h"
+#include "document/UBDocumentController.h"
+
+#include "globals/UBGlobals.h"
+#include "core/UBPersistenceManager.h"
+
+THIRD_PARTY_WARNINGS_DISABLE
+#include "quazip.h"
+#include "quazipfile.h"
+THIRD_PARTY_WARNINGS_ENABLE
+
+#include "transition/UniboardSankoreTransition.h"
+
+#include "core/memcheck.h"
+
+UBExportDocumentSetAdaptor::UBExportDocumentSetAdaptor(QObject *parent)
+    : UBExportAdaptor(parent)
+{
+
+}
+
+UBExportDocumentSetAdaptor::~UBExportDocumentSetAdaptor()
+{
+    // NOOP
+}
+
+void UBExportDocumentSetAdaptor::persist(UBDocumentProxy* pDocumentProxy)
+{
+    QModelIndex treeViewParentIndex;
+    UBPersistenceManager *persistenceManager = UBPersistenceManager::persistenceManager();
+    UBDocumentTreeModel *treeModel = persistenceManager->mDocumentTreeStructureModel;
+    QString filename;
+
+    if (pDocumentProxy) {
+        treeViewParentIndex = treeModel->indexForProxy(pDocumentProxy);
+        if (!treeViewParentIndex.isValid()) {
+            qDebug() << "failed to export";
+            UBApplication::showMessage(tr("Failed to export..."));
+            return;
+        }
+        filename = askForFileName(pDocumentProxy, tr("Export as UBX File"));
+
+    } else {
+        treeViewParentIndex = UBApplication::documentController->firstSelectedTreeIndex();
+        if (!treeViewParentIndex.isValid()) {
+            qDebug() << "failed to export";
+            UBApplication::showMessage(tr("Failed to export..."));
+            return;
+        }
+        UBDocumentProxy proxy;
+        filename = askForFileName(&proxy, tr("Export as UBX File"));
+    }
+
+    if (filename.length() > 0)
+    {
+        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+        if (mIsVerbose)
+            UBApplication::showMessage(tr("Exporting document..."));
+
+         if (persistData(treeViewParentIndex, filename)) {
+             if (mIsVerbose) {
+                 UBApplication::showMessage(tr("Export successful."));
+             }
+         } else {
+             if (mIsVerbose) {
+                 UBApplication::showMessage(tr("Export failed."));
+             }
+         }
+
+         QApplication::restoreOverrideCursor();
+    }
+}
+
+bool UBExportDocumentSetAdaptor::persistData(const QModelIndex &pRootIndex, QString filename)
+{
+    UBPersistenceManager *persistenceManager = UBPersistenceManager::persistenceManager();
+    UBDocumentTreeModel *treeModel = persistenceManager->mDocumentTreeStructureModel;
+
+    QModelIndex index = pRootIndex;
+
+    if (!index.isValid()) {
+        return false;
+    }
+
+    QuaZip zip(filename);
+    zip.setFileNameCodec("UTF-8");
+
+    if(!zip.open(QuaZip::mdCreate))
+    {
+        qWarning("Export failed. Cause: zip.open(): %d", zip.getZipError());
+        return false;
+    }
+
+    if (!addDocumentToZip(pRootIndex, treeModel, zip)) {
+        zip.close();
+        return false;
+    }
+
+    zip.close();
+    UBPlatformUtils::setFileType(filename, 0x5542647A /* UBdz */);
+
+    return true;
+}
+
+QString UBExportDocumentSetAdaptor::exportExtention()
+{
+    return QString(".ubx");
+}
+
+QString UBExportDocumentSetAdaptor::exportName()
+{
+    return tr("Export to Sankore UBX Format");
+}
+
+bool UBExportDocumentSetAdaptor::addDocumentToZip(const QModelIndex &pIndex, UBDocumentTreeModel *model, QuaZip &zip)
+{
+    static int i = 0;
+    i++;
+
+    QModelIndex parentIndex = pIndex;
+    if (!parentIndex.isValid()) {
+        return false;
+    }
+
+    UBDocumentProxy *pDocumentProxy = model->proxyForIndex(parentIndex);
+    if (pDocumentProxy) {
+        UniboardSankoreTransition document;
+        QString documentPath(pDocumentProxy->persistencePath());
+        document.checkDocumentDirectory(documentPath);
+
+        QDir documentDir = QDir(pDocumentProxy->persistencePath());
+        QuaZipFile zipFile(&zip);
+        UBFileSystemUtils::compressDirInZip(documentDir, QFileInfo(documentPath).fileName() + "/", &zipFile, false);
+
+        if(zip.getZipError() != 0)
+        {
+            qWarning("Export failed. Cause: zip.close(): %d", zip.getZipError());
+        }
+    }
+
+    for (int i = 0; i < model->rowCount(parentIndex); ++i) {
+        QModelIndex curIndex = model->index(i, 0, parentIndex);
+        if (!addDocumentToZip(curIndex, model, zip)) {
+            return false;
+        }
+    }
+
+    return true;
+}
+
+bool UBExportDocumentSetAdaptor::associatedActionactionAvailableFor(const QModelIndex &selectedIndex)
+{
+    const UBDocumentTreeModel *docModel = qobject_cast<const UBDocumentTreeModel*>(selectedIndex.model());
+    if (!selectedIndex.isValid() || docModel->isDocument(selectedIndex)) {
+        return false;
+    }
+
+    return true;
+}
+
diff --git a/Sankore-3.1/src/adaptors/UBExportDocumentSetAdaptor.h b/Sankore-3.1/src/adaptors/UBExportDocumentSetAdaptor.h
new file mode 100644
index 0000000..8e46337
--- /dev/null
+++ b/Sankore-3.1/src/adaptors/UBExportDocumentSetAdaptor.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef UBEXPORTDOCUMENTSETADAPTOR_H
+#define UBEXPORTDOCUMENTSETADAPTOR_H
+
+#include <QtCore>
+#include "UBExportAdaptor.h"
+#include "frameworks/UBFileSystemUtils.h"
+#include "globals/UBGlobals.h"
+
+THIRD_PARTY_WARNINGS_DISABLE
+#include "quazip.h"
+#include "quazipfile.h"
+THIRD_PARTY_WARNINGS_ENABLE
+
+class UBDocumentProxy;
+class UBDocumentTreeModel;
+
+
+class UBExportDocumentSetAdaptor : public UBExportAdaptor
+{
+    Q_OBJECT
+
+    public:
+        UBExportDocumentSetAdaptor(QObject *parent = 0);
+        virtual ~UBExportDocumentSetAdaptor();
+
+        virtual QString exportName();
+        virtual QString exportExtention();
+
+        virtual void persist(UBDocumentProxy* pDocument);
+        bool persistData(const QModelIndex &pRootIndex, QString filename);
+        bool addDocumentToZip(const QModelIndex &pIndex, UBDocumentTreeModel *model, QuaZip &zip);
+
+        virtual bool associatedActionactionAvailableFor(const QModelIndex &selectedIndex);
+
+
+};
+
+#endif // UBEXPORTDOCUMENTSETADAPTOR_H
diff --git a/Sankore-3.1/src/adaptors/UBExportFullPDF.cpp b/Sankore-3.1/src/adaptors/UBExportFullPDF.cpp
index b3c80a1..471c22e 100644
--- a/Sankore-3.1/src/adaptors/UBExportFullPDF.cpp
+++ b/Sankore-3.1/src/adaptors/UBExportFullPDF.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBExportFullPDF.h"
 
 #include <QtCore>
@@ -35,6 +36,7 @@
 #include "domain/UBGraphicsPDFItem.h"
 
 #include "document/UBDocumentProxy.h"
+#include "document/UBDocumentController.h"
 
 #include "pdf/GraphicsPDFItem.h"
 
@@ -275,3 +277,13 @@ QString UBExportFullPDF::exportName()
 {
     return tr("Export to PDF");
 }
+
+bool UBExportFullPDF::associatedActionactionAvailableFor(const QModelIndex &selectedIndex)
+{
+    const UBDocumentTreeModel *docModel = qobject_cast<const UBDocumentTreeModel*>(selectedIndex.model());
+    if (!selectedIndex.isValid() || docModel->isCatalog(selectedIndex)) {
+        return false;
+    }
+
+    return true;
+}
diff --git a/Sankore-3.1/src/adaptors/UBExportFullPDF.h b/Sankore-3.1/src/adaptors/UBExportFullPDF.h
index 41274b8..49e0b97 100644
--- a/Sankore-3.1/src/adaptors/UBExportFullPDF.h
+++ b/Sankore-3.1/src/adaptors/UBExportFullPDF.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBExportFullPDF_H_
 #define UBExportFullPDF_H_
 
@@ -30,7 +31,7 @@ class UBDocumentProxy;
 
 class UBExportFullPDF : public UBExportAdaptor
 {
-    Q_OBJECT;
+    Q_OBJECT
 
     public:
         UBExportFullPDF(QObject *parent = 0);
@@ -41,6 +42,7 @@ class UBExportFullPDF : public UBExportAdaptor
         virtual void persist(UBDocumentProxy* pDocument);
 
         virtual void persistsDocument(UBDocumentProxy* pDocument, const QString& filename);
+        virtual bool associatedActionactionAvailableFor(const QModelIndex &selectedIndex);
 
     protected:
         void saveOverlayPdf(UBDocumentProxy* pDocumentProxy, const QString& filename);
diff --git a/Sankore-3.1/src/adaptors/UBExportPDF.cpp b/Sankore-3.1/src/adaptors/UBExportPDF.cpp
index 682583b..6400130 100644
--- a/Sankore-3.1/src/adaptors/UBExportPDF.cpp
+++ b/Sankore-3.1/src/adaptors/UBExportPDF.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBExportPDF.h"
 
 #include <QtCore>
@@ -34,6 +35,7 @@
 #include "domain/UBGraphicsSvgItem.h"
 
 #include "document/UBDocumentProxy.h"
+#include "document/UBDocumentController.h"
 
 #include "pdf/GraphicsPDFItem.h"
 
@@ -133,3 +135,13 @@ QString UBExportPDF::exportName()
 {
     return tr("Export to PDF");
 }
+
+bool UBExportPDF::associatedActionactionAvailableFor(const QModelIndex &selectedIndex)
+{
+    const UBDocumentTreeModel *docModel = qobject_cast<const UBDocumentTreeModel*>(selectedIndex.model());
+    if (!selectedIndex.isValid() || docModel->isCatalog(selectedIndex)) {
+        return false;
+    }
+
+    return true;
+}
diff --git a/Sankore-3.1/src/adaptors/UBExportPDF.h b/Sankore-3.1/src/adaptors/UBExportPDF.h
index 5c0abf8..4a27b76 100644
--- a/Sankore-3.1/src/adaptors/UBExportPDF.h
+++ b/Sankore-3.1/src/adaptors/UBExportPDF.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBEXPORTPDF_H_
 #define UBEXPORTPDF_H_
 
@@ -30,7 +31,7 @@ class UBDocumentProxy;
 
 class UBExportPDF : public UBExportAdaptor
 {
-    Q_OBJECT;
+    Q_OBJECT
 
     public:
         UBExportPDF(QObject *parent = 0);
@@ -39,6 +40,7 @@ class UBExportPDF : public UBExportAdaptor
         virtual QString exportName();
         virtual QString exportExtention();
         virtual void persist(UBDocumentProxy* pDocument);
+        virtual bool associatedActionactionAvailableFor(const QModelIndex &selectedIndex);
 
         static void persistsDocument(UBDocumentProxy* pDocument, const QString& filename);
 };
diff --git a/Sankore-3.1/src/adaptors/UBExportWeb.cpp b/Sankore-3.1/src/adaptors/UBExportWeb.cpp
index 1745592..41cd942 100644
--- a/Sankore-3.1/src/adaptors/UBExportWeb.cpp
+++ b/Sankore-3.1/src/adaptors/UBExportWeb.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBExportWeb.h"
 
 #include "frameworks/UBPlatformUtils.h"
@@ -29,6 +30,7 @@
 #include "core/UBApplication.h"
 
 #include "document/UBDocumentProxy.h"
+#include "document/UBDocumentController.h"
 
 #include "globals/UBGlobals.h"
 
@@ -90,3 +92,13 @@ QString UBExportWeb::exportName()
 {
     return tr("Export to Web Browser");
 }
+
+bool UBExportWeb::associatedActionactionAvailableFor(const QModelIndex &selectedIndex)
+{
+    const UBDocumentTreeModel *docModel = qobject_cast<const UBDocumentTreeModel*>(selectedIndex.model());
+    if (!selectedIndex.isValid() || docModel->isCatalog(selectedIndex)) {
+        return false;
+    }
+
+    return true;
+}
diff --git a/Sankore-3.1/src/adaptors/UBExportWeb.h b/Sankore-3.1/src/adaptors/UBExportWeb.h
index 970a0c3..7a20446 100644
--- a/Sankore-3.1/src/adaptors/UBExportWeb.h
+++ b/Sankore-3.1/src/adaptors/UBExportWeb.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBEXPORTWEB_H_
 #define UBEXPORTWEB_H_
 
@@ -31,7 +32,7 @@ class UBDocumentProxy;
 
 class UBExportWeb : public UBExportAdaptor
 {
-    Q_OBJECT;
+    Q_OBJECT
 
     public:
         UBExportWeb(QObject *parent = 0);
@@ -40,6 +41,8 @@ class UBExportWeb : public UBExportAdaptor
         virtual QString exportName();
 
         virtual void persist(UBDocumentProxy* pDocument);
+        virtual bool associatedActionactionAvailableFor(const QModelIndex &selectedIndex);
+
 
 };
 
diff --git a/Sankore-3.1/src/adaptors/UBImportAdaptor.cpp b/Sankore-3.1/src/adaptors/UBImportAdaptor.cpp
index acf8c4f..0a842f3 100644
--- a/Sankore-3.1/src/adaptors/UBImportAdaptor.cpp
+++ b/Sankore-3.1/src/adaptors/UBImportAdaptor.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBImportAdaptor.h"
 
 #include "core/UBApplication.h"
diff --git a/Sankore-3.1/src/adaptors/UBImportAdaptor.h b/Sankore-3.1/src/adaptors/UBImportAdaptor.h
index bc3e07d..a99a991 100644
--- a/Sankore-3.1/src/adaptors/UBImportAdaptor.h
+++ b/Sankore-3.1/src/adaptors/UBImportAdaptor.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBIMPORTADAPTOR_H_
 #define UBIMPORTADAPTOR_H_
 
diff --git a/Sankore-3.1/src/adaptors/UBImportCFF.cpp b/Sankore-3.1/src/adaptors/UBImportCFF.cpp
index df6c88e..611b316 100644
--- a/Sankore-3.1/src/adaptors/UBImportCFF.cpp
+++ b/Sankore-3.1/src/adaptors/UBImportCFF.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,270 +18,277 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include <QDir>
-#include <QList>
-
-#include "core/UBApplication.h"
-#include "core/UBPersistenceManager.h"
-#include "core/UBDocumentManager.h"
-#include "core/UBPersistenceManager.h"
-#include "document/UBDocumentProxy.h"
-#include "domain/UBGraphicsPDFItem.h"
-#include "frameworks/UBFileSystemUtils.h"
-#include "pdf/PDFRenderer.h"
-
-#include "UBCFFSubsetAdaptor.h"
-#include "UBImportCFF.h"
-
-#include "globals/UBGlobals.h"
-
-THIRD_PARTY_WARNINGS_DISABLE
-#include "quazip.h"
-#include "quazipfile.h"
-#include "quazipfileinfo.h"
-THIRD_PARTY_WARNINGS_ENABLE
-
-#include "core/memcheck.h"
-
-UBImportCFF::UBImportCFF(QObject *parent)
-    : UBDocumentBasedImportAdaptor(parent)
-{
-    // NOOP
-}
-
-
-UBImportCFF::~UBImportCFF()
-{
-    // NOOP
-}
-
-
-QStringList UBImportCFF::supportedExtentions()
-{
-    return QStringList("iwb");
-}
-
-
-QString UBImportCFF::importFileFilter()
-{
-    QString filter = tr("Common File Format (");
-    QStringList formats = supportedExtentions();
-    bool isFirst = true;
-
-    foreach(QString format, formats)
-    {
-            if(isFirst)
-                    isFirst = false;
-            else
-                    filter.append(" ");
-
-        filter.append("*."+format);
-    }
-
-    filter.append(")");
-
-    return filter;
-}
-
-bool UBImportCFF::addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile)
-{
-    QFileInfo fi(pFile);
-    UBApplication::showMessage(tr("Importing file %1...").arg(fi.baseName()), true);
-
-    // first unzip the file to the correct place
-    //TODO create temporary path for iwb file content
-    QString path = QDir::tempPath();
-
-    QString documentRootFolder = expandFileToDir(pFile, path);
-        QString contentFile;
-    if (documentRootFolder.isEmpty()) //if file has failed to unzip it is probably just xml file
-        contentFile = pFile.fileName();
-    else //get path to content xml (according to iwbcff specification)
-        contentFile = documentRootFolder.append("/content.xml");
-
-    if(!contentFile.length()){
-            UBApplication::showMessage(tr("Import of file %1 failed.").arg(fi.baseName()));
-            return false;
-    }
-    else{
-        //TODO convert expanded CFF file content to the destination document
-        //create destination document proxy
-        //fill metadata and save
-        UBDocumentProxy* destDocument = new UBDocumentProxy(UBPersistenceManager::persistenceManager()->generateUniqueDocumentPath());
-        QDir dir;
-        dir.mkdir(destDocument->persistencePath());
-
-        //try to import cff to document
-        if (UBCFFSubsetAdaptor::ConvertCFFFileToUbz(contentFile, destDocument))
-        {
-            UBPersistenceManager::persistenceManager()->addDirectoryContentToDocument(destDocument->persistencePath(), pDocument);
-            UBFileSystemUtils::deleteDir(destDocument->persistencePath());
-            delete destDocument;
-            UBApplication::showMessage(tr("Import successful."));
-            return true;
-        }
-        else
-        {
-            UBFileSystemUtils::deleteDir(destDocument->persistencePath());
-            delete destDocument;
-            UBApplication::showMessage(tr("Import failed."));
-            return false;
-        }
-    }
-}
-
-QString UBImportCFF::expandFileToDir(const QFile& pZipFile, const QString& pDir)
-{
-    QuaZip zip(pZipFile.fileName());
-
-    if(!zip.open(QuaZip::mdUnzip)) {
-        qWarning() << "Import failed. Cause zip.open(): " << zip.getZipError();
-        return "";
-    }
-
-    zip.setFileNameCodec("UTF-8");
-    QuaZipFileInfo info;
-    QuaZipFile file(&zip);
-
-    //create unique cff document root fodler
-    //use current date/time and temp number for folder name
-    QString documentRootFolder;
-    int tmpNumber = 0;
-    QDir rootDir;
-    while (true) {
-        QString tempPath = QString("%1/sank%2.%3")
-                .arg(pDir)
-                .arg(QDateTime::currentDateTime().toString("dd_MM_yyyy_HH-mm"))
-                .arg(tmpNumber);
-        if (!rootDir.exists(tempPath)) {
-            documentRootFolder = tempPath;
-            break;
-        }
-        tmpNumber++;
-        if (tmpNumber == 100000) {
-            qWarning() << "Import failed. Failed to create temporary directory for iwb file";
-            return "";
-        }
-    }
-    if (!rootDir.mkdir(documentRootFolder)) {
-        qWarning() << "Import failed. Couse: failed to create temp folder for cff package";
-    }
-
-    QFile out;
-    char c;
-    for(bool more=zip.goToFirstFile(); more; more=zip.goToNextFile()) {
-        if(!zip.getCurrentFileInfo(&info)) {
-            //TOD UB 4.3 O display error to user or use crash reporter
-            qWarning() << "Import failed. Cause: getCurrentFileInfo(): " << zip.getZipError();
-            return "";
-        }
-//        if(!file.open(QIODevice::ReadOnly)) {
-//            qWarning() << "Import failed. Cause: file.open(): " << zip.getZipError();
-//            return "";
-//        }
-        file.open(QIODevice::ReadOnly);
-        if(file.getZipError()!= UNZ_OK) {
-            qWarning() << "Import failed. Cause: file.getFileName(): " << zip.getZipError();
-            return "";
-        }
-
-        QString newFileName = documentRootFolder + "/" + file.getActualFileName();
-
-        QFileInfo newFileInfo(newFileName);
-        rootDir.mkpath(newFileInfo.absolutePath());
-
-        out.setFileName(newFileName);
-        out.open(QIODevice::WriteOnly);
-
-        while(file.getChar(&c))
-            out.putChar(c);
-
-        out.close();
-
-        if(file.getZipError()!=UNZ_OK) {
-            qWarning() << "Import failed. Cause: " << zip.getZipError();
-            return "";
-        }
-        if(!file.atEnd()) {
-            qWarning() << "Import failed. Cause: read all but not EOF";
-            return "";
-        }
-
-        file.close();
-
-        if(file.getZipError()!=UNZ_OK) {
-            qWarning() << "Import failed. Cause: file.close(): " <<  file.getZipError();
-            return "";
-        }
-    }
-
-    zip.close();
-
-    if(zip.getZipError()!=UNZ_OK) {
-        qWarning() << "Import failed. Cause: zip.close(): " << zip.getZipError();
-        return "";
-    }
-
-    return documentRootFolder;
-}
-
-
-UBDocumentProxy* UBImportCFF::importFile(const QFile& pFile, const QString& pGroup)
-{
-    Q_UNUSED(pGroup); // group is defined in the imported file
-
-    QFileInfo fi(pFile);
-    UBApplication::showMessage(tr("Importing file %1...").arg(fi.baseName()), true);
-
-    // first unzip the file to the correct place
-    //TODO create temporary path for iwb file content
-    QString path = QDir::tempPath();
-
-    QString documentRootFolder = expandFileToDir(pFile, path);
-    QString contentFile;
-    if (documentRootFolder.isEmpty())
-        //if file has failed to umzip it is probably just xml file
-        contentFile = pFile.fileName();
-    else
-        //get path to content xml
-        contentFile = QString("%1/content.xml").arg(documentRootFolder);
-
-    if(!contentFile.length()){
-            UBApplication::showMessage(tr("Import of file %1 failed.").arg(fi.baseName()));
-            return 0;
-    }
-    else{
-        //create destination document proxy
-        //fill metadata and save
-        UBDocumentProxy* destDocument = new UBDocumentProxy(UBPersistenceManager::persistenceManager()->generateUniqueDocumentPath());
-        QDir dir;
-        dir.mkdir(destDocument->persistencePath());
-        if (pGroup.length() > 0)
-            destDocument->setMetaData(UBSettings::documentGroupName, pGroup);
-        if (fi.baseName() > 0)
-            destDocument->setMetaData(UBSettings::documentName, fi.baseName());
-
-        destDocument->setMetaData(UBSettings::documentVersion, UBSettings::currentFileVersion);
-        destDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-
-        UBDocumentProxy* newDocument = NULL;
-        //try to import cff to document
-        if (UBCFFSubsetAdaptor::ConvertCFFFileToUbz(contentFile, destDocument))
-        {
-            newDocument = UBPersistenceManager::persistenceManager()->createDocumentFromDir(destDocument->persistencePath());
-            UBApplication::showMessage(tr("Import successful."));
-        }
-        else
-        {
-            UBFileSystemUtils::deleteDir(destDocument->persistencePath());
-            UBApplication::showMessage(tr("Import failed."));
-        }
-        delete destDocument;
-
-        if (documentRootFolder.length() != 0)
-            UBFileSystemUtils::deleteDir(documentRootFolder);
-        return newDocument;
-    }
-}
+
+
+
+#include <QDir>
+#include <QList>
+
+#include "core/UBApplication.h"
+#include "core/UBPersistenceManager.h"
+#include "core/UBDocumentManager.h"
+#include "core/UBPersistenceManager.h"
+#include "document/UBDocumentProxy.h"
+#include "domain/UBGraphicsPDFItem.h"
+#include "frameworks/UBFileSystemUtils.h"
+#include "pdf/PDFRenderer.h"
+
+#include "UBCFFSubsetAdaptor.h"
+#include "UBImportCFF.h"
+
+#include "globals/UBGlobals.h"
+
+THIRD_PARTY_WARNINGS_DISABLE
+#include "quazip.h"
+#include "quazipfile.h"
+#include "quazipfileinfo.h"
+THIRD_PARTY_WARNINGS_ENABLE
+
+#include "core/memcheck.h"
+
+UBImportCFF::UBImportCFF(QObject *parent)
+    : UBDocumentBasedImportAdaptor(parent)
+{
+    // NOOP
+}
+
+
+UBImportCFF::~UBImportCFF()
+{
+    // NOOP
+}
+
+
+QStringList UBImportCFF::supportedExtentions()
+{
+    return QStringList("iwb");
+}
+
+
+QString UBImportCFF::importFileFilter()
+{
+    QString filter = tr("Common File Format (");
+    QStringList formats = supportedExtentions();
+    bool isFirst = true;
+
+    foreach(QString format, formats)
+    {
+            if(isFirst)
+                    isFirst = false;
+            else
+                    filter.append(" ");
+
+        filter.append("*."+format);
+    }
+
+    filter.append(")");
+
+    return filter;
+}
+
+bool UBImportCFF::addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile)
+{
+    QFileInfo fi(pFile);
+    UBApplication::showMessage(tr("Importing file %1...").arg(fi.baseName()), true);
+
+    // first unzip the file to the correct place
+    //TODO create temporary path for iwb file content
+    QString path = QDir::tempPath();
+
+    QString documentRootFolder = expandFileToDir(pFile, path);
+        QString contentFile;
+    if (documentRootFolder.isEmpty()) //if file has failed to unzip it is probably just xml file
+        contentFile = pFile.fileName();
+    else //get path to content xml (according to iwbcff specification)
+        contentFile = documentRootFolder.append("/content.xml");
+
+    if(!contentFile.length()){
+            UBApplication::showMessage(tr("Import of file %1 failed.").arg(fi.baseName()));
+            return false;
+    }
+    else{
+        //TODO convert expanded CFF file content to the destination document
+        //create destination document proxy
+        //fill metadata and save
+        UBDocumentProxy* destDocument = new UBDocumentProxy(UBPersistenceManager::persistenceManager()->generateUniqueDocumentPath());
+        QDir dir;
+        dir.mkdir(destDocument->persistencePath());
+
+        //try to import cff to document
+        if (UBCFFSubsetAdaptor::ConvertCFFFileToUbz(contentFile, destDocument))
+        {
+            UBPersistenceManager::persistenceManager()->addDirectoryContentToDocument(destDocument->persistencePath(), pDocument);
+            UBFileSystemUtils::deleteDir(destDocument->persistencePath());
+            delete destDocument;
+            UBApplication::showMessage(tr("Import successful."));
+            return true;
+        }
+        else
+        {
+            UBFileSystemUtils::deleteDir(destDocument->persistencePath());
+            delete destDocument;
+            UBApplication::showMessage(tr("Import failed."));
+            return false;
+        }
+    }
+}
+
+QString UBImportCFF::expandFileToDir(const QFile& pZipFile, const QString& pDir)
+{
+    QuaZip zip(pZipFile.fileName());
+
+    if(!zip.open(QuaZip::mdUnzip)) {
+        qWarning() << "Import failed. Cause zip.open(): " << zip.getZipError();
+        return "";
+    }
+
+    zip.setFileNameCodec("UTF-8");
+    QuaZipFileInfo info;
+    QuaZipFile file(&zip);
+
+    //create unique cff document root fodler
+    //use current date/time and temp number for folder name
+    QString documentRootFolder;
+    int tmpNumber = 0;
+    QDir rootDir;
+    while (true) {
+        QString tempPath = QString("%1/sank%2.%3")
+                .arg(pDir)
+                .arg(QDateTime::currentDateTime().toString("dd_MM_yyyy_HH-mm"))
+                .arg(tmpNumber);
+        if (!rootDir.exists(tempPath)) {
+            documentRootFolder = tempPath;
+            break;
+        }
+        tmpNumber++;
+        if (tmpNumber == 100000) {
+            qWarning() << "Import failed. Failed to create temporary directory for iwb file";
+            return "";
+        }
+    }
+    if (!rootDir.mkdir(documentRootFolder)) {
+        qWarning() << "Import failed. Couse: failed to create temp folder for cff package";
+    }
+
+    QFile out;
+    char c;
+    for(bool more=zip.goToFirstFile(); more; more=zip.goToNextFile()) {
+        if(!zip.getCurrentFileInfo(&info)) {
+            //TOD UB 4.3 O display error to user or use crash reporter
+            qWarning() << "Import failed. Cause: getCurrentFileInfo(): " << zip.getZipError();
+            return "";
+        }
+//        if(!file.open(QIODevice::ReadOnly)) {
+//            qWarning() << "Import failed. Cause: file.open(): " << zip.getZipError();
+//            return "";
+//        }
+        file.open(QIODevice::ReadOnly);
+        if(file.getZipError()!= UNZ_OK) {
+            qWarning() << "Import failed. Cause: file.getFileName(): " << zip.getZipError();
+            return "";
+        }
+
+        QString newFileName = documentRootFolder + "/" + file.getActualFileName();
+
+        QFileInfo newFileInfo(newFileName);
+        rootDir.mkpath(newFileInfo.absolutePath());
+
+        out.setFileName(newFileName);
+        out.open(QIODevice::WriteOnly);
+
+        while(file.getChar(&c))
+            out.putChar(c);
+
+        out.close();
+
+        if(file.getZipError()!=UNZ_OK) {
+            qWarning() << "Import failed. Cause: " << zip.getZipError();
+            return "";
+        }
+        if(!file.atEnd()) {
+            qWarning() << "Import failed. Cause: read all but not EOF";
+            return "";
+        }
+
+        file.close();
+
+        if(file.getZipError()!=UNZ_OK) {
+            qWarning() << "Import failed. Cause: file.close(): " <<  file.getZipError();
+            return "";
+        }
+    }
+
+    zip.close();
+
+    if(zip.getZipError()!=UNZ_OK) {
+        qWarning() << "Import failed. Cause: zip.close(): " << zip.getZipError();
+        return "";
+    }
+
+    return documentRootFolder;
+}
+
+
+UBDocumentProxy* UBImportCFF::importFile(const QFile& pFile, const QString& pGroup)
+{
+    Q_UNUSED(pGroup); // group is defined in the imported file
+
+    QFileInfo fi(pFile);
+    UBApplication::showMessage(tr("Importing file %1...").arg(fi.baseName()), true);
+
+    // first unzip the file to the correct place
+    //TODO create temporary path for iwb file content
+    QString path = QDir::tempPath();
+
+    QString documentRootFolder = expandFileToDir(pFile, path);
+    QString contentFile;
+    if (documentRootFolder.isEmpty())
+        //if file has failed to umzip it is probably just xml file
+        contentFile = pFile.fileName();
+    else
+        //get path to content xml
+        contentFile = QString("%1/content.xml").arg(documentRootFolder);
+
+    if(!contentFile.length()){
+            UBApplication::showMessage(tr("Import of file %1 failed.").arg(fi.baseName()));
+            return 0;
+    }
+    else{
+        //create destination document proxy
+        //fill metadata and save
+        UBDocumentProxy* destDocument = new UBDocumentProxy(UBPersistenceManager::persistenceManager()->generateUniqueDocumentPath());
+        QDir dir;
+        dir.mkdir(destDocument->persistencePath());
+        if (pGroup.length() > 0)
+            destDocument->setMetaData(UBSettings::documentGroupName, pGroup);
+        if (fi.baseName() > 0)
+            destDocument->setMetaData(UBSettings::documentName, fi.baseName());
+
+        destDocument->setMetaData(UBSettings::documentVersion, UBSettings::currentFileVersion);
+        destDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+
+        UBDocumentProxy* newDocument = NULL;
+        //try to import cff to document
+        if (UBCFFSubsetAdaptor::ConvertCFFFileToUbz(contentFile, destDocument))
+        {
+            newDocument = UBPersistenceManager::persistenceManager()->createDocumentFromDir(destDocument->persistencePath()
+                                                                                            ,""
+                                                                                            ,""
+                                                                                            ,false
+                                                                                            ,false
+                                                                                            ,true);
+
+            UBApplication::showMessage(tr("Import successful."));
+        }
+        else
+        {
+            UBFileSystemUtils::deleteDir(destDocument->persistencePath());
+            UBApplication::showMessage(tr("Import failed."));
+        }
+        delete destDocument;
+
+        if (documentRootFolder.length() != 0)
+            UBFileSystemUtils::deleteDir(documentRootFolder);
+        return newDocument;
+    }
+}
diff --git a/Sankore-3.1/src/adaptors/UBImportCFF.h b/Sankore-3.1/src/adaptors/UBImportCFF.h
index f3bd163..d06b9d1 100644
--- a/Sankore-3.1/src/adaptors/UBImportCFF.h
+++ b/Sankore-3.1/src/adaptors/UBImportCFF.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,32 +18,33 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBIMPORTCFF_H
-#define UBIMPORTCFF_H
-
-#include <QtGui>
-#include "UBImportAdaptor.h"
-
-class UBDocumentProxy;
-
-class UBImportCFF : public UBDocumentBasedImportAdaptor
-{
-    Q_OBJECT;
-
-    public:
-        UBImportCFF(QObject *parent = 0);
-        virtual ~UBImportCFF();
-
-        virtual QStringList supportedExtentions();
-        virtual QString importFileFilter();
-
-        virtual bool addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile);
-        virtual UBDocumentProxy* importFile(const QFile& pFile, const QString& pGroup);
-
-    private:
-        QString expandFileToDir(const QFile& pZipFile, const QString& pDir);
-};
-
-#endif // UBIMPORTCFF_H
+
+
+
+#ifndef UBIMPORTCFF_H
+#define UBIMPORTCFF_H
+
+#include <QtGui>
+#include "UBImportAdaptor.h"
+
+class UBDocumentProxy;
+
+class UBImportCFF : public UBDocumentBasedImportAdaptor
+{
+    Q_OBJECT;
+
+    public:
+        UBImportCFF(QObject *parent = 0);
+        virtual ~UBImportCFF();
+
+        virtual QStringList supportedExtentions();
+        virtual QString importFileFilter();
+
+        virtual bool addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile);
+        virtual UBDocumentProxy* importFile(const QFile& pFile, const QString& pGroup);
+
+    private:
+        QString expandFileToDir(const QFile& pZipFile, const QString& pDir);
+};
+
+#endif // UBIMPORTCFF_H
diff --git a/Sankore-3.1/src/adaptors/UBImportDocument.cpp b/Sankore-3.1/src/adaptors/UBImportDocument.cpp
index aa03fff..d5dbb4a 100644
--- a/Sankore-3.1/src/adaptors/UBImportDocument.cpp
+++ b/Sankore-3.1/src/adaptors/UBImportDocument.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBImportDocument.h"
 #include "document/UBDocumentProxy.h"
 
@@ -182,7 +183,12 @@ UBDocumentProxy* UBImportDocument::importFile(const QFile& pFile, const QString&
     if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool() && !QFile(documentRootFolder+"/page000.svg").exists())
         addTitlePage=true;
 
-    UBDocumentProxy* newDocument = UBPersistenceManager::persistenceManager()->createDocumentFromDir(documentRootFolder, pGroup, "", false, addTitlePage);
+    UBDocumentProxy* newDocument = UBPersistenceManager::persistenceManager()->createDocumentFromDir(documentRootFolder
+                                                                                                     , pGroup
+                                                                                                     , ""
+                                                                                                     , false
+                                                                                                     , addTitlePage
+                                                                                                     , true);
 	UBApplication::showMessage(tr("Import successful."));
 	return newDocument;
 }
diff --git a/Sankore-3.1/src/adaptors/UBImportDocument.h b/Sankore-3.1/src/adaptors/UBImportDocument.h
index 7b223f8..8ac246f 100644
--- a/Sankore-3.1/src/adaptors/UBImportDocument.h
+++ b/Sankore-3.1/src/adaptors/UBImportDocument.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBIMPORTDOCUMENT_H_
 #define UBIMPORTDOCUMENT_H_
 
diff --git a/Sankore-3.1/src/adaptors/UBImportDocumentSetAdaptor.cpp b/Sankore-3.1/src/adaptors/UBImportDocumentSetAdaptor.cpp
new file mode 100644
index 0000000..5488805
--- /dev/null
+++ b/Sankore-3.1/src/adaptors/UBImportDocumentSetAdaptor.cpp
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "UBImportDocumentSetAdaptor.h"
+
+#include "document/UBDocumentProxy.h"
+
+#include "frameworks/UBFileSystemUtils.h"
+
+#include "core/UBApplication.h"
+#include "core/UBSettings.h"
+#include "core/UBPersistenceManager.h"
+
+#include "globals/UBGlobals.h"
+
+THIRD_PARTY_WARNINGS_DISABLE
+#include "quazip.h"
+#include "quazipfile.h"
+#include "quazipfileinfo.h"
+THIRD_PARTY_WARNINGS_ENABLE
+
+#include "core/memcheck.h"
+
+UBImportDocumentSetAdaptor::UBImportDocumentSetAdaptor(QObject *parent)
+    :UBImportAdaptor(parent)
+{
+    // NOOP
+}
+
+UBImportDocumentSetAdaptor::~UBImportDocumentSetAdaptor()
+{
+    // NOOP
+}
+
+
+QStringList UBImportDocumentSetAdaptor::supportedExtentions()
+{
+    return QStringList("ubx");
+}
+
+
+QString UBImportDocumentSetAdaptor::importFileFilter()
+{
+    return tr("Open-Sankore (set of documents) (*.ubx)");
+}
+
+QFileInfoList UBImportDocumentSetAdaptor::importData(const QString &zipFile, const QString &destination)
+{
+    //Create tmp directory to extract data, will be deleted after
+    QString tmpDir;
+    int i = 0;
+    QFileInfoList result;
+    do {
+      tmpDir = QDir::tempPath() + "/Sankore_tmpImportUBX_" + QString::number(i++);
+    } while (QFileInfo(tmpDir).exists());
+
+    QDir(QDir::tempPath()).mkdir(tmpDir);
+
+    QFile fZipFile(zipFile);
+
+    if (!extractFileToDir(fZipFile, tmpDir)) {
+        UBFileSystemUtils::deleteDir(tmpDir);
+        return QFileInfoList();
+    }
+
+    QDir tDir(tmpDir);
+
+    foreach(QFileInfo readDir, tDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden , QDir::Name)) {
+        QString newFileName = readDir.fileName();
+        if (QFileInfo(destination + "/" + readDir.fileName()).exists()) {
+            newFileName = QFileInfo(UBPersistenceManager::persistenceManager()->generateUniqueDocumentPath(tmpDir)).fileName();
+        }
+        QString newFilePath = destination + "/" + newFileName;
+        if (UBFileSystemUtils::copy(readDir.absoluteFilePath(), newFilePath)) {
+            result.append(newFilePath);
+        }
+    }
+
+    UBFileSystemUtils::deleteDir(tmpDir);
+
+    return result;
+}
+
+
+bool UBImportDocumentSetAdaptor::extractFileToDir(const QFile& pZipFile, const QString& pDir)
+{
+    QDir rootDir(pDir);
+    QuaZip zip(pZipFile.fileName());
+
+    if(!zip.open(QuaZip::mdUnzip))
+    {
+        qWarning() << "Import failed. Cause zip.open(): " << zip.getZipError();
+        return false;
+    }
+
+    zip.setFileNameCodec("UTF-8");
+    QuaZipFileInfo info;
+    QuaZipFile file(&zip);
+
+    QFile out;
+    char c;
+
+    QString documentRoot = QFileInfo(pDir).absoluteFilePath();
+    for(bool more=zip.goToFirstFile(); more; more=zip.goToNextFile())
+    {
+        if(!zip.getCurrentFileInfo(&info))
+        {
+            //TOD UB 4.3 O display error to user or use crash reporter
+            qWarning() << "Import failed. Cause: getCurrentFileInfo(): " << zip.getZipError();
+            return false;
+        }
+
+        if(!file.open(QIODevice::ReadOnly))
+        {
+            qWarning() << "Import failed. Cause: file.open(): " << zip.getZipError();
+            return false;
+        }
+
+        if(file.getZipError()!= UNZ_OK)
+        {
+            qWarning() << "Import failed. Cause: file.getFileName(): " << zip.getZipError();
+            return false;
+        }
+
+        QString actFileName = file.getActualFileName();
+//        int ind = actFileName.indexOf("/");
+//        if ( ind!= -1) {
+//            actFileName.remove(0, ind + 1);
+//        }
+        QString newFileName = documentRoot + "/" + actFileName;
+        QFileInfo newFileInfo(newFileName);
+        if (!rootDir.mkpath(newFileInfo.absolutePath()))
+            return false;
+
+        out.setFileName(newFileName);
+        if (!out.open(QIODevice::WriteOnly))
+            return false;
+
+        // Slow like hell (on GNU/Linux at least), but it is not my fault.
+        // Not ZIP/UNZIP package's fault either.
+        // The slowest thing here is out.putChar(c).
+        QByteArray outFileContent = file.readAll();
+        if (out.write(outFileContent) == -1)
+        {
+            qWarning() << "Import failed. Cause: Unable to write file";
+            out.close();
+            return false;
+        }
+
+        while(file.getChar(&c))
+            out.putChar(c);
+
+        out.close();
+
+        if(file.getZipError()!=UNZ_OK)
+        {
+            qWarning() << "Import failed. Cause: " << zip.getZipError();
+            return false;
+        }
+
+        if(!file.atEnd())
+        {
+            qWarning() << "Import failed. Cause: read all but not EOF";
+            return false;
+        }
+
+        file.close();
+
+        if(file.getZipError()!=UNZ_OK)
+        {
+            qWarning() << "Import failed. Cause: file.close(): " <<  file.getZipError();
+            return false;
+        }
+
+    }
+
+    zip.close();
+
+    if(zip.getZipError()!=UNZ_OK)
+    {
+      qWarning() << "Import failed. Cause: zip.close(): " << zip.getZipError();
+      return false;
+    }
+
+    return true;
+}
diff --git a/Sankore-3.1/src/adaptors/UBImportDocumentSetAdaptor.h b/Sankore-3.1/src/adaptors/UBImportDocumentSetAdaptor.h
new file mode 100644
index 0000000..7e07cfc
--- /dev/null
+++ b/Sankore-3.1/src/adaptors/UBImportDocumentSetAdaptor.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef UBIMPORTDOCUMENTSETADAPTOR_H
+#define UBIMPORTDOCUMENTSETADAPTOR_H
+
+#include <QtGui>
+#include "UBImportAdaptor.h"
+
+class UBDocumentProxy;
+
+class UBImportDocumentSetAdaptor : public UBImportAdaptor
+{
+    Q_OBJECT
+
+    public:
+        UBImportDocumentSetAdaptor(QObject *parent = 0);
+        virtual ~UBImportDocumentSetAdaptor();
+
+        virtual QStringList supportedExtentions();
+        virtual QString importFileFilter();
+
+        QFileInfoList importData(const QString &zipFile, const QString &destination);
+
+//        virtual UBDocumentProxy* importFile(const QFile& pFile, const QString& pGroup);
+//        virtual bool addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile);
+
+    private:
+        bool extractFileToDir(const QFile& pZipFile, const QString& pDir);
+
+};
+
+#endif // UBIMPORTDOCUMENTSETADAPTOR_H
diff --git a/Sankore-3.1/src/adaptors/UBImportImage.cpp b/Sankore-3.1/src/adaptors/UBImportImage.cpp
index 697b906..ce0648e 100644
--- a/Sankore-3.1/src/adaptors/UBImportImage.cpp
+++ b/Sankore-3.1/src/adaptors/UBImportImage.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBImportImage.h"
 
 #include "document/UBDocumentProxy.h"
diff --git a/Sankore-3.1/src/adaptors/UBImportImage.h b/Sankore-3.1/src/adaptors/UBImportImage.h
index 8706ff4..c727308 100644
--- a/Sankore-3.1/src/adaptors/UBImportImage.h
+++ b/Sankore-3.1/src/adaptors/UBImportImage.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBIMPORTIMAGE_H_
 #define UBIMPORTIMAGE_H_
 
diff --git a/Sankore-3.1/src/adaptors/UBImportPDF.cpp b/Sankore-3.1/src/adaptors/UBImportPDF.cpp
index c73405d..552b2b8 100644
--- a/Sankore-3.1/src/adaptors/UBImportPDF.cpp
+++ b/Sankore-3.1/src/adaptors/UBImportPDF.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBImportPDF.h"
 
 #include "document/UBDocumentProxy.h"
diff --git a/Sankore-3.1/src/adaptors/UBImportPDF.h b/Sankore-3.1/src/adaptors/UBImportPDF.h
index 9b2f7b0..7b1bbbd 100644
--- a/Sankore-3.1/src/adaptors/UBImportPDF.h
+++ b/Sankore-3.1/src/adaptors/UBImportPDF.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBIMPORTPDF_H_
 #define UBIMPORTPDF_H_
 
diff --git a/Sankore-3.1/src/adaptors/UBImportVirtualPrinter.cpp b/Sankore-3.1/src/adaptors/UBImportVirtualPrinter.cpp
index 94ea9d2..0cfd2b1 100644
--- a/Sankore-3.1/src/adaptors/UBImportVirtualPrinter.cpp
+++ b/Sankore-3.1/src/adaptors/UBImportVirtualPrinter.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
diff --git a/Sankore-3.1/src/adaptors/UBIniFileParser.cpp b/Sankore-3.1/src/adaptors/UBIniFileParser.cpp
index be33bd5..67e2bf3 100644
--- a/Sankore-3.1/src/adaptors/UBIniFileParser.cpp
+++ b/Sankore-3.1/src/adaptors/UBIniFileParser.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBIniFileParser.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/adaptors/UBIniFileParser.h b/Sankore-3.1/src/adaptors/UBIniFileParser.h
index c43e4b5..b60178a 100644
--- a/Sankore-3.1/src/adaptors/UBIniFileParser.h
+++ b/Sankore-3.1/src/adaptors/UBIniFileParser.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBINIFILEPARSER_H_
 #define UBINIFILEPARSER_H_
 
diff --git a/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.cpp b/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.cpp
index cf7ee3c..c857801 100644
--- a/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.cpp
+++ b/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBMetadataDcSubsetAdaptor.h"
 
 #include <QtGui>
@@ -80,7 +81,8 @@ void UBMetadataDcSubsetAdaptor::persist(UBDocumentProxy* proxy)
         return;
     }
     QString fileName = proxy->persistencePath() + "/" + metadataFilename;
-    qWarning() << fileName;
+    qDebug() << "persisting metadata to" << fileName;
+
     QFile file(fileName);
     if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate))
     {
diff --git a/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.h b/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.h
index 40b7b45..303c8f3 100644
--- a/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.h
+++ b/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBMETADATADCSUBSETADAPTOR_H_
 #define UBMETADATADCSUBSETADAPTOR_H_
 
diff --git a/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.cpp b/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.cpp
index 9cd8310..14749c5 100644
--- a/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.cpp
+++ b/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBSvgSubsetAdaptor.h"
 
 #include <QtCore>
@@ -37,6 +38,7 @@
 #include "domain/UBGraphicsStroke.h"
 #include "domain/UBGraphicsStrokesGroup.h"
 #include "domain/UBGraphicsGroupContainerItem.h"
+#include "domain/UBGraphicsGroupContainerItemDelegate.h"
 #include "domain/UBItem.h"
 
 #include "tools/UBGraphicsRuler.h"
@@ -71,6 +73,8 @@
 
 #include "pdf/PDFRenderer.h"
 
+#include "customWidgets/UBGraphicsItemAction.h"
+
 #include "core/memcheck.h"
 //#include "qtlogger.h"
 
@@ -247,7 +251,7 @@ QString UBSvgSubsetAdaptor::uniboardDocumentNamespaceUriFromVersion(int mFileVer
 UBGraphicsScene* UBSvgSubsetAdaptor::loadScene(UBDocumentProxy* proxy, const int pageIndex)
 {
     QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", pageIndex);
-    qDebug() << fileName;
+    qDebug() << "loading scene from" << fileName;
     QFile file(fileName);
 
     if (file.exists())
@@ -551,6 +555,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
             {
                 UBGraphicsPolygonItem* polygonItem = 0;
 
+                QString parentId = mXmlReader.attributes().value(mNamespaceUri, "parent").toString();
                 if (mXmlReader.name() == "polygon")
                 {
                     polygonItem = polygonItemFromPolygonSvg(mScene->isDarkBackground() ? Qt::white : Qt::black);
@@ -559,11 +564,13 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                 {
                     polygonItem = polygonItemFromLineSvg(mScene->isDarkBackground() ? Qt::white : Qt::black);
                 }
+                if(parentId.isEmpty() && strokesGroup)
+                    parentId = strokesGroup->uuid().toString();
+
+                Q_ASSERT(!parentId.isEmpty());
 
                 if (polygonItem)
                 {
-                    mScene->addItem(polygonItem);
-
                     polygonItem->setUuid(uuidFromSvg);
 
                     if (annotationGroup)
@@ -580,7 +587,21 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
 
                     polygonItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Graphic));
 
+                    UBGraphicsStrokesGroup* group;
+                    if(!mStrokesGroupList.contains(parentId)){
+                        group = new UBGraphicsStrokesGroup();
+                        mStrokesGroupList.insert(parentId,group);
+                        group->Delegate()->setAction(readAction());
+                        mStrokeList.insert(parentId,new UBGraphicsStroke);
+                    }
+                    else
+                        group = mStrokesGroupList.value(parentId);
+
                     polygonItem->show();
+                    polygonItem->setStrokesGroup(group);
+                    polygonItem->setStroke(mStrokeList.value(parentId));
+                    group->addToGroup(polygonItem);
+
                 }
             }
             else if (mXmlReader.name() == "polyline")
@@ -955,7 +976,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                 currentWidget->setDatastoreEntry(key, value);
             } else if (mXmlReader.name() == tGroups) {
                 //considering groups section at the end of the document
-
                 readGroupRoot();
             }
             else
@@ -967,10 +987,9 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
         {
             if (mXmlReader.name() == "g")
             {
-                if(strokesGroup && mScene){
-                    mScene->addItem(strokesGroup);
-                    //graphicsItemFromSvg(strokesGroup);
-                }
+//                if(strokesGroup && mScene){
+//                    mScene->addItem(strokesGroup);
+//                }
 
                 if (annotationGroup)
                 {
@@ -989,14 +1008,18 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
         qWarning() << "error parsing Sankore file " << mXmlReader.errorString();
     }
 
-    if (mScene) {
-        mScene->setModified(false);
+    QMapIterator<QString, UBGraphicsStrokesGroup*> iterator(mStrokesGroupList);
+    while (iterator.hasNext()) {
+        iterator.next();
+        mScene->addItem(iterator.value());
     }
 
-    if (annotationGroup)
-    {
-        if (annotationGroup->polygons().empty())
+    if (mScene)
+        mScene->setModified(false);
+
+    if (annotationGroup && annotationGroup->polygons().empty()){
             delete annotationGroup;
+            annotationGroup = 0;
     }
 
     mScene->enableUndoRedoStack();
@@ -1004,10 +1027,11 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
 }
 
 
-UBGraphicsGroupContainerItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::readGroup()
+UBGraphicsGroupContainerItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::readGroup(UBGraphicsItemAction* action, QString uuid)
 {
+    bool isAnActionForStroke = false;
     UBGraphicsGroupContainerItem *group = new UBGraphicsGroupContainerItem();
-    QMultiMap<QString, UBGraphicsPolygonItem *> strokesGroupsContainer;
+//    QMultiMap<QString, UBGraphicsPolygonItem *> strokesGroupsContainer;
     QList<QGraphicsItem *> groupContainer;
 
     mXmlReader.readNext();
@@ -1016,81 +1040,89 @@ UBGraphicsGroupContainerItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::readGroup()
         if (mXmlReader.isEndElement()) {
             mXmlReader.readNext();
             break;
-        } else if (mXmlReader.isStartElement())
-        {
+        }
+        else if (mXmlReader.isStartElement()){
             if (mXmlReader.name() == tGroup)
             {
-                qDebug() << "came across the group id is" << mXmlReader.attributes().value(aId);
                 UBGraphicsGroupContainerItem *curGroup = readGroup();
                 if (curGroup)
                     groupContainer.append(curGroup);
                 else
-                    qDebug() << "this is an error";
+                    qDebug() << "this is an error if readGroup(UBGraphicsItemAction* action, QString uuid)";
             }
-            else if (mXmlReader.name() == tElement)
-            {
+            else if (mXmlReader.name() == tElement){
                 QString id = mXmlReader.attributes().value(aId).toString();
-                QString itemId  = id.right(QUuid().toString().size());
-                QString groupId = id.left(QUuid().toString().size());
+//                QString itemId  = id.right(QUuid().toString().size());
+//                QString groupId = id.left(QUuid().toString().size());
+
+//                if(groupId == uuid)
+                  if(id == uuid)
+                    isAnActionForStroke = true;
 
                 QGraphicsItem *curItem = readElementFromGroup();
 
-                UBGraphicsPolygonItem *curPolygon = qgraphicsitem_cast<UBGraphicsPolygonItem *>(curItem);
+//                UBGraphicsPolygonItem *curPolygon = qgraphicsitem_cast<UBGraphicsPolygonItem *>(curItem);
 
-                if (curPolygon && !groupId.isEmpty() && !itemId.isEmpty() && itemId != groupId)
-                {
-                    strokesGroupsContainer.insert(groupId, curPolygon);
-                }
-                else // item
-                {
-                    if(curItem)
+//                if (curPolygon && !groupId.isEmpty() && !itemId.isEmpty() && itemId != groupId)
+//                    strokesGroupsContainer.insert(groupId, curPolygon);
+//                else // item
+//                {
+                    if(curItem  && id.count("{") < 2)
                         groupContainer.append(curItem);
                     else
-                        qDebug() << "this is an error";
-                }
-            }else {
-                mXmlReader.skipCurrentElement();
+                        qDebug() << "this is an error if readGroup(UBGraphicsItemAction* action, QString uuid)";
+//                 }
             }
-        } else {
-            mXmlReader.readNext();
+            else
+                mXmlReader.skipCurrentElement();
         }
+        else
+            mXmlReader.readNext();
     }
 
-    foreach (QString key, strokesGroupsContainer.keys().toSet())
-    {
-        UBGraphicsStrokesGroup* pStrokesGroup = new UBGraphicsStrokesGroup();
-        UBGraphicsStroke *currentStroke = new UBGraphicsStroke();
-        foreach(UBGraphicsPolygonItem* poly, strokesGroupsContainer.values(key))
-        {
-            if (poly)
-            {
-                mScene->removeItem(poly);
-                mScene->removeItemFromDeletion(poly);
-                poly->setStrokesGroup(pStrokesGroup);
-                poly->setStroke(currentStroke);
-                pStrokesGroup->addToGroup(poly);
-            }
-        }
-        if (currentStroke->polygons().empty())
-            delete currentStroke;
+//    foreach (QString key, strokesGroupsContainer.keys().toSet())
+//    {
+//        UBGraphicsStrokesGroup* pStrokesGroup = new UBGraphicsStrokesGroup();
+//        if(action && isAnActionForStroke)
+//            pStrokesGroup->Delegate()->setAction(action);
+//        UBGraphicsStroke *currentStroke = new UBGraphicsStroke();
+//        foreach(UBGraphicsPolygonItem* poly, strokesGroupsContainer.values(key))
+//        {
+//            if (poly)
+//            {
+//                mScene->removeItem(poly);
+//                mScene->removeItemFromDeletion(poly);
+//                poly->setStrokesGroup(pStrokesGroup);
+//                poly->setStroke(currentStroke);
+//                pStrokesGroup->addToGroup(poly);
+//            }
+//        }
+//        if (currentStroke->polygons().empty())
+//            delete currentStroke;
+
+//        if (pStrokesGroup->childItems().count())
+//            mScene->addItem(pStrokesGroup);
+//        else
+//            delete pStrokesGroup;
+
+//        if (pStrokesGroup)
+//        {
+//            QGraphicsItem *strokeGroup = qgraphicsitem_cast<QGraphicsItem *>(pStrokesGroup);
+//            if(strokeGroup)
+//                groupContainer.append(strokeGroup);
+//            else
+//                qDebug() << "this is an error";
+//        }
+//    }
 
-        if (pStrokesGroup->childItems().count())
-            mScene->addItem(pStrokesGroup);
-        else
-            delete pStrokesGroup;
+    foreach(QGraphicsItem* item, groupContainer)
+        group->addToGroup(item,false);
 
-        if (pStrokesGroup)
-        {
-            QGraphicsItem *strokeGroup = qgraphicsitem_cast<QGraphicsItem *>(pStrokesGroup);
-            if(strokeGroup)
-                groupContainer.append(strokeGroup);
-            else
-                qDebug() << "this is an error";
-        }
+    if(action && !isAnActionForStroke){
+        UBGraphicsGroupContainerItemDelegate* delegate = dynamic_cast<UBGraphicsGroupContainerItemDelegate*>(group->Delegate());
+        delegate->setAction(action);
     }
 
-    foreach(QGraphicsItem* item, groupContainer)
-        group->addToGroup(item);
 
     if (group->childItems().count())
     {
@@ -1111,16 +1143,22 @@ void UBSvgSubsetAdaptor::UBSvgSubsetReader::readGroupRoot()
         if (mXmlReader.isEndElement()) {
             mXmlReader.readNext();
             break;
-        } else if (mXmlReader.isStartElement()) {
-            if (mXmlReader.name() == tGroup) {
-               UBGraphicsGroupContainerItem *curGroup = readGroup();
-                if (curGroup) {
+        }
+        else if (mXmlReader.isStartElement()){
+            if (mXmlReader.name() == tGroup){
+                UBGraphicsItemAction* action = readAction();
+                UBGraphicsGroupContainerItem *curGroup = readGroup(action, mXmlReader.attributes().value("id").toString());
+                if (curGroup)
                     mScene->addGroup(curGroup);
-                }
-            }else {
+
+            }
+            else {
                 mXmlReader.skipCurrentElement();
+//                qDebug() << "skypped elements :" << mXmlReader.name();
             }
-        } else {
+        }
+        else {
+//            qDebug() << "read next " << mXmlReader.name();
             mXmlReader.readNext();
         }
     }
@@ -1134,7 +1172,9 @@ QGraphicsItem *UBSvgSubsetAdaptor::UBSvgSubsetReader::readElementFromGroup()
     result = mScene->itemForUuid(QUuid(uuid));
 
     if(!result)
-        qDebug() << "uuid " << uuid;
+        result = mStrokesGroupList.take(uuid.replace("}","").replace("{",""));
+
+    //Q_ASSERT(result);
 
     mXmlReader.skipCurrentElement();
     mXmlReader.readNext();
@@ -1237,39 +1277,17 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
 
             UBGraphicsStrokesGroup* strokesGroupItem = qgraphicsitem_cast<UBGraphicsStrokesGroup*>(item);
 
+            bool isFirstItem = true;
             if(strokesGroupItem && strokesGroupItem->isVisible()){
-                QDomElement newGroupElement;
-                if (!strokesGroupItem->parentItem() && strokesGroupItem->childItems().count()) {
-                    newGroupElement = groupDomDocument.createElement(tGroup);
-                    newGroupElement.setAttribute(aId, strokesGroupItem->uuid().toString());
-                    groupRoot.appendChild(newGroupElement);
-                }
-
-                //disabling g section parsing as a group of elements. Use groups refs instead
-//                mXmlWriter.writeStartElement("g");
-//                mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "uuid", UBStringUtils::toCanonicalUuid(strokesGroupItem->uuid()));
-//            	QMatrix matrix = item->sceneMatrix();
-//				if (!matrix.isIdentity()){
-//					mXmlWriter.writeAttribute("transform", toSvgTransform(matrix));
-//				}
-
                 // Add the polygons
                 foreach(QGraphicsItem* item, strokesGroupItem->childItems()){
-
                     UBGraphicsPolygonItem* poly = qgraphicsitem_cast<UBGraphicsPolygonItem*>(item);
                     if(NULL != poly){
-                        polygonItemToSvgPolygon(poly, true);
-                        if (!newGroupElement.isNull()) {
-                            QDomElement curPolygonElement = groupDomDocument.createElement(tElement);
-                            curPolygonElement.setAttribute(aId, strokesGroupItem->uuid().toString()
-                                                              + poly->uuid().toString());
-                            newGroupElement.appendChild(curPolygonElement);
-                        }
+                        polygonItemToSvgPolygon(poly, true, isFirstItem ? strokesGroupItem->Delegate()->action(): 0);
                         items.removeOne(poly);
+                        isFirstItem = false;
                     }
                 }
-
-//                mXmlWriter.writeEndElement(); //g
             }
 
             // Is the item a polygon?
@@ -1459,7 +1477,7 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
             UBGraphicsGroupContainerItem *groupItem = qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(item);
             if (groupItem && groupItem->isVisible())
             {
-                persistGroupToDom(groupItem, &groupRoot, &groupDomDocument);
+                persistGroupToDom(groupItem, &groupRoot, &groupDomDocument,groupItem->Delegate()->action());
                 continue;
             }
         }
@@ -1502,6 +1520,12 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
                 if (curElement.hasAttribute(aId)) {
                     mXmlWriter.writeStartElement(curElement.tagName());
                     mXmlWriter.writeAttribute(aId, curElement.attribute(aId));
+                    if(curElement.hasAttribute("actionType")){
+                        mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri,"actionType",curElement.attribute("actionType"));
+                        mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri,"actionFirstParameter",curElement.attribute("actionFirstParameter"));
+                        if(curElement.hasAttribute("actionSecondParameter"))
+                            mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri,"actionSecondParameter",curElement.attribute("actionSecondParameter"));
+                    }
                     QDomElement curSubElement = curElement.firstChildElement();
                     while (!curSubElement.isNull()) {
                         if (curSubElement.hasAttribute(aId)) {
@@ -1540,12 +1564,19 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
     return true;
 }
 
-void UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistGroupToDom(QGraphicsItem *groupItem, QDomElement *curParent, QDomDocument *groupDomDocument)
+void UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistGroupToDom(QGraphicsItem *groupItem, QDomElement *curParent, QDomDocument *groupDomDocument, UBGraphicsItemAction* action)
 {
     QUuid uuid = UBGraphicsScene::getPersonalUuid(groupItem);
     if (!uuid.isNull()) {
         QDomElement curGroupElement = groupDomDocument->createElement(tGroup);
         curGroupElement.setAttribute(aId, uuid);
+        if(action){
+            QStringList actionParameter = action->save();
+            curGroupElement.setAttribute("actionType",actionParameter.at(0));
+            curGroupElement.setAttribute("actionFirstParameter",actionParameter.at(1));
+            if(actionParameter.count() > 2)
+                curGroupElement.setAttribute("actionSecondParameter",actionParameter.at(2));
+        }
         curParent->appendChild(curGroupElement);
 
         foreach (QGraphicsItem *item, groupItem->childItems()) {
@@ -1553,14 +1584,16 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistGroupToDom(QGraphicsItem *gro
             if (!tmpUuid.isNull()) {
                 if (item->type() == UBGraphicsGroupContainerItem::Type && item->childItems().count()) {
                     persistGroupToDom(item, curParent, groupDomDocument);
-                } else if (item->type() == UBGraphicsStrokesGroup::Type) {
-                    foreach (QGraphicsItem *polygonItem, item->childItems()) {
-                        QDomElement curPolygonElement = groupDomDocument->createElement(tElement);
-                        curPolygonElement.setAttribute(aId, tmpUuid.toString()
-                                                          + UBGraphicsItem::getOwnUuid(polygonItem).toString());
-                        curGroupElement.appendChild(curPolygonElement);
-                    }
-                } else {
+                }
+//                else if (item->type() == UBGraphicsStrokesGroup::Type) {
+//                    foreach (QGraphicsItem *polygonItem, item->childItems()) {
+//                        QDomElement curPolygonElement = groupDomDocument->createElement(tElement);
+//                        curPolygonElement.setAttribute(aId, tmpUuid.toString()
+//                                                          + UBGraphicsItem::getOwnUuid(polygonItem).toString());
+//                        curGroupElement.appendChild(curPolygonElement);
+//                    }
+//                }
+                else {
                     QDomElement curSubElement = groupDomDocument->createElement(tElement);
 
                     curSubElement.setAttribute(aId, tmpUuid);
@@ -1571,27 +1604,6 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistGroupToDom(QGraphicsItem *gro
     }
 }
 
-void UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistStrokeToDom(QGraphicsItem *strokeItem, QDomElement *curParent, QDomDocument *curDomDocument)
-{
-    QUuid uuid = UBGraphicsScene::getPersonalUuid(strokeItem);
-    if (!uuid.isNull()) {
-        QDomElement curStrokesGroupElement = curDomDocument->createElement(tStrokeGroup);
-        curStrokesGroupElement.setAttribute(aId, uuid);
-        curParent->appendChild(curStrokesGroupElement);
-
-        foreach (QGraphicsItem *item, strokeItem->childItems()) {
-            QUuid tmpUuid = UBGraphicsScene::getPersonalUuid(item);
-            if (!tmpUuid.isNull()) {
-                if (item->type() == UBGraphicsPolygonItem::Type && item->childItems().count()) {
-                    QDomElement curSubElement = curDomDocument->createElement(tElement);
-                    curSubElement.setAttribute(aId, tmpUuid);
-                    curStrokesGroupElement.appendChild(curSubElement);
-                }
-            }
-        }
-    }
-}
-
 void UBSvgSubsetAdaptor::UBSvgSubsetWriter::polygonItemToSvgLine(UBGraphicsPolygonItem* polygonItem, bool groupHoldsInfo)
 {
     mXmlWriter.writeStartElement("line");
@@ -1699,7 +1711,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::strokeToSvgPolygon(UBGraphicsStroke*
     }
 }
 
-void UBSvgSubsetAdaptor::UBSvgSubsetWriter::polygonItemToSvgPolygon(UBGraphicsPolygonItem* polygonItem, bool groupHoldsInfo)
+void UBSvgSubsetAdaptor::UBSvgSubsetWriter::polygonItemToSvgPolygon(UBGraphicsPolygonItem* polygonItem, bool groupHoldsInfo, UBGraphicsItemAction* action)
 {
 
     QPolygonF polygon = polygonItem->polygon();
@@ -1744,6 +1756,10 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::polygonItemToSvgPolygon(UBGraphicsPo
                                       , "fill-on-light-background", polygonItem->colorOnLightBackground().name());
         }
 
+
+        if(action)
+            writeAction(action);
+
         mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "uuid", UBStringUtils::toCanonicalUuid(polygonItem->uuid()));
         if (polygonItem->parentItem()) {
             mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "parent", UBStringUtils::toCanonicalUuid(UBGraphicsItem::getOwnUuid(polygonItem->parentItem())));
@@ -2130,12 +2146,53 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::pixmapItemToLinkedImage(UBGraphicsPi
 
     mXmlWriter.writeAttribute(nsXLink, "href", fileName);
 
+    writeAction(pixmapItem->Delegate()->action());
     graphicsItemToSvg(pixmapItem);
 
     mXmlWriter.writeEndElement();
 }
 
 
+void UBSvgSubsetAdaptor::UBSvgSubsetWriter::writeAction(UBGraphicsItemAction* action)
+{
+    if(action){
+        QStringList actionParameters = action->save();
+        mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri,"actionType",actionParameters.at(0));
+        mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri,"actionFirstParameter",actionParameters.at(1));
+        if(actionParameters.count()>2)
+            mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri,"actionSecondParameter",actionParameters.at(2));
+    }
+}
+
+UBGraphicsItemAction* UBSvgSubsetAdaptor::UBSvgSubsetReader::readAction()
+{
+    UBGraphicsItemAction* result = 0;
+    QXmlStreamAttributes attributes = mXmlReader.attributes();
+    QStringRef actionParameters = attributes.value(UBSettings::uniboardDocumentNamespaceUri, "actionType");
+    if(actionParameters.isEmpty())
+        return result;
+    switch (actionParameters.toString().toInt()) {
+    case eLinkToAudio:
+        result = new UBGraphicsItemPlayAudioAction(attributes.value(UBSettings::uniboardDocumentNamespaceUri, "actionFirstParameter").toString(),false);
+        break;
+    case eLinkToPage:{
+        QString pageParameter = attributes.value(UBSettings::uniboardDocumentNamespaceUri, "actionSecondParameter").toString();
+        if(pageParameter.isEmpty())
+            result = new UBGraphicsItemMoveToPageAction((eUBGraphicsItemMovePageAction)attributes.value(UBSettings::uniboardDocumentNamespaceUri, "actionFirstParameter").toString().toInt());
+        else
+            result = new UBGraphicsItemMoveToPageAction((eUBGraphicsItemMovePageAction)attributes.value(UBSettings::uniboardDocumentNamespaceUri, "actionFirstParameter").toString().toInt(),pageParameter.toInt());
+        break;
+    }
+    case eLinkToWebUrl:
+        result = new UBGraphicsItemLinkToWebPageAction(mXmlReader.attributes().value(UBSettings::uniboardDocumentNamespaceUri, "actionFirstParameter").toString());
+        break;
+    default:
+        break;
+    }
+
+    return result;
+}
+
 UBGraphicsPixmapItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::pixmapItemFromSvg()
 {
 
@@ -2157,6 +2214,7 @@ UBGraphicsPixmapItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::pixmapItemFromSvg()
 
     graphicsItemFromSvg(pixmapItem);
 
+    pixmapItem->Delegate()->setAction(readAction());
     return pixmapItem;
 
 }
@@ -2188,6 +2246,8 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::svgItemToLinkedSvg(UBGraphicsSvgItem
 
     mXmlWriter.writeAttribute(nsXLink, "href", fileName);
 
+    writeAction(svgItem->Delegate()->action());
+
     graphicsItemToSvg(svgItem);
 
     mXmlWriter.writeEndElement();
@@ -2213,6 +2273,7 @@ UBGraphicsSvgItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::svgItemFromSvg()
     }
 
     graphicsItemFromSvg(svgItem);
+    svgItem->Delegate()->setAction(readAction());
 
     return svgItem;
 
@@ -2631,7 +2692,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::graphicsWidgetToSvg(UBGraphicsWidget
     }
 
     QString snapshotPath = mDocumentPath + "/" + UBPersistenceManager::widgetDirectory + "/" + uuid + ".png";
-    item->takeSnapshot().save(snapshotPath, "PNG");
+    item->snapshot().save(snapshotPath, "PNG");
 
     mXmlWriter.writeStartElement(nsXHtml, "iframe");
 
@@ -2765,6 +2826,8 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::textItemToSvg(UBGraphicsTextItem* it
     mXmlWriter.writeStartElement("foreignObject");
     mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "type", "text");
 
+    writeAction(item->Delegate()->action());
+
     graphicsItemToSvg(item);
 
     mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "width", QString("%1").arg(item->textWidth()));
@@ -2797,6 +2860,7 @@ UBGraphicsTextItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::textItemFromSvg()
     UBGraphicsTextItem* textItem = new UBGraphicsTextItem();
 
     graphicsItemFromSvg(textItem);
+    textItem->Delegate()->setAction(readAction());
 
     QStringRef ubFillOnDarkBackground = mXmlReader.attributes().value(mNamespaceUri, "fill-on-dark-background");
     QStringRef ubFillOnLightBackground = mXmlReader.attributes().value(mNamespaceUri, "fill-on-light-background");
@@ -3249,7 +3313,7 @@ UBGraphicsCache* UBSvgSubsetAdaptor::UBSvgSubsetReader::cacheFromSvg()
     QColor color(colorR.toString().toInt(), colorG.toString().toInt(), colorB.toString().toInt(), colorA.toString().toInt());
 
     pCache->setMaskColor(color);
-    pCache->setShapeWidth(shapeSize.toString().toInt());
+    pCache->setHoleWidth(shapeSize.toString().toInt());
     pCache->setMaskShape(static_cast<eMaskShape>(shape.toString().toInt()));
 
     pCache->setVisible(true);
@@ -3270,7 +3334,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::cacheToSvg(UBGraphicsCache* item)
     mXmlWriter.writeAttribute("colorB", QString("%1").arg(item->maskColor().blue()));
     mXmlWriter.writeAttribute("colorA", QString("%1").arg(item->maskColor().alpha()));
     mXmlWriter.writeAttribute("shape", QString("%1").arg(item->maskshape()));
-    mXmlWriter.writeAttribute("shapeSize", QString("%1").arg(item->shapeWidth()));
+    mXmlWriter.writeAttribute("shapeSize", QString("%1").arg(item->holeWidth()));
 
     QString zs;
     zs.setNum(item->zValue(), 'f'); // 'f' keeps precision
diff --git a/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.h b/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.h
index 7169523..d4457ca 100644
--- a/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.h
+++ b/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,246 +18,253 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBSVGSUBSETADAPTOR_H_
-#define UBSVGSUBSETADAPTOR_H_
-
-#include <QtGui>
-#include <QtXml>
-
-#include "frameworks/UBGeometryUtils.h"
-
-class UBGraphicsSvgItem;
-class UBGraphicsPolygonItem;
-class UBGraphicsPixmapItem;
-class UBGraphicsPDFItem;
-class UBGraphicsWidgetItem;
-class UBGraphicsMediaItem;
-class UBGraphicsAppleWidgetItem;
-class UBGraphicsW3CWidgetItem;
-class UBGraphicsTextItem;
-class UBGraphicsCurtainItem;
-class UBGraphicsRuler;
-class UBGraphicsCompass;
-class UBGraphicsProtractor;
-class UBGraphicsScene;
-class UBDocumentProxy;
-class UBGraphicsStroke;
-class UBPersistenceManager;
-class UBGraphicsTriangle;
-class UBGraphicsCache;
-class IDataStorage;
-class UBGraphicsGroupContainerItem;
-
-class UBSvgSubsetAdaptor
-{
-    private:
-
-        UBSvgSubsetAdaptor() {;}
-        virtual ~UBSvgSubsetAdaptor() {;}
-
-    public:
-
-        static UBGraphicsScene* loadScene(UBDocumentProxy* proxy, const int pageIndex);
-        static void persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, const int pageIndex);
-        static void upgradeScene(UBDocumentProxy* proxy, const int pageIndex);
-
-        static QUuid sceneUuid(UBDocumentProxy* proxy, const int pageIndex);
-        static void setSceneUuid(UBDocumentProxy* proxy, const int pageIndex, QUuid pUuid);
-
-        static bool addElementToBeStored(QString domName,IDataStorage* dataStorageClass);
-
-        static void convertPDFObjectsToImages(UBDocumentProxy* proxy);
-        static void convertSvgImagesToImages(UBDocumentProxy* proxy);
-
-        static QMap<QString,IDataStorage*> getAdditionalElementToStore() { return additionalElementToStore;}
-
-        static const QString nsSvg;
-        static const QString nsXLink;
-        static const QString nsXHtml;
-        static const QString nsUb;
-        static const QString xmlTrue;
-        static const QString xmlFalse;
-
-        static const QString sFontSizePrefix;
-        static const QString sPixelUnit;
-        static const QString sFontWeightPrefix;
-        static const QString sFontStylePrefix;
-
-        static QString readTeacherGuideNode(int sceneIndex);
-    private:
-
-        static UBGraphicsScene* loadScene(UBDocumentProxy* proxy, const QByteArray& pArray);
-
-        static QDomDocument loadSceneDocument(UBDocumentProxy* proxy, const int pPageIndex);
-
-        static QString uniboardDocumentNamespaceUriFromVersion(int fileVersion);
-
-        static const QString sFormerUniboardDocumentNamespaceUri;
-
-        static QString toSvgTransform(const QMatrix& matrix);
-        static QMatrix fromSvgTransform(const QString& transform);
-
-        static QMap<QString,IDataStorage*> additionalElementToStore;
-
-
-
-
-        class UBSvgSubsetReader
-        {
-            public:
-
-                UBSvgSubsetReader(UBDocumentProxy* proxy, const QByteArray& pXmlData);
-
-                virtual ~UBSvgSubsetReader(){}
-
-                UBGraphicsScene* loadScene();
-
-            private:
-
-                UBGraphicsPolygonItem* polygonItemFromLineSvg(const QColor& pDefaultBrushColor);
-
-                UBGraphicsPolygonItem* polygonItemFromPolygonSvg(const QColor& pDefaultBrushColor);
-
-                QList<UBGraphicsPolygonItem*> polygonItemsFromPolylineSvg(const QColor& pDefaultColor);
-
-                UBGraphicsPixmapItem* pixmapItemFromSvg();
-
-                UBGraphicsSvgItem* svgItemFromSvg();
-
-                UBGraphicsPDFItem* pdfItemFromPDF();
-
-                UBGraphicsMediaItem* videoItemFromSvg();
-
-                UBGraphicsMediaItem* audioItemFromSvg();
-
-                UBGraphicsAppleWidgetItem* graphicsAppleWidgetFromSvg();
-
-                UBGraphicsW3CWidgetItem* graphicsW3CWidgetFromSvg();
-
-                UBGraphicsTextItem* textItemFromSvg();
-
-                UBGraphicsCurtainItem* curtainItemFromSvg();
-
-                UBGraphicsRuler* rulerFromSvg();
-
-                UBGraphicsCompass* compassFromSvg();
-
-                UBGraphicsProtractor* protractorFromSvg();
-
-                UBGraphicsTriangle* triangleFromSvg();
-
-                UBGraphicsCache* cacheFromSvg();
-
-                void readGroupRoot();
-                QGraphicsItem *readElementFromGroup();
-                UBGraphicsGroupContainerItem* readGroup();
-
-                void graphicsItemFromSvg(QGraphicsItem* gItem);
-
-                qreal getZValueFromSvg();
-                QUuid getUuidFromSvg();
-
-                QXmlStreamReader mXmlReader;
-                int mFileVersion;
-                UBDocumentProxy *mProxy;
-                QString mDocumentPath;
-
-                QColor mGroupDarkBackgroundColor;
-                QColor mGroupLightBackgroundColor;
-                qreal mGroupZIndex;
-                bool mGroupHasInfo;
-
-                QString mNamespaceUri;
-                UBGraphicsScene *mScene;
-        };
-
-        class UBSvgSubsetWriter
-        {
-            public:
-
-                UBSvgSubsetWriter(UBDocumentProxy* proxy, UBGraphicsScene* pScene, const int pageIndex);
-
-                bool persistScene(int pageIndex);
-
-                virtual ~UBSvgSubsetWriter(){}
-
-            private:
-
-                void persistGroupToDom(QGraphicsItem *groupItem, QDomElement *curParent, QDomDocument *curDomDocument);
-                void persistStrokeToDom(QGraphicsItem *strokeItem, QDomElement *curParent, QDomDocument *curDomDocument);
-                void polygonItemToSvgPolygon(UBGraphicsPolygonItem* polygonItem, bool groupHoldsInfo);
-                void polygonItemToSvgLine(UBGraphicsPolygonItem* polygonItem, bool groupHoldsInfo);
-                void strokeToSvgPolyline(UBGraphicsStroke* stroke, bool groupHoldsInfo);
-                void strokeToSvgPolygon(UBGraphicsStroke* stroke, bool groupHoldsInfo);
-
-                inline QString pointsToSvgPointsAttribute(QVector<QPointF> points)
-                {
-                    UBGeometryUtils::crashPointList(points);
-
-                    int pointsCount = points.size();
-                    QString svgPoints;
-
-                    int length = 0;
-                    QString sBuf;
-
-                    for(int j = 0; j < pointsCount; j++)
-                    {
-                        sBuf = "%1,%2 ";
-                        const QPointF & point = points.at(j);
-
-                        QString temp1 =  "%1", temp2 = "%2";
-
-                        temp1 = temp1.arg(point.x());
-                        temp2 = temp2.arg(point.y());
-
-                        QLocale loc(QLocale::C);
-                        sBuf = sBuf.arg(loc.toFloat(temp1)).arg(loc.toFloat(temp2));
-
-                        svgPoints.insert(length, sBuf);
-                        length += sBuf.length();
-                    }
-                    return svgPoints;
-                }
-
-                inline qreal trickAlpha(qreal alpha)
-                {
-                        qreal trickAlpha = alpha;
-                        if(trickAlpha >= 0.2 && trickAlpha < 0.6){
-                                trickAlpha /= 5;
-                        }else if (trickAlpha < 0.8)
-                            trickAlpha /= 3;
-
-                        return trickAlpha;
-                }
-
-                void pixmapItemToLinkedImage(UBGraphicsPixmapItem *pixmapItem);
-                void svgItemToLinkedSvg(UBGraphicsSvgItem *svgItem);
-                void pdfItemToLinkedPDF(UBGraphicsPDFItem *pdfItem);
-                void videoItemToLinkedVideo(UBGraphicsMediaItem *videoItem);
-                void audioItemToLinkedAudio(UBGraphicsMediaItem *audioItem);
-                void graphicsItemToSvg(QGraphicsItem *item);
-                void graphicsAppleWidgetToSvg(UBGraphicsAppleWidgetItem *item);
-                void graphicsW3CWidgetToSvg(UBGraphicsW3CWidgetItem *item);
-                void graphicsWidgetToSvg(UBGraphicsWidgetItem *item);
-                void textItemToSvg(UBGraphicsTextItem *item);
-                void curtainItemToSvg(UBGraphicsCurtainItem *item);
-                void rulerToSvg(UBGraphicsRuler *item);
-                void compassToSvg(UBGraphicsCompass *item);
-                void protractorToSvg(UBGraphicsProtractor *item);
-                void cacheToSvg(UBGraphicsCache* item);
-                void triangleToSvg(UBGraphicsTriangle *item);
-                void writeSvgElement();
-
-        private:
-
-                UBGraphicsScene* mScene;
-                QXmlStreamWriter mXmlWriter;
-                QString mDocumentPath;
-                int mPageIndex;
-
-        };
-};
-
-#endif /* UBSVGSUBSETADAPTOR_H_ */
+
+
+
+#ifndef UBSVGSUBSETADAPTOR_H_
+#define UBSVGSUBSETADAPTOR_H_
+
+#include <QtGui>
+#include <QtXml>
+
+#include "frameworks/UBGeometryUtils.h"
+
+class UBGraphicsSvgItem;
+class UBGraphicsPolygonItem;
+class UBGraphicsPixmapItem;
+class UBGraphicsPDFItem;
+class UBGraphicsWidgetItem;
+class UBGraphicsMediaItem;
+class UBGraphicsAppleWidgetItem;
+class UBGraphicsW3CWidgetItem;
+class UBGraphicsTextItem;
+class UBGraphicsCurtainItem;
+class UBGraphicsRuler;
+class UBGraphicsCompass;
+class UBGraphicsProtractor;
+class UBGraphicsScene;
+class UBDocumentProxy;
+class UBGraphicsStroke;
+class UBPersistenceManager;
+class UBGraphicsTriangle;
+class UBGraphicsCache;
+class IDataStorage;
+class UBGraphicsGroupContainerItem;
+class UBGraphicsItemAction;
+class UBGraphicsStrokesGroup;
+
+class UBSvgSubsetAdaptor
+{
+    private:
+
+        UBSvgSubsetAdaptor() {;}
+        virtual ~UBSvgSubsetAdaptor() {;}
+
+    public:
+
+        static UBGraphicsScene* loadScene(UBDocumentProxy* proxy, const int pageIndex);
+        static void persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, const int pageIndex);
+        static void upgradeScene(UBDocumentProxy* proxy, const int pageIndex);
+
+        static QUuid sceneUuid(UBDocumentProxy* proxy, const int pageIndex);
+        static void setSceneUuid(UBDocumentProxy* proxy, const int pageIndex, QUuid pUuid);
+
+        static bool addElementToBeStored(QString domName,IDataStorage* dataStorageClass);
+
+        static void convertPDFObjectsToImages(UBDocumentProxy* proxy);
+        static void convertSvgImagesToImages(UBDocumentProxy* proxy);
+
+        static QMap<QString,IDataStorage*> getAdditionalElementToStore() { return additionalElementToStore;}
+
+        static const QString nsSvg;
+        static const QString nsXLink;
+        static const QString nsXHtml;
+        static const QString nsUb;
+        static const QString xmlTrue;
+        static const QString xmlFalse;
+
+        static const QString sFontSizePrefix;
+        static const QString sPixelUnit;
+        static const QString sFontWeightPrefix;
+        static const QString sFontStylePrefix;
+
+        static QString readTeacherGuideNode(int sceneIndex);
+    private:
+
+        static UBGraphicsScene* loadScene(UBDocumentProxy* proxy, const QByteArray& pArray);
+
+        static QDomDocument loadSceneDocument(UBDocumentProxy* proxy, const int pPageIndex);
+
+        static QString uniboardDocumentNamespaceUriFromVersion(int fileVersion);
+
+        static const QString sFormerUniboardDocumentNamespaceUri;
+
+        static QString toSvgTransform(const QMatrix& matrix);
+        static QMatrix fromSvgTransform(const QString& transform);
+
+        static QMap<QString,IDataStorage*> additionalElementToStore;
+
+
+
+
+        class UBSvgSubsetReader
+        {
+            public:
+
+                UBSvgSubsetReader(UBDocumentProxy* proxy, const QByteArray& pXmlData);
+
+                virtual ~UBSvgSubsetReader(){}
+
+                UBGraphicsScene* loadScene();
+
+            private:
+
+                UBGraphicsPolygonItem* polygonItemFromLineSvg(const QColor& pDefaultBrushColor);
+
+                UBGraphicsPolygonItem* polygonItemFromPolygonSvg(const QColor& pDefaultBrushColor);
+
+                QList<UBGraphicsPolygonItem*> polygonItemsFromPolylineSvg(const QColor& pDefaultColor);
+
+                UBGraphicsPixmapItem* pixmapItemFromSvg();
+
+                UBGraphicsSvgItem* svgItemFromSvg();
+
+                UBGraphicsPDFItem* pdfItemFromPDF();
+
+                UBGraphicsMediaItem* videoItemFromSvg();
+
+                UBGraphicsMediaItem* audioItemFromSvg();
+
+                UBGraphicsAppleWidgetItem* graphicsAppleWidgetFromSvg();
+
+                UBGraphicsW3CWidgetItem* graphicsW3CWidgetFromSvg();
+
+                UBGraphicsTextItem* textItemFromSvg();
+
+                UBGraphicsCurtainItem* curtainItemFromSvg();
+
+                UBGraphicsRuler* rulerFromSvg();
+
+                UBGraphicsCompass* compassFromSvg();
+
+                UBGraphicsProtractor* protractorFromSvg();
+
+                UBGraphicsTriangle* triangleFromSvg();
+
+                UBGraphicsCache* cacheFromSvg();
+
+                void readGroupRoot();
+                QGraphicsItem *readElementFromGroup();
+                UBGraphicsGroupContainerItem* readGroup(UBGraphicsItemAction *action = 0, QString uuid = "");
+
+                void graphicsItemFromSvg(QGraphicsItem* gItem);
+
+                qreal getZValueFromSvg();
+                QUuid getUuidFromSvg();
+
+                QXmlStreamReader mXmlReader;
+                int mFileVersion;
+                UBDocumentProxy *mProxy;
+                QString mDocumentPath;
+
+                QColor mGroupDarkBackgroundColor;
+                QColor mGroupLightBackgroundColor;
+                qreal mGroupZIndex;
+                bool mGroupHasInfo;
+
+                QString mNamespaceUri;
+                UBGraphicsScene *mScene;
+                UBGraphicsItemAction* readAction();
+                QMap<QString,UBGraphicsStrokesGroup*> mStrokesGroupList;
+                QMap<QString,UBGraphicsStroke*> mStrokeList;
+        };
+
+        class UBSvgSubsetWriter
+        {
+            public:
+
+                UBSvgSubsetWriter(UBDocumentProxy* proxy, UBGraphicsScene* pScene, const int pageIndex);
+
+                bool persistScene(int pageIndex);
+
+                virtual ~UBSvgSubsetWriter(){}
+
+            private:
+
+                void persistGroupToDom(QGraphicsItem *groupItem, QDomElement *curParent, QDomDocument *curDomDocument, UBGraphicsItemAction *action = 0);
+                void persistStrokeToDom(QGraphicsItem *strokeItem, QDomElement *curParent, QDomDocument *curDomDocument);
+                void polygonItemToSvgPolygon(UBGraphicsPolygonItem* polygonItem, bool groupHoldsInfo, UBGraphicsItemAction* action = 0);
+                void polygonItemToSvgLine(UBGraphicsPolygonItem* polygonItem, bool groupHoldsInfo);
+                void strokeToSvgPolyline(UBGraphicsStroke* stroke, bool groupHoldsInfo);
+                void strokeToSvgPolygon(UBGraphicsStroke* stroke, bool groupHoldsInfo);
+                void writeAction(UBGraphicsItemAction* action);
+
+                inline QString pointsToSvgPointsAttribute(QVector<QPointF> points)
+                {
+                    UBGeometryUtils::crashPointList(points);
+
+                    int pointsCount = points.size();
+                    QString svgPoints;
+
+                    int length = 0;
+                    QString sBuf;
+
+                    for(int j = 0; j < pointsCount; j++)
+                    {
+                        sBuf = "%1,%2 ";
+                        const QPointF & point = points.at(j);
+
+                        QString temp1 =  "%1", temp2 = "%2";
+
+                        temp1 = temp1.arg(point.x());
+                        temp2 = temp2.arg(point.y());
+
+                        QLocale loc(QLocale::C);
+                        sBuf = sBuf.arg(loc.toFloat(temp1)).arg(loc.toFloat(temp2));
+
+                        svgPoints.insert(length, sBuf);
+                        length += sBuf.length();
+                    }
+                    return svgPoints;
+                }
+
+                inline qreal trickAlpha(qreal alpha)
+                {
+                        qreal trickAlpha = alpha;
+                        if(trickAlpha >= 0.2 && trickAlpha < 0.6){
+                                trickAlpha /= 5;
+                        }else if (trickAlpha < 0.8)
+                            trickAlpha /= 3;
+
+                        return trickAlpha;
+                }
+
+                void pixmapItemToLinkedImage(UBGraphicsPixmapItem *pixmapItem);
+                void svgItemToLinkedSvg(UBGraphicsSvgItem *svgItem);
+                void pdfItemToLinkedPDF(UBGraphicsPDFItem *pdfItem);
+                void videoItemToLinkedVideo(UBGraphicsMediaItem *videoItem);
+                void audioItemToLinkedAudio(UBGraphicsMediaItem *audioItem);
+                void graphicsItemToSvg(QGraphicsItem *item);
+                void graphicsAppleWidgetToSvg(UBGraphicsAppleWidgetItem *item);
+                void graphicsW3CWidgetToSvg(UBGraphicsW3CWidgetItem *item);
+                void graphicsWidgetToSvg(UBGraphicsWidgetItem *item);
+                void textItemToSvg(UBGraphicsTextItem *item);
+                void curtainItemToSvg(UBGraphicsCurtainItem *item);
+                void rulerToSvg(UBGraphicsRuler *item);
+                void compassToSvg(UBGraphicsCompass *item);
+                void protractorToSvg(UBGraphicsProtractor *item);
+                void cacheToSvg(UBGraphicsCache* item);
+                void triangleToSvg(UBGraphicsTriangle *item);
+                void writeSvgElement();
+
+        private:
+
+                UBGraphicsScene* mScene;
+                QXmlStreamWriter mXmlWriter;
+                QString mDocumentPath;
+                int mPageIndex;
+
+        };
+};
+
+#endif /* UBSVGSUBSETADAPTOR_H_ */
diff --git a/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.cpp b/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.cpp
index 6a22155..0374e92 100644
--- a/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.cpp
+++ b/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,169 +18,175 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBThumbnailAdaptor.h"
-
-#include <QtCore>
-
-#include "frameworks/UBFileSystemUtils.h"
-
-#include "core/UBPersistenceManager.h"
-#include "core/UBApplication.h"
-#include "core/UBSettings.h"
-
-
-#include "gui/UBDockTeacherGuideWidget.h"
-#include "gui/UBTeacherGuideWidget.h"
-
-#include "board/UBBoardController.h"
-#include "board/UBBoardPaletteManager.h"
-
-#include "document/UBDocumentProxy.h"
-
-#include "domain/UBGraphicsScene.h"
-
-#include "UBSvgSubsetAdaptor.h"
-
-#include "core/memcheck.h"
-
-void UBThumbnailAdaptor::generateMissingThumbnails(UBDocumentProxy* proxy)
-{
-    int existingPageCount = proxy->pageCount();
-
-    for (int iPageNo = 0; iPageNo < existingPageCount; ++iPageNo)
-    {
-        QString thumbFileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", iPageNo);
-
-        QFile thumbFile(thumbFileName);
-
-        if (!thumbFile.exists())
-        {
-            bool displayMessage = (existingPageCount > 5);
-
-            int thumbCount = 0;
-
-            UBGraphicsScene* scene = UBSvgSubsetAdaptor::loadScene(proxy, iPageNo);
-
-            if (scene)
-            {
-                thumbCount++;
-
-                if (displayMessage && thumbCount == 1)
-                    UBApplication::showMessage(tr("Generating preview thumbnails ..."));
-
-                persistScene(proxy, scene, iPageNo);
-            }
-
-            if (displayMessage && thumbCount > 0)
-                UBApplication::showMessage(tr("%1 thumbnails generated ...").arg(thumbCount));
-
-        }
-    }
-}
-
-const QPixmap* UBThumbnailAdaptor::get(UBDocumentProxy* proxy, int pageIndex)
-{
-    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
-
-    QFile file(fileName);
-    if (!file.exists())
-    {
-        generateMissingThumbnails(proxy);
-    }
-
-    QPixmap* pix = new QPixmap();
-    if (file.exists())
-    {
-        //Warning. Works only with modified Qt
-#ifdef Q_WS_X11
-        pix->load(fileName, 0, Qt::AutoColor);
-#else
-        pix->load(fileName, 0, Qt::AutoColor, false);
-#endif
-    }
-    return pix;
-}
-
-void UBThumbnailAdaptor::updateDocumentToHandleZeroPage(UBDocumentProxy* proxy)
-{
-    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()){
-    	QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", 0);
-    	QFile file(fileName);
-    	if(!file.exists()){
-    		UBPersistenceManager::persistenceManager()->persistDocumentScene(proxy,new UBGraphicsScene(proxy),0);
-    	}
-    }
-}
-
-void UBThumbnailAdaptor::load(UBDocumentProxy* proxy, QList<const QPixmap*>& list)
-{
-    updateDocumentToHandleZeroPage(proxy);
-	generateMissingThumbnails(proxy);
-
-    foreach(const QPixmap* pm, list)
-        delete pm;
-    list.clear();
-    for(int i=0; i<proxy->pageCount(); i++)
-        list.append(get(proxy, i));
-}
-
-void UBThumbnailAdaptor::persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, int pageIndex, bool overrideModified)
-{
-    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
-
-    QFile thumbFile(fileName);
-
-    if (pScene->isModified() || overrideModified || !thumbFile.exists() || UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified())
-    {
-        qreal nominalWidth = pScene->nominalSize().width();
-        qreal nominalHeight = pScene->nominalSize().height();
-        qreal ratio = nominalWidth / nominalHeight;
-        QRectF sceneRect = pScene->normalizedSceneRect(ratio);
-
-        qreal width = UBSettings::maxThumbnailWidth;
-        qreal height = width / ratio;
-
-        QImage thumb(width, height, QImage::Format_ARGB32);
-
-        QRectF imageRect(0, 0, width, height);
-
-        QPainter painter(&thumb);
-        painter.setRenderHint(QPainter::Antialiasing, true);
-        painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
-
-        if (pScene->isDarkBackground())
-        {
-            painter.fillRect(imageRect, Qt::black);
-        }
-        else
-        {
-            painter.fillRect(imageRect, Qt::white);
-        }
-
-        pScene->setRenderingContext(UBGraphicsScene::NonScreen);
-        pScene->setRenderingQuality(UBItem::RenderingQualityHigh);
-
-        pScene->render(&painter, imageRect, sceneRect, Qt::KeepAspectRatio);
-
-        if(UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()){
-            QPixmap toque(":images/toque.svg");
-            painter.setOpacity(0.6);
-            painter.drawPixmap(QPoint(width - toque.width(),0),toque);
-        }
-
-        pScene->setRenderingContext(UBGraphicsScene::Screen);
-        pScene->setRenderingQuality(UBItem::RenderingQualityNormal);
-
-        thumb.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation).save(fileName, "JPG");
-    }
-}
-
-
-QUrl UBThumbnailAdaptor::thumbnailUrl(UBDocumentProxy* proxy, int pageIndex)
-{
-    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
-
-    return QUrl::fromLocalFile(fileName);
-}
+
+
+
+#include "UBThumbnailAdaptor.h"
+
+#include <QtCore>
+
+#include "frameworks/UBFileSystemUtils.h"
+
+#include "core/UBPersistenceManager.h"
+#include "core/UBApplication.h"
+#include "core/UBSettings.h"
+
+
+#include "gui/UBDockTeacherGuideWidget.h"
+#include "gui/UBTeacherGuideWidget.h"
+
+#include "board/UBBoardController.h"
+#include "board/UBBoardPaletteManager.h"
+
+#include "document/UBDocumentProxy.h"
+
+#include "domain/UBGraphicsScene.h"
+
+#include "UBSvgSubsetAdaptor.h"
+
+#include "core/memcheck.h"
+
+void UBThumbnailAdaptor::generateMissingThumbnails(UBDocumentProxy* proxy)
+{
+    int existingPageCount = proxy->pageCount();
+
+    for (int iPageNo = 0; iPageNo < existingPageCount; ++iPageNo)
+    {
+        QString thumbFileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", iPageNo);
+
+        QFile thumbFile(thumbFileName);
+
+        if (!thumbFile.exists())
+        {
+            bool displayMessage = (existingPageCount > 5);
+
+            int thumbCount = 0;
+
+            UBGraphicsScene* scene = UBSvgSubsetAdaptor::loadScene(proxy, iPageNo);
+
+            if (scene)
+            {
+                thumbCount++;
+
+                if (displayMessage && thumbCount == 1)
+                    UBApplication::showMessage(tr("Generating preview thumbnails ..."));
+
+                persistScene(proxy, scene, iPageNo);
+            }
+
+            if (displayMessage && thumbCount > 0)
+                UBApplication::showMessage(tr("%1 thumbnails generated ...").arg(thumbCount));
+
+        }
+    }
+}
+
+const QPixmap* UBThumbnailAdaptor::get(UBDocumentProxy* proxy, int pageIndex)
+{
+    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
+
+    QFile file(fileName);
+    if (!file.exists())
+    {
+        generateMissingThumbnails(proxy);
+    }
+
+    QPixmap* pix = new QPixmap();
+    if (file.exists())
+    {
+        //Warning. Works only with modified Qt
+#ifdef Q_WS_X11
+        pix->load(fileName, 0, Qt::AutoColor);
+#else
+        pix->load(fileName, 0, Qt::AutoColor, false);
+#endif
+    }
+    return pix;
+}
+
+void UBThumbnailAdaptor::updateDocumentToHandleZeroPage(UBDocumentProxy* proxy)
+{
+    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()){
+    	QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", 0);
+    	QFile file(fileName);
+    	if(!file.exists()){
+    		UBPersistenceManager::persistenceManager()->persistDocumentScene(proxy,new UBGraphicsScene(proxy),0);
+    	}
+    }
+}
+
+void UBThumbnailAdaptor::load(UBDocumentProxy* proxy, QList<const QPixmap*>& list)
+{
+    updateDocumentToHandleZeroPage(proxy);
+	generateMissingThumbnails(proxy);
+
+    foreach(const QPixmap* pm, list)
+        delete pm;
+    list.clear();
+    for(int i=0; proxy && i<proxy->pageCount(); i++)
+        list.append(get(proxy, i));
+}
+
+void UBThumbnailAdaptor::clearThumbs(QList<const QPixmap *> &list)
+{
+    foreach(const QPixmap* pm, list)
+        delete pm;
+    list.clear();
+}
+
+void UBThumbnailAdaptor::persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, int pageIndex, bool overrideModified)
+{
+    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
+
+    QFile thumbFile(fileName);
+
+    if (pScene->isModified() || overrideModified || !thumbFile.exists() || UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified())
+    {
+        qreal nominalWidth = pScene->nominalSize().width();
+        qreal nominalHeight = pScene->nominalSize().height();
+        qreal ratio = nominalWidth / nominalHeight;
+        QRectF sceneRect = pScene->normalizedSceneRect(ratio);
+
+        qreal width = UBSettings::maxThumbnailWidth;
+        qreal height = width / ratio;
+
+        QImage thumb(width, height, QImage::Format_ARGB32);
+
+        QRectF imageRect(0, 0, width, height);
+
+        QPainter painter(&thumb);
+        painter.setRenderHint(QPainter::Antialiasing, true);
+        painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
+
+        if (pScene->isDarkBackground())
+        {
+            painter.fillRect(imageRect, Qt::black);
+        }
+        else
+        {
+            painter.fillRect(imageRect, Qt::white);
+        }
+
+        pScene->setRenderingQuality(UBItem::RenderingQualityHigh);
+
+        pScene->render(&painter, imageRect, sceneRect, Qt::KeepAspectRatio);
+
+        if(UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()){
+            QPixmap toque(":images/toque.svg");
+            painter.setOpacity(0.6);
+            painter.drawPixmap(QPoint(width - toque.width(),0),toque);
+        }
+
+        pScene->setRenderingQuality(UBItem::RenderingQualityNormal);
+
+        thumb.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation).save(fileName, "JPG");
+    }
+}
+
+
+QUrl UBThumbnailAdaptor::thumbnailUrl(UBDocumentProxy* proxy, int pageIndex)
+{
+    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
+
+    return QUrl::fromLocalFile(fileName);
+}
diff --git a/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.h b/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.h
index 02008f6..5b07dbb 100644
--- a/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.h
+++ b/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,34 +18,36 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBTHUMBNAILADAPTOR_H
-#define UBTHUMBNAILADAPTOR_H
-
-#include <QtCore>
-
-class UBDocument;
-class UBDocumentProxy;
-class UBGraphicsScene;
-
-class UBThumbnailAdaptor //static class
-{
-	Q_DECLARE_TR_FUNCTIONS(UBThumbnailAdaptor)
-
-public:
-    static QUrl thumbnailUrl(UBDocumentProxy* proxy, int pageIndex);
-
-    static void persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, int pageIndex, bool overrideModified = false);
-
-    static const QPixmap* get(UBDocumentProxy* proxy, int index);
-    static void load(UBDocumentProxy* proxy, QList<const QPixmap*>& list);
-
-private:
-    static void generateMissingThumbnails(UBDocumentProxy* proxy);
-    static void updateDocumentToHandleZeroPage(UBDocumentProxy* proxy);
-
-    UBThumbnailAdaptor() {}
-};
-
-#endif // UBTHUMBNAILADAPTOR_H
+
+
+
+#ifndef UBTHUMBNAILADAPTOR_H
+#define UBTHUMBNAILADAPTOR_H
+
+#include <QtCore>
+
+class UBDocument;
+class UBDocumentProxy;
+class UBGraphicsScene;
+
+class UBThumbnailAdaptor //static class
+{
+	Q_DECLARE_TR_FUNCTIONS(UBThumbnailAdaptor)
+
+public:
+    static QUrl thumbnailUrl(UBDocumentProxy* proxy, int pageIndex);
+
+    static void persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, int pageIndex, bool overrideModified = false);
+
+    static const QPixmap* get(UBDocumentProxy* proxy, int index);
+    static void load(UBDocumentProxy* proxy, QList<const QPixmap*>& list);
+    static void clearThumbs(QList<const QPixmap*>& list);
+
+private:
+    static void generateMissingThumbnails(UBDocumentProxy* proxy);
+    static void updateDocumentToHandleZeroPage(UBDocumentProxy* proxy);
+
+    UBThumbnailAdaptor() {}
+};
+
+#endif // UBTHUMBNAILADAPTOR_H
diff --git a/Sankore-3.1/src/adaptors/UBWebPublisher.cpp b/Sankore-3.1/src/adaptors/UBWebPublisher.cpp
index 3b95e00..e779f14 100644
--- a/Sankore-3.1/src/adaptors/UBWebPublisher.cpp
+++ b/Sankore-3.1/src/adaptors/UBWebPublisher.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,9 +20,11 @@
  */
 
 
+
 #include "UBWebPublisher.h"
 
 #include "document/UBDocumentProxy.h"
+#include "document/UBDocumentController.h"
 
 #include "adaptors/publishing/UBDocumentPublisher.h"
 
@@ -63,4 +65,14 @@ void UBWebPublisher::persist(UBDocumentProxy* pDocumentProxy)
 
 }
 
+bool UBWebPublisher::associatedActionactionAvailableFor(const QModelIndex &selectedIndex)
+{
+    const UBDocumentTreeModel *docModel = qobject_cast<const UBDocumentTreeModel*>(selectedIndex.model());
+    if (!selectedIndex.isValid() || docModel->isCatalog(selectedIndex)) {
+        return false;
+    }
+
+    return true;
+}
+
 
diff --git a/Sankore-3.1/src/adaptors/UBWebPublisher.h b/Sankore-3.1/src/adaptors/UBWebPublisher.h
index f2a14aa..d2ac514 100644
--- a/Sankore-3.1/src/adaptors/UBWebPublisher.h
+++ b/Sankore-3.1/src/adaptors/UBWebPublisher.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWEBPUBLISHER_H_
 #define UBWEBPUBLISHER_H_
 
@@ -35,7 +36,7 @@ class UBServerXMLHttpRequest;
 
 class UBWebPublisher : public UBExportAdaptor
 {
-    Q_OBJECT;
+    Q_OBJECT
 
     public:
         UBWebPublisher(QObject *parent = 0);
@@ -44,6 +45,8 @@ class UBWebPublisher : public UBExportAdaptor
         virtual QString exportName();
 
         virtual void persist(UBDocumentProxy* pDocument);
+
+        virtual bool associatedActionactionAvailableFor(const QModelIndex &selectedIndex);
 };
 
 
diff --git a/Sankore-3.1/src/adaptors/adaptors.pri b/Sankore-3.1/src/adaptors/adaptors.pri
index 4fc92ce..8ad6460 100644
--- a/Sankore-3.1/src/adaptors/adaptors.pri
+++ b/Sankore-3.1/src/adaptors/adaptors.pri
@@ -15,12 +15,12 @@ HEADERS      += src/adaptors/UBExportAdaptor.h\
                 src/adaptors/UBWebPublisher.h \
                 src/adaptors/UBImportCFF.h \
                 src/adaptors/UBExportCFF.h \
-                src/adaptors/UBCFFSubsetAdaptor.h
+                src/adaptors/UBCFFSubsetAdaptor.h \
+                src/adaptors/UBExportDocumentSetAdaptor.h \
+    			src/adaptors/UBImportDocumentSetAdaptor.h
 
 HEADERS      += src/adaptors/publishing/UBDocumentPublisher.h \
                 src/adaptors/publishing/UBSvgSubsetRasterizer.h
-               
-
 
 SOURCES      += src/adaptors/UBExportAdaptor.cpp\
                 src/adaptors/UBExportPDF.cpp \
@@ -39,7 +39,9 @@ SOURCES      += src/adaptors/UBExportAdaptor.cpp\
                 src/adaptors/UBImportCFF.cpp \
                 src/adaptors/UBExportCFF.cpp \
                 src/adaptors/UBCFFSubsetAdaptor.cpp \
-    src/adaptors/publishing/UBDocumentPublisher.cpp
+                src/adaptors/publishing/UBDocumentPublisher.cpp \
+    			src/adaptors/UBExportDocumentSetAdaptor.cpp \
+    			src/adaptors/UBImportDocumentSetAdaptor.cpp
 
 SOURCES      += \
                 src/adaptors/publishing/UBSvgSubsetRasterizer.cpp
diff --git a/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.cpp b/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.cpp
index 59a2b18..2c91f86 100644
--- a/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.cpp
+++ b/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,813 +18,813 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include <QFileInfo>
-
-#include "UBDocumentPublisher.h"
-
-#include "frameworks/UBPlatformUtils.h"
-#include "frameworks/UBFileSystemUtils.h"
-#include "frameworks/UBStringUtils.h"
-
-#include "network/UBNetworkAccessManager.h"
-#include "network/UBServerXMLHttpRequest.h"
-
-#include "core/UBDocumentManager.h"
-#include "core/UBApplication.h"
-#include "core/UBPersistenceManager.h"
-#include "core/UBApplicationController.h"
-
-#include "board/UBBoardController.h"
-
-#include "gui/UBMainWindow.h"
-
-#include "document/UBDocumentProxy.h"
-#include "document/UBDocumentContainer.h"
-
-#include "domain/UBGraphicsWidgetItem.h"
-
-#include "globals/UBGlobals.h"
-
-THIRD_PARTY_WARNINGS_DISABLE
-#include "quazip.h"
-#include "quazipfile.h"
-THIRD_PARTY_WARNINGS_ENABLE
-
-#include "adaptors/UBExportFullPDF.h"
-#include "adaptors/UBExportDocument.h"
-#include "adaptors/UBSvgSubsetAdaptor.h"
-
-#include "UBSvgSubsetRasterizer.h"
-
-#include "../../core/UBApplication.h"
-
-#include "core/memcheck.h"
-
-
-UBDocumentPublisher::UBDocumentPublisher(UBDocumentProxy* pDocument, QObject *parent)
-        : QObject(parent)
-        , mSourceDocument(pDocument)
-        , mUsername("")
-        , mPassword("")
-        , bLoginCookieSet(false)
-{
-    init();
-}
-
-
-UBDocumentPublisher::~UBDocumentPublisher()
-{
-}
-
-
-void UBDocumentPublisher::publish()
-{
-            //check that the username and password are stored on preferences
-    UBSettings* settings = UBSettings::settings();
-
-    if(settings->communityUsername().isEmpty() || settings->communityPassword().isEmpty()){
-        UBApplication::showMessage(tr("Credentials has to not been filled out yet."));
-        qDebug() << "trying to connect to community without the required credentials";
-        return;
-    }
-
-    mUsername = settings->communityUsername();
-    mPassword = settings->communityPassword();
-
-    UBPublicationDlg dlg;
-    if(QDialog::Accepted == dlg.exec())
-    {
-        mDocInfos.title = dlg.title();
-        mDocInfos.description = dlg.description();
-
-        buildUbwFile();
-
-        UBApplication::showMessage(tr("Uploading Sankore File on Web."));
-
-        sendUbw(mUsername, mPassword);
-    }
-}
-
-void UBDocumentPublisher::buildUbwFile()
-{
-    QDir d;
-    d.mkpath(UBFileSystemUtils::defaultTempDirPath());
-
-    QString tmpDir = UBFileSystemUtils::createTempDir();
-
-    if (UBFileSystemUtils::copyDir(mSourceDocument->persistencePath(), tmpDir))
-    {
-        QString documentName = mSourceDocument->name();
-
-        mPublishingPath = tmpDir;
-        mPublishingSize = mSourceDocument->pageCount();
-
-        rasterizeScenes();
-
-        upgradeDocumentForPublishing();
-
-        UBExportFullPDF pdfExporter;
-        pdfExporter.setVerbode(false);
-        pdfExporter.persistsDocument(mSourceDocument, mPublishingPath + "/" + documentName + ".pdf");
-
-        UBExportDocument ubzExporter;
-        ubzExporter.setVerbode(false);
-        ubzExporter.persistsDocument(mSourceDocument, mPublishingPath + "/" + documentName + ".ubz");
-
-        // remove all useless files
-
-        for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++) {
-            QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.svg",pageIndex);
-
-            QFile::remove(filename);
-        }
-
-        UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::imageDirectory);
-        UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::objectDirectory);
-        UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::videoDirectory);
-        UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::audioDirectory);
-
-        mTmpZipFile = UBFileSystemUtils::defaultTempDirPath() + "/" + UBStringUtils::toCanonicalUuid(QUuid::createUuid()) + ".ubw~";
-
-        QuaZip zip(mTmpZipFile);
-        zip.setFileNameCodec("UTF-8");
-        if (!zip.open(QuaZip::mdCreate))
-        {
-            qWarning() << "Export failed. Cause: zip.open(): " << zip.getZipError() << "," << mTmpZipFile;
-            QApplication::restoreOverrideCursor();
-            return;
-        }
-
-        QuaZipFile outFile(&zip);
-
-        if (!UBFileSystemUtils::compressDirInZip(mPublishingPath, "", &outFile, true))
-        {
-            qWarning("Export failed. compressDirInZip failed ...");
-            zip.close();
-            UBApplication::showMessage(tr("Export failed."));
-            QApplication::restoreOverrideCursor();
-            return;
-        }
-
-        if (zip.getZipError() != 0)
-        {
-            qWarning("Export failed. Cause: zip.close(): %d", zip.getZipError());
-            zip.close();
-            UBApplication::showMessage(tr("Export failed."));
-            QApplication::restoreOverrideCursor();
-            return;
-        }
-
-        zip.close();
-
-    }
-    else
-    {
-        UBApplication::showMessage(tr("Export canceled ..."));
-        QApplication::restoreOverrideCursor();
-    }
-}
-
-void UBDocumentPublisher::rasterizeScenes()
-{
-
-    for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++)
-    {
-        UBApplication::showMessage(tr("Converting page %1/%2 ...").arg(UBDocumentContainer::pageFromSceneIndex(pageIndex)).arg(mPublishingSize), true);
-
-        UBDocumentProxy publishingDocument(mPublishingPath);
-        UBSvgSubsetRasterizer rasterizer(&publishingDocument, pageIndex);
-
-        QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.jpg",pageIndex);
-
-        rasterizer.rasterizeToFile(filename);
-
-    }
-}
-
-
-void UBDocumentPublisher::updateGoogleMapApiKey()
-{
-    QDir widgestDir(mPublishingPath + "/" + UBPersistenceManager::widgetDirectory);
-
-    QString uniboardWebGoogleMapApiKey = UBSettings::settings()->uniboardWebGoogleMapApiKey->get().toString();
-
-    foreach(QFileInfo dirInfo, widgestDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot))
-    {
-        QString config = UBFileSystemUtils::readTextFile(dirInfo.absoluteFilePath() + "/config.xml").toLower();
-
-        if (config.contains("google") && config.contains("map"))
-        {
-            QDir widgetDir(dirInfo.absoluteFilePath());
-
-            foreach(QFileInfo fileInfo, widgetDir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot))
-            {
-                QFile file(fileInfo.absoluteFilePath());
-
-                if (file.open(QIODevice::ReadWrite))
-                {
-                    QTextStream stream(&file);
-                    QString content = stream.readAll();
-
-                    if (content.contains("ABQIAAAA6vtVqAUu8kZ_eTz7c8kwSBT9UCAhw_xm0LNFHsWmQxTJAdp5lxSY_5r-lZriY_7sACaMnl80JcX6Og"))
-                    {
-                        content.replace("ABQIAAAA6vtVqAUu8kZ_eTz7c8kwSBT9UCAhw_xm0LNFHsWmQxTJAdp5lxSY_5r-lZriY_7sACaMnl80JcX6Og",
-                                        uniboardWebGoogleMapApiKey);
-
-                        file.resize(0);
-                        file.write(content.toUtf8());
-                    }
-                    file.close();
-                }
-            }
-        }
-    }
-}
-
-
-void UBDocumentPublisher::upgradeDocumentForPublishing()
-{
-    for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++)
-    {
-        UBDocumentProxy publishingDocument(mPublishingPath);
-        UBGraphicsScene *scene = UBSvgSubsetAdaptor::loadScene(&publishingDocument, pageIndex);
-
-        QList<UBGraphicsW3CWidgetItem*> widgets;
-
-        foreach(QGraphicsItem* item, scene->items()){
-            UBGraphicsW3CWidgetItem *widgetItem = dynamic_cast<UBGraphicsW3CWidgetItem*>(item);
-
-            if(widgetItem){
-                generateWidgetPropertyScript(widgetItem, UBDocumentContainer::pageFromSceneIndex(pageIndex));
-                widgets << widgetItem;
-            }
-        }
-
-        QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.json",pageIndex);
-
-        QFile jsonFile(filename);
-        if (jsonFile.open(QIODevice::WriteOnly | QIODevice::Truncate))
-        {
-            jsonFile.write("{\n");
-            jsonFile.write(QString("  \"scene\": {\n").toUtf8());
-            jsonFile.write(QString("    \"x\": %1,\n").arg(scene->normalizedSceneRect().x()).toUtf8());
-            jsonFile.write(QString("    \"y\": %1,\n").arg(scene->normalizedSceneRect().y()).toUtf8());
-            jsonFile.write(QString("    \"width\": %1,\n").arg(scene->normalizedSceneRect().width()).toUtf8());
-            jsonFile.write(QString("    \"height\": %1\n").arg(scene->normalizedSceneRect().height()).toUtf8());
-            jsonFile.write(QString("  },\n").toUtf8());
-
-            jsonFile.write(QString("  \"widgets\": [\n").toUtf8());
-
-            bool first = true;
-
-            foreach(UBGraphicsW3CWidgetItem* widget, widgets)
-            {
-                if (!first)
-                    jsonFile.write(QString("    ,\n").toUtf8());
-
-                jsonFile.write(QString("    {\n").toUtf8());
-                jsonFile.write(QString("      \"uuid\": \"%1\",\n").arg(UBStringUtils::toCanonicalUuid(widget->uuid())).toUtf8());
-                jsonFile.write(QString("      \"id\": \"%1\",\n").arg(widget->metadatas().id).toUtf8());
-
-                jsonFile.write(QString("      \"name\": \"%1\",\n").arg(widget->metadatas().name).toUtf8());
-                jsonFile.write(QString("      \"description\": \"%1\",\n").arg(widget->metadatas().description).toUtf8());
-                jsonFile.write(QString("      \"author\": \"%1\",\n").arg(widget->metadatas().author).toUtf8());
-                jsonFile.write(QString("      \"authorEmail\": \"%1\",\n").arg(widget->metadatas().authorEmail).toUtf8());
-                jsonFile.write(QString("      \"authorHref\": \"%1\",\n").arg(widget->metadatas().authorHref).toUtf8());
-                jsonFile.write(QString("      \"version\": \"%1\",\n").arg(widget->metadatas().authorHref).toUtf8());
-
-                jsonFile.write(QString("      \"x\": %1,\n").arg(widget->sceneBoundingRect().x()).toUtf8());
-                jsonFile.write(QString("      \"y\": %1,\n").arg(widget->sceneBoundingRect().y()).toUtf8());
-                jsonFile.write(QString("      \"width\": %1,\n").arg(widget->sceneBoundingRect().width()).toUtf8());
-                jsonFile.write(QString("      \"height\": %1,\n").arg(widget->sceneBoundingRect().height()).toUtf8());
-
-                jsonFile.write(QString("      \"nominalWidth\": %1,\n").arg(widget->boundingRect().width()).toUtf8());
-                jsonFile.write(QString("      \"nominalHeight\": %1,\n").arg(widget->boundingRect().height()).toUtf8());
-
-                QString url = UBPersistenceManager::widgetDirectory + "/" + widget->uuid().toString() + ".wgt";
-                jsonFile.write(QString("      \"src\": \"%1\",\n").arg(url).toUtf8());
-                QString startFile = widget->mainHtmlFileName();
-                jsonFile.write(QString("      \"startFile\": \"%1\",\n").arg(startFile).toUtf8());
-
-                QMap<QString, QString> preferences = widget->UBGraphicsWidgetItem::preferences();
-
-                jsonFile.write(QString("      \"preferences\": {\n").toUtf8());
-
-                foreach(QString key, preferences.keys())
-                {
-                    QString sep = ",";
-                    if (key == preferences.keys().last())
-                        sep = "";
-
-                    jsonFile.write(QString("          \"%1\": \"%2\"%3\n")
-                                   .arg(key)
-                                   .arg(preferences.value(key))
-                                   .arg(sep)
-                                   .toUtf8());
-                }
-                jsonFile.write(QString("      },\n").toUtf8());
-
-                jsonFile.write(QString("      \"datastore\": {\n").toUtf8());
-
-                QMap<QString, QString> datastoreEntries = widget->datastoreEntries();
-
-                foreach(QString entry, datastoreEntries.keys())
-                {
-                    QString sep = ",";
-                    if (entry == datastoreEntries.keys().last())
-                        sep = "";
-
-                    jsonFile.write(QString("          \"%1\": \"%2\"%3\n")
-                                   .arg(entry)
-                                   .arg(datastoreEntries.value(entry))
-                                   .arg(sep)
-                                   .toUtf8());
-                }
-                jsonFile.write(QString("      }\n").toUtf8());
-
-                jsonFile.write(QString("    }\n").toUtf8());
-
-                first = false;
-            }
-
-            jsonFile.write("  ]\n");
-            jsonFile.write("}\n");
-        }
-        else
-        {
-            qWarning() << "Cannot open file" << filename << "for saving page state";
-        }
-
-        delete scene;
-    }
-
-    updateGoogleMapApiKey();
-}
-
-
-void UBDocumentPublisher::generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *widgetItem, int pageNumber)
-{
-
-    QMap<QString, QString> preferences = widgetItem->UBGraphicsWidgetItem::preferences();
-    QMap<QString, QString> datastoreEntries = widgetItem->datastoreEntries();
-
-    QString startFileName = widgetItem->mainHtmlFileName();
-
-    if (!startFileName.startsWith("http://"))
-    {
-        QString startFilePath = mPublishingPath + "/" + UBPersistenceManager::widgetDirectory + "/" + widgetItem->uuid().toString() + ".wgt/" + startFileName;
-
-        QFile startFile(startFilePath);
-
-        if (startFile.exists())
-        {
-            if (startFile.open(QIODevice::ReadWrite))
-            {
-                QTextStream stream(&startFile);
-                QStringList lines;
-
-                bool addedJs = false;
-
-                QString line;
-                do
-                {
-                    line = stream.readLine();
-                    if (!line.isNull())
-                    {
-                        lines << line;
-
-                        if (!addedJs && line.contains("<head") && line.contains(">") )  // TODO UB 4.6, this is naive ... the HEAD tag may be on several lines
-                        {
-                            lines << "";
-                            lines << "  <script type=\"text/javascript\">";
-
-                            lines << "    var widget = {};";
-                            lines << "    widget.id = '" + widgetItem->metadatas().id + "';";
-                            lines << "    widget.name = '" + widgetItem->metadatas().name + "';";
-                            lines << "    widget.description = '" + widgetItem->metadatas().description + "';";
-                            lines << "    widget.author = '" + widgetItem->metadatas().author + "';";
-                            lines << "    widget.authorEmail = '" + widgetItem->metadatas().authorEmail + "';";
-                            lines << "    widget.authorHref = '" + widgetItem->metadatas().authorHref + "';";
-                            lines << "    widget.version = '" + widgetItem->metadatas().version + "';";
-
-                            lines << "    widget.uuid = '" + UBStringUtils::toCanonicalUuid(widgetItem->uuid()) + "';";
-
-                            lines << "    widget.width = " + QString("%1").arg(widgetItem->nominalSize().width()) + ";";
-                            lines << "    widget.height = " + QString("%1").arg(widgetItem->nominalSize().height()) + ";";
-                            lines << "    widget.openUrl = function(url) { window.open(url); }";
-                            lines << "    widget.preferences = new Array()";
-
-                            foreach(QString pref, preferences.keys())
-                            {
-                                lines << "      widget.preferences['" + pref + "'] = '" + preferences.value(pref) + "';";
-                            }
-
-                            lines << "    widget.preferences.key = function(index) {";
-                            lines << "      var currentIndex = 0;";
-                            lines << "      for(key in widget.preferences){";
-                            lines << "        if (currentIndex == index){ return key;}";
-                            lines << "        currentIndex++;";
-                            lines << "      }";
-                            lines << "      return '';";
-                            lines << "    }";
-
-                            lines << "    widget.preferences.getItem = function(key) {";
-                            lines << "      return widget.preferences[key];";
-                            lines << "    }";
-
-                            lines << "    widget.preferences.setItem = function(key, value) {}";
-                            lines << "    widget.preferences.removeItem = function(key) {}";
-                            lines << "    widget.preferences.clear = function() {}";
-
-                            lines << "    var uniboard = {};";
-                            lines << "    uniboard.pageCount = " + QString("%1").arg(mPublishingSize) + ";";
-                            lines << "    uniboard.currentPageNumber = " + QString("%1").arg(pageNumber) + ";";
-                            lines << "    uniboard.uuid = '" + UBStringUtils::toCanonicalUuid(widgetItem->uuid()) + "'";
-                            lines << "    uniboard.lang = navigator.language;";
-                            lines << "    uniboard.locale = function() {return navigator.language}";
-                            lines << "    uniboard.messages = {}";
-                            lines << "    uniboard.messages.subscribeToTopic = function(topicName){}";
-                            lines << "    uniboard.messages.unsubscribeFromTopic = function(topicName){}";
-                            lines << "    uniboard.messages.sendMessage = function(topicName, message){}";
-
-                            lines << "    uniboard.datastore = {};";
-                            lines << "    uniboard.datastore.document = new Array();";
-                            foreach(QString entry, datastoreEntries.keys())
-                            {
-                                lines << "      uniboard.datastore.document['" + entry + "'] = '" + datastoreEntries.value(entry) + "';";
-                            }
-
-                            lines << "    uniboard.datastore.document.key = function(index) {";
-                            lines << "      var currentIndex = 0;";
-                            lines << "      for(key in uniboard.datastore.document){";
-                            lines << "        if (currentIndex == index){ return key;}";
-                            lines << "        currentIndex++;";
-                            lines << "      }";
-                            lines << "      return '';";
-                            lines << "    }";
-
-                            lines << "    uniboard.datastore.document.getItem = function(key) {";
-                            lines << "      return uniboard.datastore.document[key];";
-                            lines << "    }";
-
-                            lines << "    uniboard.datastore.document.setItem = function(key, value) {}";
-                            lines << "    uniboard.datastore.document.removeItem = function(key) {}";
-                            lines << "    uniboard.datastore.document.clear = function() {}";
-
-                            lines << "    uniboard.setTool = function(tool){}";
-                            lines << "    uniboard.setPenColor = function(color){}";
-                            lines << "    uniboard.setMarkerColor = function(color){}";
-
-                            lines << "    uniboard.pageThumbnail = function(pageNumber){";
-                            lines << "      var nb;";
-                            lines << "      if (pageNumber < 10) return 'page00' + pageNumber + '.thumbnail.jpg';";
-                            lines << "      if (pageNumber < 100) return 'page0' + pageNumber + '.thumbnail.jpg';";
-                            lines << "      return 'page' + pageNumber + '.thumbnail.jpg;'";
-                            lines << "    }";
-
-                            lines << "    uniboard.zoom = function(factor, x, y){}";
-                            lines << "    uniboard.move = function(x, y){}";
-                            lines << "    uniboard.move = function(x, y){}";
-                            lines << "    uniboard.moveTo = function(x, y){}";
-                            lines << "    uniboard.drawLineTo = function(x, y, width){}";
-                            lines << "    uniboard.eraseLineTo = function(x, y, width){}";
-                            lines << "    uniboard.clear = function(){}";
-                            lines << "    uniboard.setBackground = function(dark, crossed){}";
-                            lines << "    uniboard.addObject = function(url, width, height, x, y, background){}";
-                            lines << "    uniboard.resize = function(width, height){window.resizeTo(width, height);}";
-
-                            lines << "    uniboard.showMessage = function(message){alert(message);}";
-                            lines << "    uniboard.centerOn = function(x, y){}";
-                            lines << "    uniboard.addText = function(text, x, y){}";
-
-                            lines << "    uniboard.setPreference = function(key, value){}";
-                            lines << "    uniboard.preference = function(key, defValue){";
-                            lines << "      var pref = widget.preferences[key];";
-                            lines << "      if (pref == undefined) ";
-                            lines << "        return defValue;";
-                            lines << "      else ";
-                            lines << "        return pref;";
-                            lines << "    }";
-                            lines << "    uniboard.preferenceKeys = function(){";
-                            lines << "        var keys = new Array();";
-                            lines << "        for(key in widget.preferences){";
-                            lines << "            keys.push(key);";
-                            lines << "        }";
-                            lines << "        return keys;";
-                            lines << "    }";
-
-                            lines << "    uniboard.datastore.document.key = function(index) {";
-                            lines << "        var currentIndex = 0;";
-                            lines << "        for(key in uniboard.datastore.document){";
-                            lines << "            if (currentIndex == index){ return key;}";
-                            lines << "            currentIndex++;";
-                            lines << "        }";
-                            lines << "        return '';";
-                            lines << "    }";
-
-                            lines << "    uniboard.datastore.document.getItem = function(key) {";
-                            lines << "        return uniboard.datastore.document[key];";
-                            lines << "    }";
-
-                            lines << "    uniboard.datastore.document.setItem = function(key, value) {}";
-                            lines << "    uniboard.datastore.document.removeItem = function(key) {}";
-                            lines << "    uniboard.datastore.document.clear = function() {}";
-
-                            lines << "  </script>";
-                            lines << "";
-
-                            addedJs = true;
-                        }
-                    }
-                }
-                while (!line.isNull());
-
-                startFile.resize(0);
-                startFile.write(lines.join("\n").toUtf8()); // TODO UB 4.x detect real html encoding
-
-                startFile.close();
-            }
-        }
-    }
-    else{
-        qWarning() << "Remote Widget start file, cannot inject widget preferences and datastore entries";
-    }
-}
-
-void UBDocumentPublisher::init()
-{
-    mCrlf=0x0d;
-    mCrlf+=0x0a;
-    mDocInfos.title = "";
-    mDocInfos.description = "";
-
-    mpCookieJar = new QNetworkCookieJar();
-    mpNetworkMgr = new QNetworkAccessManager(this);
-
-    connect(mpNetworkMgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(onFinished(QNetworkReply*)));
-}
-
-void UBDocumentPublisher::onFinished(QNetworkReply *reply)
-{
-    QVariant cookieHeader = reply->rawHeader("Set-Cookie");
-    // First we concatenate all the Set-Cookie values (the packet can contains many of them)
-    QStringList qslCookie = cookieHeader.toString().split("\n");
-    QString qsCookieValue = qslCookie.at(0);
-    for (int i = 1; i < qslCookie.size(); i++) {
-        qsCookieValue += "; " +qslCookie.at(i);
-    }
-
-    // Now we isolate every cookie value
-    QStringList qslCookieVals = qsCookieValue.split("; ");
-
-    bool bTransferOk = false;
-
-    for(int j = 0; j < qslCookieVals.size(); j++)
-    {
-        qDebug() << j;
-        if(qslCookieVals.at(j).startsWith("assetStatus"))
-        {
-            QStringList qslAsset = qslCookieVals.at(j).split("=");
-            if(qslAsset.at(1) == "UPLOADED")
-            {
-                bTransferOk = true;
-                break;
-            }
-        }
-    }
-
-    if(bTransferOk)
-    {
-        UBApplication::showMessage(tr("Document uploaded correctly on the web."));
-    }
-    else
-    {
-        UBApplication::showMessage(tr("Failed to upload document on the web."));
-    }
-
-    reply->deleteLater();
-}
-
-void UBDocumentPublisher::sendUbw(QString username, QString password)
-{
-    if (QFile::exists(mTmpZipFile))
-    {
-        QFile f(mTmpZipFile);
-        if (f.open(QIODevice::ReadOnly))
-        {
-            QFileInfo fi(f);
-            QByteArray ba = f.readAll();
-            QString boundary,data, multipartHeader;
-            QByteArray datatoSend;
-
-            boundary = "---WebKitFormBoundaryDKBTgA53MiyWrzLY";
-            multipartHeader = "multipart/form-data; boundary="+boundary;
-
-            data="--"+boundary+mCrlf;
-            data+="Content-Disposition: form-data; name=\"title\"" + mCrlf + mCrlf + mDocInfos.title + mCrlf;
-            data+="--"+boundary+mCrlf;
-            data+="Content-Disposition: form-data; name=\"description\"" + mCrlf + mCrlf + mDocInfos.description.remove("\n") + mCrlf;
-            data+="--"+boundary+mCrlf;
-            data+="Content-Disposition: form-data; name=\"file\"; filename=\""+ fi.fileName() +"\""+mCrlf;
-            data+="Content-Type: application/octet-stream"+mCrlf+mCrlf;
-            datatoSend=data.toAscii(); // convert data string to byte array for request
-            datatoSend += ba;
-            datatoSend += mCrlf;
-            datatoSend += QString("--%0--%1").arg(boundary).arg(mCrlf);
-
-            QNetworkRequest request(QUrl(QString(DOCPUBLICATION_URL).toAscii().constData()));
-
-            request.setHeader(QNetworkRequest::ContentTypeHeader, multipartHeader);
-            request.setHeader(QNetworkRequest::ContentLengthHeader,datatoSend.size());
-            QString b64Auth = getBase64Of(QString("%0:%1").arg(username).arg(password));
-            request.setRawHeader("Authorization", QString("Basic %0").arg(b64Auth).toAscii().constData());
-            request.setRawHeader("Host", "planete.sankore.org");
-            request.setRawHeader("Accept", "*/*");
-            request.setRawHeader("Accept-Language", "en-US,*");
-
-            mpCookieJar->setCookiesFromUrl(mCookies, QUrl(DOCPUBLICATION_URL));
-            mpNetworkMgr->setCookieJar(mpCookieJar);
-
-            // Send the file
-            mpNetworkMgr->post(request,datatoSend);
-        }
-    }
-}
-
-QString UBDocumentPublisher::getBase64Of(QString stringToEncode)
-{
-    return stringToEncode.toAscii().toBase64();
-}
-
-// ---------------------------------------------------------
-UBProxyLoginDlg::UBProxyLoginDlg(QWidget *parent, const char *name):QDialog(parent)
-  , mpLayout(NULL)
-  , mpUserLayout(NULL)
-  , mpPasswordLayout(NULL)
-  , mpButtons(NULL)
-  , mpUserLabel(NULL)
-  , mpPasswordLabel(NULL)
-  , mpUsername(NULL)
-  , mpPassword(NULL)
-{
-    setObjectName(name);
-    setFixedSize(400, 150);
-    setWindowTitle(tr("Proxy Login"));
-
-    mpLayout = new QVBoxLayout();
-    setLayout(mpLayout);
-    mpUserLayout = new QHBoxLayout();
-    mpLayout->addLayout(mpUserLayout);
-    mpPasswordLayout = new QHBoxLayout();
-    mpLayout->addLayout(mpPasswordLayout);
-
-    mpUserLabel = new QLabel(tr("Username:"), this);
-    mpUsername = new QLineEdit(this);
-    mpUserLayout->addWidget(mpUserLabel, 0);
-    mpUserLayout->addWidget(mpUsername, 1);
-
-    mpPasswordLabel = new QLabel(tr("Password:"), this);
-    mpPassword = new QLineEdit(this);
-    mpPasswordLayout->addWidget(mpPasswordLabel, 0);
-    mpPasswordLayout->addWidget(mpPassword, 1);
-
-    mpButtons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this);
-    mpLayout->addWidget(mpButtons);
-
-    connect(mpButtons, SIGNAL(accepted()), this, SLOT(accept()));
-    connect(mpButtons, SIGNAL(rejected()), this, SLOT(reject()));
-
-}
-
-UBProxyLoginDlg::~UBProxyLoginDlg()
-{
-    if(NULL != mpLayout)
-    {
-        delete mpLayout;
-        mpLayout = NULL;
-    }
-    if(NULL != mpButtons)
-    {
-        delete mpButtons;
-        mpButtons = NULL;
-    }
-    if(NULL != mpUserLabel)
-    {
-        delete mpUserLabel;
-        mpUserLabel = NULL;
-    }
-    if(NULL != mpPasswordLabel)
-    {
-        delete mpPasswordLabel;
-        mpPasswordLabel = NULL;
-    }
-    if(NULL != mpUsername)
-    {
-        delete mpUsername;
-        mpUsername = NULL;
-    }
-    if(NULL != mpPassword)
-    {
-        delete mpPassword;
-        mpPassword = NULL;
-    }
-}
-
-// ---------------------------------------------------------
-UBPublicationDlg::UBPublicationDlg(QWidget *parent, const char *name):QDialog(parent)
-  , mpLayout(NULL)
-  , mpTitleLayout(NULL)
-  , mpTitleLabel(NULL)
-  , mpTitle(NULL)
-  , mpDescLabel(NULL)
-  , mpDescription(NULL)
-  , mpButtons(NULL)
-{
-    setObjectName(name);
-    setWindowTitle(tr("Publish document on the web"));
-
-    resize(500, 300);
-
-    mpLayout = new QVBoxLayout();
-    setLayout(mpLayout);
-
-    mpTitleLabel = new QLabel(tr("Title:"), this);
-    mpTitle = new QLineEdit(this);
-    mpTitleLayout = new QHBoxLayout();
-    mpTitleLayout->addWidget(mpTitleLabel, 0);
-    mpTitleLayout->addWidget(mpTitle, 1);
-    mpLayout->addLayout(mpTitleLayout, 0);
-
-    mpDescLabel = new QLabel(tr("Description:"), this);
-    mpLayout->addWidget(mpDescLabel, 0);
-
-    mpDescription = new QTextEdit(this);
-    mpLayout->addWidget(mpDescription, 1);
-
-    mpButtons = new QDialogButtonBox(QDialogButtonBox::Cancel | QDialogButtonBox::Ok, Qt::Horizontal, this);
-    mpButtons->button(QDialogButtonBox::Ok)->setText(tr("Publish"));
-    mpLayout->addWidget(mpButtons);
-
-    mpButtons->button(QDialogButtonBox::Ok)->setEnabled(false);
-
-    connect(mpButtons, SIGNAL(accepted()), this, SLOT(accept()));
-    connect(mpButtons, SIGNAL(rejected()), this, SLOT(reject()));
-    connect(mpTitle, SIGNAL(textChanged(QString)), this, SLOT(onTextChanged()));
-    connect(mpDescription, SIGNAL(textChanged()), this, SLOT(onTextChanged()));
-}
-
-UBPublicationDlg::~UBPublicationDlg()
-{
-    if(NULL != mpTitleLabel)
-    {
-        delete mpTitleLabel;
-        mpTitleLabel = NULL;
-    }
-    if(NULL != mpTitle)
-    {
-        delete mpTitle;
-        mpTitle = NULL;
-    }
-    if(NULL != mpDescLabel)
-    {
-        delete mpDescLabel;
-        mpDescLabel = NULL;
-    }
-    if(NULL != mpDescription)
-    {
-        delete mpDescription;
-        mpDescription = NULL;
-    }
-    if(NULL != mpButtons)
-    {
-        delete mpButtons;
-        mpButtons = NULL;
-    }
-    if(NULL != mpTitleLayout)
-    {
-        delete mpTitleLayout;
-        mpTitleLayout = NULL;
-    }
-    if(NULL != mpLayout)
-    {
-        delete mpLayout;
-        mpLayout = NULL;
-    }
-}
-
-void UBPublicationDlg::onTextChanged()
-{
-    bool bPublishButtonState = false;
-    if(mpTitle->text() != "" && mpDescription->document()->toPlainText() != "")
-    {
-        bPublishButtonState = true;
-    }
-    else
-    {
-        bPublishButtonState = false;
-    }
-
-    mpButtons->button(QDialogButtonBox::Ok)->setEnabled(bPublishButtonState);
-}
+
+
+#include <QFileInfo>
+
+#include "UBDocumentPublisher.h"
+
+#include "frameworks/UBPlatformUtils.h"
+#include "frameworks/UBFileSystemUtils.h"
+#include "frameworks/UBStringUtils.h"
+
+#include "network/UBNetworkAccessManager.h"
+#include "network/UBServerXMLHttpRequest.h"
+
+#include "core/UBDocumentManager.h"
+#include "core/UBApplication.h"
+#include "core/UBPersistenceManager.h"
+#include "core/UBApplicationController.h"
+
+#include "board/UBBoardController.h"
+
+#include "gui/UBMainWindow.h"
+
+#include "document/UBDocumentProxy.h"
+#include "document/UBDocumentContainer.h"
+
+#include "domain/UBGraphicsWidgetItem.h"
+
+#include "globals/UBGlobals.h"
+
+THIRD_PARTY_WARNINGS_DISABLE
+#include "quazip.h"
+#include "quazipfile.h"
+THIRD_PARTY_WARNINGS_ENABLE
+
+#include "adaptors/UBExportFullPDF.h"
+#include "adaptors/UBExportDocument.h"
+#include "adaptors/UBSvgSubsetAdaptor.h"
+
+#include "UBSvgSubsetRasterizer.h"
+
+#include "../../core/UBApplication.h"
+
+#include "core/memcheck.h"
+
+
+UBDocumentPublisher::UBDocumentPublisher(UBDocumentProxy* pDocument, QObject *parent)
+        : QObject(parent)
+        , mSourceDocument(pDocument)
+        , mUsername("")
+        , mPassword("")
+        , bLoginCookieSet(false)
+{
+    init();
+}
+
+
+UBDocumentPublisher::~UBDocumentPublisher()
+{
+}
+
+
+void UBDocumentPublisher::publish()
+{
+            //check that the username and password are stored on preferences
+    UBSettings* settings = UBSettings::settings();
+
+    if(settings->communityUsername().isEmpty() || settings->communityPassword().isEmpty()){
+        UBApplication::showMessage(tr("Credentials has to not been filled out yet."));
+        qDebug() << "trying to connect to community without the required credentials";
+        return;
+    }
+
+    mUsername = settings->communityUsername();
+    mPassword = settings->communityPassword();
+
+    UBPublicationDlg dlg;
+    if(QDialog::Accepted == dlg.exec())
+    {
+        mDocInfos.title = dlg.title();
+        mDocInfos.description = dlg.description();
+
+        buildUbwFile();
+
+        UBApplication::showMessage(tr("Uploading Sankore File on Web."));
+
+        sendUbw(mUsername, mPassword);
+    }
+}
+
+void UBDocumentPublisher::buildUbwFile()
+{
+    QDir d;
+    d.mkpath(UBFileSystemUtils::defaultTempDirPath());
+
+    QString tmpDir = UBFileSystemUtils::createTempDir();
+
+    if (UBFileSystemUtils::copyDir(mSourceDocument->persistencePath(), tmpDir))
+    {
+        QString documentName = mSourceDocument->name();
+
+        mPublishingPath = tmpDir;
+        mPublishingSize = mSourceDocument->pageCount();
+
+        rasterizeScenes();
+
+        upgradeDocumentForPublishing();
+
+        UBExportFullPDF pdfExporter;
+        pdfExporter.setVerbode(false);
+        pdfExporter.persistsDocument(mSourceDocument, mPublishingPath + "/" + documentName + ".pdf");
+
+        UBExportDocument ubzExporter;
+        ubzExporter.setVerbode(false);
+        ubzExporter.persistsDocument(mSourceDocument, mPublishingPath + "/" + documentName + ".ubz");
+
+        // remove all useless files
+
+        for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++) {
+            QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.svg",pageIndex);
+
+            QFile::remove(filename);
+        }
+
+        UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::imageDirectory);
+        UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::objectDirectory);
+        UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::videoDirectory);
+        UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::audioDirectory);
+
+        mTmpZipFile = UBFileSystemUtils::defaultTempDirPath() + "/" + UBStringUtils::toCanonicalUuid(QUuid::createUuid()) + ".ubw~";
+
+        QuaZip zip(mTmpZipFile);
+        zip.setFileNameCodec("UTF-8");
+        if (!zip.open(QuaZip::mdCreate))
+        {
+            qWarning() << "Export failed. Cause: zip.open(): " << zip.getZipError() << "," << mTmpZipFile;
+            QApplication::restoreOverrideCursor();
+            return;
+        }
+
+        QuaZipFile outFile(&zip);
+
+        if (!UBFileSystemUtils::compressDirInZip(mPublishingPath, "", &outFile, true))
+        {
+            qWarning("Export failed. compressDirInZip failed ...");
+            zip.close();
+            UBApplication::showMessage(tr("Export failed."));
+            QApplication::restoreOverrideCursor();
+            return;
+        }
+
+        if (zip.getZipError() != 0)
+        {
+            qWarning("Export failed. Cause: zip.close(): %d", zip.getZipError());
+            zip.close();
+            UBApplication::showMessage(tr("Export failed."));
+            QApplication::restoreOverrideCursor();
+            return;
+        }
+
+        zip.close();
+
+    }
+    else
+    {
+        UBApplication::showMessage(tr("Export canceled ..."));
+        QApplication::restoreOverrideCursor();
+    }
+}
+
+void UBDocumentPublisher::rasterizeScenes()
+{
+
+    for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++)
+    {
+        UBApplication::showMessage(tr("Converting page %1/%2 ...").arg(UBDocumentContainer::pageFromSceneIndex(pageIndex)).arg(mPublishingSize), true);
+
+        UBDocumentProxy publishingDocument(mPublishingPath);
+        UBSvgSubsetRasterizer rasterizer(&publishingDocument, pageIndex);
+
+        QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.jpg",pageIndex);
+
+        rasterizer.rasterizeToFile(filename);
+
+    }
+}
+
+
+void UBDocumentPublisher::updateGoogleMapApiKey()
+{
+    QDir widgestDir(mPublishingPath + "/" + UBPersistenceManager::widgetDirectory);
+
+    QString uniboardWebGoogleMapApiKey = UBSettings::settings()->uniboardWebGoogleMapApiKey->get().toString();
+
+    foreach(QFileInfo dirInfo, widgestDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot))
+    {
+        QString config = UBFileSystemUtils::readTextFile(dirInfo.absoluteFilePath() + "/config.xml").toLower();
+
+        if (config.contains("google") && config.contains("map"))
+        {
+            QDir widgetDir(dirInfo.absoluteFilePath());
+
+            foreach(QFileInfo fileInfo, widgetDir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot))
+            {
+                QFile file(fileInfo.absoluteFilePath());
+
+                if (file.open(QIODevice::ReadWrite))
+                {
+                    QTextStream stream(&file);
+                    QString content = stream.readAll();
+
+                    if (content.contains("ABQIAAAA6vtVqAUu8kZ_eTz7c8kwSBT9UCAhw_xm0LNFHsWmQxTJAdp5lxSY_5r-lZriY_7sACaMnl80JcX6Og"))
+                    {
+                        content.replace("ABQIAAAA6vtVqAUu8kZ_eTz7c8kwSBT9UCAhw_xm0LNFHsWmQxTJAdp5lxSY_5r-lZriY_7sACaMnl80JcX6Og",
+                                        uniboardWebGoogleMapApiKey);
+
+                        file.resize(0);
+                        file.write(content.toUtf8());
+                    }
+                    file.close();
+                }
+            }
+        }
+    }
+}
+
+
+void UBDocumentPublisher::upgradeDocumentForPublishing()
+{
+    for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++)
+    {
+        UBDocumentProxy publishingDocument(mPublishingPath);
+        UBGraphicsScene *scene = UBSvgSubsetAdaptor::loadScene(&publishingDocument, pageIndex);
+
+        QList<UBGraphicsW3CWidgetItem*> widgets;
+
+        foreach(QGraphicsItem* item, scene->items()){
+            UBGraphicsW3CWidgetItem *widgetItem = dynamic_cast<UBGraphicsW3CWidgetItem*>(item);
+
+            if(widgetItem){
+                generateWidgetPropertyScript(widgetItem, UBDocumentContainer::pageFromSceneIndex(pageIndex));
+                widgets << widgetItem;
+            }
+        }
+
+        QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.json",pageIndex);
+
+        QFile jsonFile(filename);
+        if (jsonFile.open(QIODevice::WriteOnly | QIODevice::Truncate))
+        {
+            jsonFile.write("{\n");
+            jsonFile.write(QString("  \"scene\": {\n").toUtf8());
+            jsonFile.write(QString("    \"x\": %1,\n").arg(scene->normalizedSceneRect().x()).toUtf8());
+            jsonFile.write(QString("    \"y\": %1,\n").arg(scene->normalizedSceneRect().y()).toUtf8());
+            jsonFile.write(QString("    \"width\": %1,\n").arg(scene->normalizedSceneRect().width()).toUtf8());
+            jsonFile.write(QString("    \"height\": %1\n").arg(scene->normalizedSceneRect().height()).toUtf8());
+            jsonFile.write(QString("  },\n").toUtf8());
+
+            jsonFile.write(QString("  \"widgets\": [\n").toUtf8());
+
+            bool first = true;
+
+            foreach(UBGraphicsW3CWidgetItem* widget, widgets)
+            {
+                if (!first)
+                    jsonFile.write(QString("    ,\n").toUtf8());
+
+                jsonFile.write(QString("    {\n").toUtf8());
+                jsonFile.write(QString("      \"uuid\": \"%1\",\n").arg(UBStringUtils::toCanonicalUuid(widget->uuid())).toUtf8());
+                jsonFile.write(QString("      \"id\": \"%1\",\n").arg(widget->metadatas().id).toUtf8());
+
+                jsonFile.write(QString("      \"name\": \"%1\",\n").arg(widget->metadatas().name).toUtf8());
+                jsonFile.write(QString("      \"description\": \"%1\",\n").arg(widget->metadatas().description).toUtf8());
+                jsonFile.write(QString("      \"author\": \"%1\",\n").arg(widget->metadatas().author).toUtf8());
+                jsonFile.write(QString("      \"authorEmail\": \"%1\",\n").arg(widget->metadatas().authorEmail).toUtf8());
+                jsonFile.write(QString("      \"authorHref\": \"%1\",\n").arg(widget->metadatas().authorHref).toUtf8());
+                jsonFile.write(QString("      \"version\": \"%1\",\n").arg(widget->metadatas().authorHref).toUtf8());
+
+                jsonFile.write(QString("      \"x\": %1,\n").arg(widget->sceneBoundingRect().x()).toUtf8());
+                jsonFile.write(QString("      \"y\": %1,\n").arg(widget->sceneBoundingRect().y()).toUtf8());
+                jsonFile.write(QString("      \"width\": %1,\n").arg(widget->sceneBoundingRect().width()).toUtf8());
+                jsonFile.write(QString("      \"height\": %1,\n").arg(widget->sceneBoundingRect().height()).toUtf8());
+
+                jsonFile.write(QString("      \"nominalWidth\": %1,\n").arg(widget->boundingRect().width()).toUtf8());
+                jsonFile.write(QString("      \"nominalHeight\": %1,\n").arg(widget->boundingRect().height()).toUtf8());
+
+                QString url = UBPersistenceManager::widgetDirectory + "/" + widget->uuid().toString() + ".wgt";
+                jsonFile.write(QString("      \"src\": \"%1\",\n").arg(url).toUtf8());
+                QString startFile = widget->mainHtmlFileName();
+                jsonFile.write(QString("      \"startFile\": \"%1\",\n").arg(startFile).toUtf8());
+
+                QMap<QString, QString> preferences = widget->UBGraphicsWidgetItem::preferences();
+
+                jsonFile.write(QString("      \"preferences\": {\n").toUtf8());
+
+                foreach(QString key, preferences.keys())
+                {
+                    QString sep = ",";
+                    if (key == preferences.keys().last())
+                        sep = "";
+
+                    jsonFile.write(QString("          \"%1\": \"%2\"%3\n")
+                                   .arg(key)
+                                   .arg(preferences.value(key))
+                                   .arg(sep)
+                                   .toUtf8());
+                }
+                jsonFile.write(QString("      },\n").toUtf8());
+
+                jsonFile.write(QString("      \"datastore\": {\n").toUtf8());
+
+                QMap<QString, QString> datastoreEntries = widget->datastoreEntries();
+
+                foreach(QString entry, datastoreEntries.keys())
+                {
+                    QString sep = ",";
+                    if (entry == datastoreEntries.keys().last())
+                        sep = "";
+
+                    jsonFile.write(QString("          \"%1\": \"%2\"%3\n")
+                                   .arg(entry)
+                                   .arg(datastoreEntries.value(entry))
+                                   .arg(sep)
+                                   .toUtf8());
+                }
+                jsonFile.write(QString("      }\n").toUtf8());
+
+                jsonFile.write(QString("    }\n").toUtf8());
+
+                first = false;
+            }
+
+            jsonFile.write("  ]\n");
+            jsonFile.write("}\n");
+        }
+        else
+        {
+            qWarning() << "Cannot open file" << filename << "for saving page state";
+        }
+
+        delete scene;
+    }
+
+    updateGoogleMapApiKey();
+}
+
+
+void UBDocumentPublisher::generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *widgetItem, int pageNumber)
+{
+
+    QMap<QString, QString> preferences = widgetItem->UBGraphicsWidgetItem::preferences();
+    QMap<QString, QString> datastoreEntries = widgetItem->datastoreEntries();
+
+    QString startFileName = widgetItem->mainHtmlFileName();
+
+    if (!startFileName.startsWith("http://"))
+    {
+        QString startFilePath = mPublishingPath + "/" + UBPersistenceManager::widgetDirectory + "/" + widgetItem->uuid().toString() + ".wgt/" + startFileName;
+
+        QFile startFile(startFilePath);
+
+        if (startFile.exists())
+        {
+            if (startFile.open(QIODevice::ReadWrite))
+            {
+                QTextStream stream(&startFile);
+                QStringList lines;
+
+                bool addedJs = false;
+
+                QString line;
+                do
+                {
+                    line = stream.readLine();
+                    if (!line.isNull())
+                    {
+                        lines << line;
+
+                        if (!addedJs && line.contains("<head") && line.contains(">") )  // TODO UB 4.6, this is naive ... the HEAD tag may be on several lines
+                        {
+                            lines << "";
+                            lines << "  <script type=\"text/javascript\">";
+
+                            lines << "    var widget = {};";
+                            lines << "    widget.id = '" + widgetItem->metadatas().id + "';";
+                            lines << "    widget.name = '" + widgetItem->metadatas().name + "';";
+                            lines << "    widget.description = '" + widgetItem->metadatas().description + "';";
+                            lines << "    widget.author = '" + widgetItem->metadatas().author + "';";
+                            lines << "    widget.authorEmail = '" + widgetItem->metadatas().authorEmail + "';";
+                            lines << "    widget.authorHref = '" + widgetItem->metadatas().authorHref + "';";
+                            lines << "    widget.version = '" + widgetItem->metadatas().version + "';";
+
+                            lines << "    widget.uuid = '" + UBStringUtils::toCanonicalUuid(widgetItem->uuid()) + "';";
+
+                            lines << "    widget.width = " + QString("%1").arg(widgetItem->nominalSize().width()) + ";";
+                            lines << "    widget.height = " + QString("%1").arg(widgetItem->nominalSize().height()) + ";";
+                            lines << "    widget.openUrl = function(url) { window.open(url); }";
+                            lines << "    widget.preferences = new Array()";
+
+                            foreach(QString pref, preferences.keys())
+                            {
+                                lines << "      widget.preferences['" + pref + "'] = '" + preferences.value(pref) + "';";
+                            }
+
+                            lines << "    widget.preferences.key = function(index) {";
+                            lines << "      var currentIndex = 0;";
+                            lines << "      for(key in widget.preferences){";
+                            lines << "        if (currentIndex == index){ return key;}";
+                            lines << "        currentIndex++;";
+                            lines << "      }";
+                            lines << "      return '';";
+                            lines << "    }";
+
+                            lines << "    widget.preferences.getItem = function(key) {";
+                            lines << "      return widget.preferences[key];";
+                            lines << "    }";
+
+                            lines << "    widget.preferences.setItem = function(key, value) {}";
+                            lines << "    widget.preferences.removeItem = function(key) {}";
+                            lines << "    widget.preferences.clear = function() {}";
+
+                            lines << "    var uniboard = {};";
+                            lines << "    uniboard.pageCount = " + QString("%1").arg(mPublishingSize) + ";";
+                            lines << "    uniboard.currentPageNumber = " + QString("%1").arg(pageNumber) + ";";
+                            lines << "    uniboard.uuid = '" + UBStringUtils::toCanonicalUuid(widgetItem->uuid()) + "'";
+                            lines << "    uniboard.lang = navigator.language;";
+                            lines << "    uniboard.locale = function() {return navigator.language}";
+                            lines << "    uniboard.messages = {}";
+                            lines << "    uniboard.messages.subscribeToTopic = function(topicName){}";
+                            lines << "    uniboard.messages.unsubscribeFromTopic = function(topicName){}";
+                            lines << "    uniboard.messages.sendMessage = function(topicName, message){}";
+
+                            lines << "    uniboard.datastore = {};";
+                            lines << "    uniboard.datastore.document = new Array();";
+                            foreach(QString entry, datastoreEntries.keys())
+                            {
+                                lines << "      uniboard.datastore.document['" + entry + "'] = '" + datastoreEntries.value(entry) + "';";
+                            }
+
+                            lines << "    uniboard.datastore.document.key = function(index) {";
+                            lines << "      var currentIndex = 0;";
+                            lines << "      for(key in uniboard.datastore.document){";
+                            lines << "        if (currentIndex == index){ return key;}";
+                            lines << "        currentIndex++;";
+                            lines << "      }";
+                            lines << "      return '';";
+                            lines << "    }";
+
+                            lines << "    uniboard.datastore.document.getItem = function(key) {";
+                            lines << "      return uniboard.datastore.document[key];";
+                            lines << "    }";
+
+                            lines << "    uniboard.datastore.document.setItem = function(key, value) {}";
+                            lines << "    uniboard.datastore.document.removeItem = function(key) {}";
+                            lines << "    uniboard.datastore.document.clear = function() {}";
+
+                            lines << "    uniboard.setTool = function(tool){}";
+                            lines << "    uniboard.setPenColor = function(color){}";
+                            lines << "    uniboard.setMarkerColor = function(color){}";
+
+                            lines << "    uniboard.pageThumbnail = function(pageNumber){";
+                            lines << "      var nb;";
+                            lines << "      if (pageNumber < 10) return 'page00' + pageNumber + '.thumbnail.jpg';";
+                            lines << "      if (pageNumber < 100) return 'page0' + pageNumber + '.thumbnail.jpg';";
+                            lines << "      return 'page' + pageNumber + '.thumbnail.jpg;'";
+                            lines << "    }";
+
+                            lines << "    uniboard.zoom = function(factor, x, y){}";
+                            lines << "    uniboard.move = function(x, y){}";
+                            lines << "    uniboard.move = function(x, y){}";
+                            lines << "    uniboard.moveTo = function(x, y){}";
+                            lines << "    uniboard.drawLineTo = function(x, y, width){}";
+                            lines << "    uniboard.eraseLineTo = function(x, y, width){}";
+                            lines << "    uniboard.clear = function(){}";
+                            lines << "    uniboard.setBackground = function(dark, crossed){}";
+                            lines << "    uniboard.addObject = function(url, width, height, x, y, background){}";
+                            lines << "    uniboard.resize = function(width, height){window.resizeTo(width, height);}";
+
+                            lines << "    uniboard.showMessage = function(message){alert(message);}";
+                            lines << "    uniboard.centerOn = function(x, y){}";
+                            lines << "    uniboard.addText = function(text, x, y){}";
+
+                            lines << "    uniboard.setPreference = function(key, value){}";
+                            lines << "    uniboard.preference = function(key, defValue){";
+                            lines << "      var pref = widget.preferences[key];";
+                            lines << "      if (pref == undefined) ";
+                            lines << "        return defValue;";
+                            lines << "      else ";
+                            lines << "        return pref;";
+                            lines << "    }";
+                            lines << "    uniboard.preferenceKeys = function(){";
+                            lines << "        var keys = new Array();";
+                            lines << "        for(key in widget.preferences){";
+                            lines << "            keys.push(key);";
+                            lines << "        }";
+                            lines << "        return keys;";
+                            lines << "    }";
+
+                            lines << "    uniboard.datastore.document.key = function(index) {";
+                            lines << "        var currentIndex = 0;";
+                            lines << "        for(key in uniboard.datastore.document){";
+                            lines << "            if (currentIndex == index){ return key;}";
+                            lines << "            currentIndex++;";
+                            lines << "        }";
+                            lines << "        return '';";
+                            lines << "    }";
+
+                            lines << "    uniboard.datastore.document.getItem = function(key) {";
+                            lines << "        return uniboard.datastore.document[key];";
+                            lines << "    }";
+
+                            lines << "    uniboard.datastore.document.setItem = function(key, value) {}";
+                            lines << "    uniboard.datastore.document.removeItem = function(key) {}";
+                            lines << "    uniboard.datastore.document.clear = function() {}";
+
+                            lines << "  </script>";
+                            lines << "";
+
+                            addedJs = true;
+                        }
+                    }
+                }
+                while (!line.isNull());
+
+                startFile.resize(0);
+                startFile.write(lines.join("\n").toUtf8()); // TODO UB 4.x detect real html encoding
+
+                startFile.close();
+            }
+        }
+    }
+    else{
+        qWarning() << "Remote Widget start file, cannot inject widget preferences and datastore entries";
+    }
+}
+
+void UBDocumentPublisher::init()
+{
+    mCrlf=0x0d;
+    mCrlf+=0x0a;
+    mDocInfos.title = "";
+    mDocInfos.description = "";
+
+    mpCookieJar = new QNetworkCookieJar();
+    mpNetworkMgr = new QNetworkAccessManager(this);
+
+    connect(mpNetworkMgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(onFinished(QNetworkReply*)));
+}
+
+void UBDocumentPublisher::onFinished(QNetworkReply *reply)
+{
+    QVariant cookieHeader = reply->rawHeader("Set-Cookie");
+    // First we concatenate all the Set-Cookie values (the packet can contains many of them)
+    QStringList qslCookie = cookieHeader.toString().split("\n");
+    QString qsCookieValue = qslCookie.at(0);
+    for (int i = 1; i < qslCookie.size(); i++) {
+        qsCookieValue += "; " +qslCookie.at(i);
+    }
+
+    // Now we isolate every cookie value
+    QStringList qslCookieVals = qsCookieValue.split("; ");
+
+    bool bTransferOk = false;
+
+    for(int j = 0; j < qslCookieVals.size(); j++)
+    {
+        qDebug() << j;
+        if(qslCookieVals.at(j).startsWith("assetStatus"))
+        {
+            QStringList qslAsset = qslCookieVals.at(j).split("=");
+            if(qslAsset.at(1) == "UPLOADED")
+            {
+                bTransferOk = true;
+                break;
+            }
+        }
+    }
+
+    if(bTransferOk)
+    {
+        UBApplication::showMessage(tr("Document uploaded correctly on the web."));
+    }
+    else
+    {
+        UBApplication::showMessage(tr("Failed to upload document on the web."));
+    }
+
+    reply->deleteLater();
+}
+
+void UBDocumentPublisher::sendUbw(QString username, QString password)
+{
+    if (QFile::exists(mTmpZipFile))
+    {
+        QFile f(mTmpZipFile);
+        if (f.open(QIODevice::ReadOnly))
+        {
+            QFileInfo fi(f);
+            QByteArray ba = f.readAll();
+            QString boundary,data, multipartHeader;
+            QByteArray datatoSend;
+
+            boundary = "---WebKitFormBoundaryDKBTgA53MiyWrzLY";
+            multipartHeader = "multipart/form-data; boundary="+boundary;
+
+            data="--"+boundary+mCrlf;
+            data+="Content-Disposition: form-data; name=\"title\"" + mCrlf + mCrlf + mDocInfos.title + mCrlf;
+            data+="--"+boundary+mCrlf;
+            data+="Content-Disposition: form-data; name=\"description\"" + mCrlf + mCrlf + mDocInfos.description.remove("\n") + mCrlf;
+            data+="--"+boundary+mCrlf;
+            data+="Content-Disposition: form-data; name=\"file\"; filename=\""+ fi.fileName() +"\""+mCrlf;
+            data+="Content-Type: application/octet-stream"+mCrlf+mCrlf;
+            datatoSend=data.toAscii(); // convert data string to byte array for request
+            datatoSend += ba;
+            datatoSend += mCrlf;
+            datatoSend += QString("--%0--%1").arg(boundary).arg(mCrlf);
+
+            QNetworkRequest request(QUrl(QString(DOCPUBLICATION_URL).toAscii().constData()));
+
+            request.setHeader(QNetworkRequest::ContentTypeHeader, multipartHeader);
+            request.setHeader(QNetworkRequest::ContentLengthHeader,datatoSend.size());
+            QString b64Auth = getBase64Of(QString("%0:%1").arg(username).arg(password));
+            request.setRawHeader("Authorization", QString("Basic %0").arg(b64Auth).toAscii().constData());
+            request.setRawHeader("Host", "planete.sankore.org");
+            request.setRawHeader("Accept", "*/*");
+            request.setRawHeader("Accept-Language", "en-US,*");
+
+            mpCookieJar->setCookiesFromUrl(mCookies, QUrl(DOCPUBLICATION_URL));
+            mpNetworkMgr->setCookieJar(mpCookieJar);
+
+            // Send the file
+            mpNetworkMgr->post(request,datatoSend);
+        }
+    }
+}
+
+QString UBDocumentPublisher::getBase64Of(QString stringToEncode)
+{
+    return stringToEncode.toAscii().toBase64();
+}
+
+// ---------------------------------------------------------
+UBProxyLoginDlg::UBProxyLoginDlg(QWidget *parent, const char *name):QDialog(parent)
+  , mpLayout(NULL)
+  , mpUserLayout(NULL)
+  , mpPasswordLayout(NULL)
+  , mpButtons(NULL)
+  , mpUserLabel(NULL)
+  , mpPasswordLabel(NULL)
+  , mpUsername(NULL)
+  , mpPassword(NULL)
+{
+    setObjectName(name);
+    setFixedSize(400, 150);
+    setWindowTitle(tr("Proxy Login"));
+
+    mpLayout = new QVBoxLayout();
+    setLayout(mpLayout);
+    mpUserLayout = new QHBoxLayout();
+    mpLayout->addLayout(mpUserLayout);
+    mpPasswordLayout = new QHBoxLayout();
+    mpLayout->addLayout(mpPasswordLayout);
+
+    mpUserLabel = new QLabel(tr("Username:"), this);
+    mpUsername = new QLineEdit(this);
+    mpUserLayout->addWidget(mpUserLabel, 0);
+    mpUserLayout->addWidget(mpUsername, 1);
+
+    mpPasswordLabel = new QLabel(tr("Password:"), this);
+    mpPassword = new QLineEdit(this);
+    mpPasswordLayout->addWidget(mpPasswordLabel, 0);
+    mpPasswordLayout->addWidget(mpPassword, 1);
+
+    mpButtons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this);
+    mpLayout->addWidget(mpButtons);
+
+    connect(mpButtons, SIGNAL(accepted()), this, SLOT(accept()));
+    connect(mpButtons, SIGNAL(rejected()), this, SLOT(reject()));
+
+}
+
+UBProxyLoginDlg::~UBProxyLoginDlg()
+{
+    if(NULL != mpLayout)
+    {
+        delete mpLayout;
+        mpLayout = NULL;
+    }
+    if(NULL != mpButtons)
+    {
+        delete mpButtons;
+        mpButtons = NULL;
+    }
+    if(NULL != mpUserLabel)
+    {
+        delete mpUserLabel;
+        mpUserLabel = NULL;
+    }
+    if(NULL != mpPasswordLabel)
+    {
+        delete mpPasswordLabel;
+        mpPasswordLabel = NULL;
+    }
+    if(NULL != mpUsername)
+    {
+        delete mpUsername;
+        mpUsername = NULL;
+    }
+    if(NULL != mpPassword)
+    {
+        delete mpPassword;
+        mpPassword = NULL;
+    }
+}
+
+// ---------------------------------------------------------
+UBPublicationDlg::UBPublicationDlg(QWidget *parent, const char *name):QDialog(parent)
+  , mpLayout(NULL)
+  , mpTitleLayout(NULL)
+  , mpTitleLabel(NULL)
+  , mpTitle(NULL)
+  , mpDescLabel(NULL)
+  , mpDescription(NULL)
+  , mpButtons(NULL)
+{
+    setObjectName(name);
+    setWindowTitle(tr("Publish document on the web"));
+
+    resize(500, 300);
+
+    mpLayout = new QVBoxLayout();
+    setLayout(mpLayout);
+
+    mpTitleLabel = new QLabel(tr("Title:"), this);
+    mpTitle = new QLineEdit(this);
+    mpTitleLayout = new QHBoxLayout();
+    mpTitleLayout->addWidget(mpTitleLabel, 0);
+    mpTitleLayout->addWidget(mpTitle, 1);
+    mpLayout->addLayout(mpTitleLayout, 0);
+
+    mpDescLabel = new QLabel(tr("Description:"), this);
+    mpLayout->addWidget(mpDescLabel, 0);
+
+    mpDescription = new QTextEdit(this);
+    mpLayout->addWidget(mpDescription, 1);
+
+    mpButtons = new QDialogButtonBox(QDialogButtonBox::Cancel | QDialogButtonBox::Ok, Qt::Horizontal, this);
+    mpButtons->button(QDialogButtonBox::Ok)->setText(tr("Publish"));
+    mpLayout->addWidget(mpButtons);
+
+    mpButtons->button(QDialogButtonBox::Ok)->setEnabled(false);
+
+    connect(mpButtons, SIGNAL(accepted()), this, SLOT(accept()));
+    connect(mpButtons, SIGNAL(rejected()), this, SLOT(reject()));
+    connect(mpTitle, SIGNAL(textChanged(QString)), this, SLOT(onTextChanged()));
+    connect(mpDescription, SIGNAL(textChanged()), this, SLOT(onTextChanged()));
+}
+
+UBPublicationDlg::~UBPublicationDlg()
+{
+    if(NULL != mpTitleLabel)
+    {
+        delete mpTitleLabel;
+        mpTitleLabel = NULL;
+    }
+    if(NULL != mpTitle)
+    {
+        delete mpTitle;
+        mpTitle = NULL;
+    }
+    if(NULL != mpDescLabel)
+    {
+        delete mpDescLabel;
+        mpDescLabel = NULL;
+    }
+    if(NULL != mpDescription)
+    {
+        delete mpDescription;
+        mpDescription = NULL;
+    }
+    if(NULL != mpButtons)
+    {
+        delete mpButtons;
+        mpButtons = NULL;
+    }
+    if(NULL != mpTitleLayout)
+    {
+        delete mpTitleLayout;
+        mpTitleLayout = NULL;
+    }
+    if(NULL != mpLayout)
+    {
+        delete mpLayout;
+        mpLayout = NULL;
+    }
+}
+
+void UBPublicationDlg::onTextChanged()
+{
+    bool bPublishButtonState = false;
+    if(mpTitle->text() != "" && mpDescription->document()->toPlainText() != "")
+    {
+        bPublishButtonState = true;
+    }
+    else
+    {
+        bPublishButtonState = false;
+    }
+
+    mpButtons->button(QDialogButtonBox::Ok)->setEnabled(bPublishButtonState);
+}
diff --git a/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.h b/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.h
index e6d7f85..89bf4a3 100644
--- a/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.h
+++ b/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,124 +18,124 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBDOCUMENTPUBLISHER_H
-#define UBDOCUMENTPUBLISHER_H
-
-#include <QtGui>
-#include <QtNetwork>
-
-#include "ui_webPublishing.h"
-
-#define DOCPUBLICATION_URL     "http://planete.sankore.org/xwiki/bin/view/CreateResources/UniboardUpload?xpage=plain&outputSyntax=plain"
-
-typedef struct
-{
-    QString title;
-    QString description;
-} sDocumentInfos;
-
-class UBDocumentProxy;
-class UBServerXMLHttpRequest;
-class UBGraphicsW3CWidgetItem;
-class QWebView;
-
-class UBProxyLoginDlg : public QDialog
-{
-    Q_OBJECT
-public:
-    UBProxyLoginDlg(QWidget* parent=0, const char* name="ProxyLoginDlg");
-    ~UBProxyLoginDlg();
-
-    QString username(){return mpUsername->text();}
-    QString password(){return mpPassword->text();}
-
-private:
-    QVBoxLayout* mpLayout;
-    QHBoxLayout* mpUserLayout;
-    QHBoxLayout* mpPasswordLayout;
-    QDialogButtonBox* mpButtons;
-    QLabel* mpUserLabel;
-    QLabel* mpPasswordLabel;
-    QLineEdit* mpUsername;
-    QLineEdit* mpPassword;
-};
-
-class UBPublicationDlg : public QDialog
-{
-    Q_OBJECT
-public:
-    UBPublicationDlg(QWidget* parent=0, const char* name="UBPublicationDlg");
-    ~UBPublicationDlg();
-
-    QString title(){return mpTitle->text();}
-    QString description(){return mpDescription->document()->toPlainText();}
-
-private slots:
-    void onTextChanged();
-
-private:
-    QVBoxLayout* mpLayout;
-    QHBoxLayout* mpTitleLayout;
-    QLabel* mpTitleLabel;
-    QLineEdit* mpTitle;
-    QLabel* mpDescLabel;
-    QTextEdit* mpDescription;
-    QDialogButtonBox* mpButtons;
-};
-
-
-class UBDocumentPublisher : public QObject
-{
-    Q_OBJECT;
-
-public:
-    explicit UBDocumentPublisher(UBDocumentProxy* sourceDocument, QObject *parent = 0);
-    virtual ~UBDocumentPublisher();
-
-    void publish();
-
-signals:
-
-    void loginDone();
-
-protected:
-
-    virtual void updateGoogleMapApiKey();
-    virtual void rasterizeScenes();
-    virtual void upgradeDocumentForPublishing();
-    virtual void generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *widgetItem, int pageNumber);
-
-private slots:
-
-    void onFinished(QNetworkReply* reply);
-
-private:
-
-    UBDocumentProxy *mSourceDocument;
-
-    //UBDocumentProxy *mPublishingDocument;
-    QString mPublishingPath;
-    int mPublishingSize;
-
-
-    void init();
-    void sendUbw(QString username, QString password);
-    QString getBase64Of(QString stringToEncode);
-
-    QHBoxLayout* mpLayout;
-    QNetworkAccessManager* mpNetworkMgr;
-    QNetworkCookieJar* mpCookieJar;
-    QString mUsername;
-    QString mPassword;
-    QString mCrlf;
-    bool bLoginCookieSet;
-
-    void buildUbwFile();
-    QString mTmpZipFile;
-    QList<QNetworkCookie> mCookies;
-    sDocumentInfos mDocInfos;
-
-};
-#endif // UBDOCUMENTPUBLISHER_H
+
+
+#ifndef UBDOCUMENTPUBLISHER_H
+#define UBDOCUMENTPUBLISHER_H
+
+#include <QtGui>
+#include <QtNetwork>
+
+#include "ui_webPublishing.h"
+
+#define DOCPUBLICATION_URL     "http://planete.sankore.org/xwiki/bin/view/CreateResources/UniboardUpload?xpage=plain&outputSyntax=plain"
+
+typedef struct
+{
+    QString title;
+    QString description;
+} sDocumentInfos;
+
+class UBDocumentProxy;
+class UBServerXMLHttpRequest;
+class UBGraphicsW3CWidgetItem;
+class QWebView;
+
+class UBProxyLoginDlg : public QDialog
+{
+    Q_OBJECT
+public:
+    UBProxyLoginDlg(QWidget* parent=0, const char* name="ProxyLoginDlg");
+    ~UBProxyLoginDlg();
+
+    QString username(){return mpUsername->text();}
+    QString password(){return mpPassword->text();}
+
+private:
+    QVBoxLayout* mpLayout;
+    QHBoxLayout* mpUserLayout;
+    QHBoxLayout* mpPasswordLayout;
+    QDialogButtonBox* mpButtons;
+    QLabel* mpUserLabel;
+    QLabel* mpPasswordLabel;
+    QLineEdit* mpUsername;
+    QLineEdit* mpPassword;
+};
+
+class UBPublicationDlg : public QDialog
+{
+    Q_OBJECT
+public:
+    UBPublicationDlg(QWidget* parent=0, const char* name="UBPublicationDlg");
+    ~UBPublicationDlg();
+
+    QString title(){return mpTitle->text();}
+    QString description(){return mpDescription->document()->toPlainText();}
+
+private slots:
+    void onTextChanged();
+
+private:
+    QVBoxLayout* mpLayout;
+    QHBoxLayout* mpTitleLayout;
+    QLabel* mpTitleLabel;
+    QLineEdit* mpTitle;
+    QLabel* mpDescLabel;
+    QTextEdit* mpDescription;
+    QDialogButtonBox* mpButtons;
+};
+
+
+class UBDocumentPublisher : public QObject
+{
+    Q_OBJECT;
+
+public:
+    explicit UBDocumentPublisher(UBDocumentProxy* sourceDocument, QObject *parent = 0);
+    virtual ~UBDocumentPublisher();
+
+    void publish();
+
+signals:
+
+    void loginDone();
+
+protected:
+
+    virtual void updateGoogleMapApiKey();
+    virtual void rasterizeScenes();
+    virtual void upgradeDocumentForPublishing();
+    virtual void generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *widgetItem, int pageNumber);
+
+private slots:
+
+    void onFinished(QNetworkReply* reply);
+
+private:
+
+    UBDocumentProxy *mSourceDocument;
+
+    //UBDocumentProxy *mPublishingDocument;
+    QString mPublishingPath;
+    int mPublishingSize;
+
+
+    void init();
+    void sendUbw(QString username, QString password);
+    QString getBase64Of(QString stringToEncode);
+
+    QHBoxLayout* mpLayout;
+    QNetworkAccessManager* mpNetworkMgr;
+    QNetworkCookieJar* mpCookieJar;
+    QString mUsername;
+    QString mPassword;
+    QString mCrlf;
+    bool bLoginCookieSet;
+
+    void buildUbwFile();
+    QString mTmpZipFile;
+    QList<QNetworkCookie> mCookies;
+    sDocumentInfos mDocInfos;
+
+};
+#endif // UBDOCUMENTPUBLISHER_H
diff --git a/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.cpp b/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.cpp
index f2080c9..458eb1c 100644
--- a/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.cpp
+++ b/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBSvgSubsetRasterizer.h"
 
 #include "domain/UBGraphicsScene.h"
diff --git a/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.h b/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.h
index e7ec6de..fcc40cf 100644
--- a/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.h
+++ b/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBSVGSUBSETRASTERIZER_H_
 #define UBSVGSUBSETRASTERIZER_H_
 
diff --git a/Sankore-3.1/src/api/UBLibraryAPI.cpp b/Sankore-3.1/src/api/UBLibraryAPI.cpp
index c065fba..94f4908 100644
--- a/Sankore-3.1/src/api/UBLibraryAPI.cpp
+++ b/Sankore-3.1/src/api/UBLibraryAPI.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBLibraryAPI.h"
 
 #include "core/UBApplication.h"
diff --git a/Sankore-3.1/src/api/UBLibraryAPI.h b/Sankore-3.1/src/api/UBLibraryAPI.h
index d0b2ed0..0a55c94 100644
--- a/Sankore-3.1/src/api/UBLibraryAPI.h
+++ b/Sankore-3.1/src/api/UBLibraryAPI.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBLIBRARYAPI_H_
 #define UBLIBRARYAPI_H_
 
diff --git a/Sankore-3.1/src/api/UBW3CWidgetAPI.cpp b/Sankore-3.1/src/api/UBW3CWidgetAPI.cpp
index 60a1aa4..3295ba0 100644
--- a/Sankore-3.1/src/api/UBW3CWidgetAPI.cpp
+++ b/Sankore-3.1/src/api/UBW3CWidgetAPI.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBW3CWidgetAPI.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/api/UBW3CWidgetAPI.h b/Sankore-3.1/src/api/UBW3CWidgetAPI.h
index da490fa..cd41cbd 100644
--- a/Sankore-3.1/src/api/UBW3CWidgetAPI.h
+++ b/Sankore-3.1/src/api/UBW3CWidgetAPI.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBW3CWIDGETAPI_H_
 #define UBW3CWIDGETAPI_H_
 
diff --git a/Sankore-3.1/src/api/UBWidgetMessageAPI.cpp b/Sankore-3.1/src/api/UBWidgetMessageAPI.cpp
index 9147d3b..674aec7 100644
--- a/Sankore-3.1/src/api/UBWidgetMessageAPI.cpp
+++ b/Sankore-3.1/src/api/UBWidgetMessageAPI.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBWidgetMessageAPI.h"
 
 #include "core/UBApplication.h"
diff --git a/Sankore-3.1/src/api/UBWidgetMessageAPI.h b/Sankore-3.1/src/api/UBWidgetMessageAPI.h
index fad6ee1..366dbe9 100644
--- a/Sankore-3.1/src/api/UBWidgetMessageAPI.h
+++ b/Sankore-3.1/src/api/UBWidgetMessageAPI.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWIDGETMESSAGEAPI_H_
 #define UBWIDGETMESSAGEAPI_H_
 
diff --git a/Sankore-3.1/src/api/UBWidgetUniboardAPI.cpp b/Sankore-3.1/src/api/UBWidgetUniboardAPI.cpp
index 7ba93be..75307c6 100644
--- a/Sankore-3.1/src/api/UBWidgetUniboardAPI.cpp
+++ b/Sankore-3.1/src/api/UBWidgetUniboardAPI.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBWidgetUniboardAPI.h"
 
 #include <QWebView>
@@ -217,7 +218,7 @@ void UBWidgetUniboardAPI::addObject(QString pUrl, int width, int height, int x,
 void UBWidgetUniboardAPI::setBackground(bool pIsDark, bool pIsCrossed)
 {
     if (mScene)
-    mScene->setBackground(pIsDark, pIsCrossed);
+        mScene->setBackground(pIsDark, pIsCrossed);
 }
 
 
@@ -239,8 +240,8 @@ void UBWidgetUniboardAPI::drawLineTo(const qreal x, const qreal y, const qreal p
         return;
 
     if (mScene)
-    mScene->drawLineTo(QPointF(x, y), pWidth, 
-		UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line);
+    mScene->drawLineTo(QPointF(x, y), pWidth,
+        UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line);
 }
 
 
diff --git a/Sankore-3.1/src/api/UBWidgetUniboardAPI.h b/Sankore-3.1/src/api/UBWidgetUniboardAPI.h
index 6b3825b..76758fa 100644
--- a/Sankore-3.1/src/api/UBWidgetUniboardAPI.h
+++ b/Sankore-3.1/src/api/UBWidgetUniboardAPI.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWIDGETAPI_H
 #define UBWIDGETAPI_H
 
diff --git a/Sankore-3.1/src/board/UBBoardController.cpp b/Sankore-3.1/src/board/UBBoardController.cpp
index d84864b..8447176 100644
--- a/Sankore-3.1/src/board/UBBoardController.cpp
+++ b/Sankore-3.1/src/board/UBBoardController.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,2504 +18,2598 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBBoardController.h"
-
-#include <QtGui>
-#include <QtWebKit>
-
-#include "frameworks/UBFileSystemUtils.h"
-#include "frameworks/UBPlatformUtils.h"
-
-#include "core/UBApplication.h"
-#include "core/UBSettings.h"
-#include "core/UBSetting.h"
-#include "core/UBPersistenceManager.h"
-#include "core/UBApplicationController.h"
-#include "core/UBDocumentManager.h"
-#include "core/UBMimeData.h"
-#include "core/UBDownloadManager.h"
-
-#include "network/UBHttpGet.h"
-
-#include "gui/UBMessageWindow.h"
-#include "gui/UBResources.h"
-#include "gui/UBToolbarButtonGroup.h"
-#include "gui/UBMainWindow.h"
-#include "gui/UBToolWidget.h"
-#include "gui/UBKeyboardPalette.h"
-#include "gui/UBMagnifer.h"
-#include "gui/UBDockPaletteWidget.h"
-#include "gui/UBDockTeacherGuideWidget.h"
-#include "gui/UBTeacherGuideWidget.h"
-
-#include "domain/UBGraphicsPixmapItem.h"
-#include "domain/UBGraphicsItemUndoCommand.h"
-#include "domain/UBGraphicsProxyWidget.h"
-#include "domain/UBGraphicsSvgItem.h"
-#include "domain/UBGraphicsWidgetItem.h"
-#include "domain/UBGraphicsMediaItem.h"
-#include "domain/UBGraphicsPDFItem.h"
-#include "domain/UBGraphicsTextItem.h"
-#include "domain/UBPageSizeUndoCommand.h"
-#include "domain/UBGraphicsGroupContainerItem.h"
-#include "domain/UBItem.h"
-#include "board/UBFeaturesController.h"
-#include "domain/UBGraphicsStrokesGroup.h"
-
-#include "gui/UBFeaturesWidget.h"
-
-#include "tools/UBToolsManager.h"
-
-#include "document/UBDocumentProxy.h"
-#include "document/UBDocumentController.h"
-
-#include "board/UBDrawingController.h"
-#include "board/UBBoardView.h"
-
-#include "podcast/UBPodcastController.h"
-
-#include "adaptors/UBMetadataDcSubsetAdaptor.h"
-#include "adaptors/UBSvgSubsetAdaptor.h"
-
-#include "UBBoardPaletteManager.h"
-
-#include "core/UBSettings.h"
-
-#include "core/memcheck.h"
-
-UBBoardController::UBBoardController(UBMainWindow* mainWindow)
-    : UBDocumentContainer(mainWindow->centralWidget())
-    , mMainWindow(mainWindow)
-    , mActiveScene(0)
-    , mActiveSceneIndex(-1)
-    , mPaletteManager(0)
-    , mSoftwareUpdateDialog(0)
-    , mMessageWindow(0)
-    , mControlView(0)
-    , mDisplayView(0)
-    , mControlContainer(0)
-    , mControlLayout(0)
-    , mZoomFactor(1.0)
-    , mIsClosing(false)
-    , mSystemScaleFactor(1.0)
-    , mCleanupDone(false)
-    , mCacheWidgetIsEnabled(false)
-    , mDeletingSceneIndex(-1)
-    , mMovingSceneIndex(-1)
-    , mActionGroupText(tr("Group"))
-    , mActionUngroupText(tr("Ungroup"))
-{
-    mZoomFactor = UBSettings::settings()->boardZoomFactor->get().toDouble();
-
-    int penColorIndex = UBSettings::settings()->penColorIndex();
-    int markerColorIndex = UBSettings::settings()->markerColorIndex();
-
-    mPenColorOnDarkBackground = UBSettings::settings()->penColors(true).at(penColorIndex);
-    mPenColorOnLightBackground = UBSettings::settings()->penColors(false).at(penColorIndex);
-    mMarkerColorOnDarkBackground = UBSettings::settings()->markerColors(true).at(markerColorIndex);
-    mMarkerColorOnLightBackground = UBSettings::settings()->markerColors(false).at(markerColorIndex);
-
-    QDesktopWidget* desktop = UBApplication::desktop();
-    int dpiCommon = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2;
-    int sPixelsPerMillimeter = qRound(dpiCommon / UBGeometryUtils::inchSize);
-    UBSettings::settings()->crossSize = 10*sPixelsPerMillimeter;
-}
-
-
-void UBBoardController::init()
-{
-    setupViews();
-    setupToolbar();
-
-    connect(UBApplication::undoStack, SIGNAL(canUndoChanged(bool))
-            , this, SLOT(undoRedoStateChange(bool)));
-
-    connect(UBApplication::undoStack, SIGNAL(canRedoChanged (bool))
-            , this, SLOT(undoRedoStateChange(bool)));
-
-    connect(UBDrawingController::drawingController(), SIGNAL(stylusToolChanged(int))
-            , this, SLOT(setToolCursor(int)));
-
-    connect(UBDrawingController::drawingController(), SIGNAL(stylusToolChanged(int))
-            , this, SLOT(stylusToolChanged(int)));
-
-    connect(UBApplication::app(), SIGNAL(lastWindowClosed())
-            , this, SLOT(lastWindowClosed()));
-
-    connect(UBDownloadManager::downloadManager(), SIGNAL(downloadModalFinished()), this, SLOT(onDownloadModalFinished()));
-    connect(UBDownloadManager::downloadManager(), SIGNAL(addDownloadedFileToBoard(bool,QUrl,QUrl,QString,QByteArray,QPointF,QSize,bool)), this, SLOT(downloadFinished(bool,QUrl,QUrl,QString,QByteArray,QPointF,QSize,bool)));
-
-    UBDocumentProxy* doc = UBPersistenceManager::persistenceManager()->createDocument();
-
-    setActiveDocumentScene(doc);
-
-    connect(UBApplication::mainWindow->actionGroupItems, SIGNAL(triggered()), this, SLOT(groupButtonClicked()));
-
-    undoRedoStateChange(true);
-}
-
-
-UBBoardController::~UBBoardController()
-{
-    delete mDisplayView;
-}
-
-
-int UBBoardController::currentPage()
-{
-    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
-        return mActiveSceneIndex;
-    return mActiveSceneIndex + 1;
-}
-
-void UBBoardController::setupViews()
-{
-    mControlContainer = new QWidget(mMainWindow->centralWidget());
-
-    mControlLayout = new QHBoxLayout(mControlContainer);
-    mControlLayout->setContentsMargins(0, 0, 0, 0);
-
-    mControlView = new UBBoardView(this, mControlContainer, true, false);
-    mControlView->setInteractive(true);
-    mControlView->setMouseTracking(true);
-
-    mControlView->grabGesture(Qt::SwipeGesture);
-
-    mControlView->setTransformationAnchor(QGraphicsView::NoAnchor);
-
-    mControlLayout->addWidget(mControlView);
-    mControlContainer->setObjectName("ubBoardControlContainer");
-    mMainWindow->addBoardWidget(mControlContainer);
-
-    connect(mControlView, SIGNAL(resized(QResizeEvent*)), this, SLOT(boardViewResized(QResizeEvent*)));
-
-    // TODO UB 4.x Optimization do we have to create the display view even if their is
-    // only 1 screen
-    //
-    mDisplayView = new UBBoardView(this, UBItemLayerType::FixedBackground, UBItemLayerType::Tool, 0);
-    mDisplayView->setInteractive(false);
-    mDisplayView->setTransformationAnchor(QGraphicsView::NoAnchor);
-
-    mMessageWindow = new UBMessageWindow(mControlView);
-    mMessageWindow->hide();
-
-    mPaletteManager = new UBBoardPaletteManager(mControlContainer, this);
-    connect(this, SIGNAL(activeSceneChanged()), mPaletteManager, SLOT(activeSceneChanged()));
-
-}
-
-
-void UBBoardController::setupLayout()
-{
-    if(mPaletteManager)
-        mPaletteManager->setupLayout();
-}
-
-
-void UBBoardController::setBoxing(QRect displayRect)
-{
-    if (displayRect.isNull())
-    {
-        mControlLayout->setContentsMargins(0, 0, 0, 0);
-        return;
-    }
-
-    qreal controlWidth = (qreal)mMainWindow->centralWidget()->width();
-    qreal controlHeight = (qreal)mMainWindow->centralWidget()->height();
-    qreal displayWidth = (qreal)displayRect.width();
-    qreal displayHeight = (qreal)displayRect.height();
-
-    qreal displayRatio = displayWidth / displayHeight;
-    qreal controlRatio = controlWidth / controlHeight;
-
-    if (displayRatio < controlRatio)
-    {
-        // Pillarboxing
-        int boxWidth = (controlWidth - (displayWidth * (controlHeight / displayHeight))) / 2;
-        mControlLayout->setContentsMargins(boxWidth, 0, boxWidth, 0);
-    }
-    else if (displayRatio > controlRatio)
-    {
-        // Letterboxing
-        int boxHeight = (controlHeight - (displayHeight * (controlWidth / displayWidth))) / 2;
-        mControlLayout->setContentsMargins(0, boxHeight, 0, boxHeight);
-    }
-    else
-    {
-        // No boxing
-        mControlLayout->setContentsMargins(0, 0, 0, 0);
-    }
-}
-
-
-QSize UBBoardController::displayViewport()
-{
-    return mDisplayView->geometry().size();
-}
-
-
-QSize UBBoardController::controlViewport()
-{
-    return mControlView->geometry().size();
-}
-
-
-QRectF UBBoardController::controlGeometry()
-{
-    return mControlView->geometry();
-}
-
-
-void UBBoardController::setupToolbar()
-{
-    UBSettings *settings = UBSettings::settings();
-
-    // Setup color choice widget
-    QList<QAction *> colorActions;
-    colorActions.append(mMainWindow->actionColor0);
-    colorActions.append(mMainWindow->actionColor1);
-    colorActions.append(mMainWindow->actionColor2);
-    colorActions.append(mMainWindow->actionColor3);
-
-    UBToolbarButtonGroup *colorChoice =
-            new UBToolbarButtonGroup(mMainWindow->boardToolBar, colorActions);
-
-    mMainWindow->boardToolBar->insertWidget(mMainWindow->actionBackgrounds, colorChoice);
-
-    connect(settings->appToolBarDisplayText, SIGNAL(changed(QVariant)), colorChoice, SLOT(displayText(QVariant)));
-    connect(colorChoice, SIGNAL(activated(int)), this, SLOT(setColorIndex(int)));
-    connect(UBDrawingController::drawingController(), SIGNAL(colorIndexChanged(int)), colorChoice, SLOT(setCurrentIndex(int)));
-    connect(UBDrawingController::drawingController(), SIGNAL(colorPaletteChanged()), colorChoice, SLOT(colorPaletteChanged()));
-    connect(UBDrawingController::drawingController(), SIGNAL(colorPaletteChanged()), this, SLOT(colorPaletteChanged()));
-
-    colorChoice->displayText(QVariant(settings->appToolBarDisplayText->get().toBool()));
-    colorChoice->colorPaletteChanged();
-
-    // Setup line width choice widget
-    QList<QAction *> lineWidthActions;
-    lineWidthActions.append(mMainWindow->actionLineSmall);
-    lineWidthActions.append(mMainWindow->actionLineMedium);
-    lineWidthActions.append(mMainWindow->actionLineLarge);
-
-    UBToolbarButtonGroup *lineWidthChoice =
-            new UBToolbarButtonGroup(mMainWindow->boardToolBar, lineWidthActions);
-
-    connect(settings->appToolBarDisplayText, SIGNAL(changed(QVariant)), lineWidthChoice, SLOT(displayText(QVariant)));
-
-    connect(lineWidthChoice, SIGNAL(activated(int))
-            , UBDrawingController::drawingController(), SLOT(setLineWidthIndex(int)));
-
-    connect(UBDrawingController::drawingController(), SIGNAL(lineWidthIndexChanged(int))
-            , lineWidthChoice, SLOT(setCurrentIndex(int)));
-
-    lineWidthChoice->displayText(QVariant(settings->appToolBarDisplayText->get().toBool()));
-
-    mMainWindow->boardToolBar->insertWidget(mMainWindow->actionBackgrounds, lineWidthChoice);
-
-    //-----------------------------------------------------------//
-    // Setup eraser width choice widget
-
-    QList<QAction *> eraserWidthActions;
-    eraserWidthActions.append(mMainWindow->actionEraserSmall);
-    eraserWidthActions.append(mMainWindow->actionEraserMedium);
-    eraserWidthActions.append(mMainWindow->actionEraserLarge);
-
-    UBToolbarButtonGroup *eraserWidthChoice =
-            new UBToolbarButtonGroup(mMainWindow->boardToolBar, eraserWidthActions);
-
-    mMainWindow->boardToolBar->insertWidget(mMainWindow->actionBackgrounds, eraserWidthChoice);
-
-    connect(settings->appToolBarDisplayText, SIGNAL(changed(QVariant)), eraserWidthChoice, SLOT(displayText(QVariant)));
-    connect(eraserWidthChoice, SIGNAL(activated(int)), UBDrawingController::drawingController(), SLOT(setEraserWidthIndex(int)));
-
-    eraserWidthChoice->displayText(QVariant(settings->appToolBarDisplayText->get().toBool()));
-    eraserWidthChoice->setCurrentIndex(settings->eraserWidthIndex());
-
-    mMainWindow->boardToolBar->insertSeparator(mMainWindow->actionBackgrounds);
-
-    //-----------------------------------------------------------//
-
-    UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->boardToolBar, mMainWindow->actionBoard);
-    UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->tutorialToolBar, mMainWindow->actionBoard);
-
-    UBApplication::app()->decorateActionMenu(mMainWindow->actionMenu);
-
-    mMainWindow->actionBoard->setVisible(false);
-
-    mMainWindow->webToolBar->hide();
-    mMainWindow->documentToolBar->hide();
-    mMainWindow->tutorialToolBar->hide();
-
-    connectToolbar();
-    initToolbarTexts();
-}
-
-
-void UBBoardController::setToolCursor(int tool)
-{
-    if (mActiveScene)
-    {
-        mActiveScene->setToolCursor(tool);
-    }
-
-    mControlView->setToolCursor(tool);
-}
-
-
-void UBBoardController::connectToolbar()
-{
-    connect(mMainWindow->actionAdd, SIGNAL(triggered()), this, SLOT(addItem()));
-    connect(mMainWindow->actionNewPage, SIGNAL(triggered()), this, SLOT(addScene()));
-    connect(mMainWindow->actionDuplicatePage, SIGNAL(triggered()), this, SLOT(duplicateScene()));
-
-    connect(mMainWindow->actionClearPage, SIGNAL(triggered()), this, SLOT(clearScene()));
-    connect(mMainWindow->actionEraseItems, SIGNAL(triggered()), this, SLOT(clearSceneItems()));
-    connect(mMainWindow->actionEraseAnnotations, SIGNAL(triggered()), this, SLOT(clearSceneAnnotation()));
-    connect(mMainWindow->actionEraseBackground,SIGNAL(triggered()),this,SLOT(clearSceneBackground()));
-
-    connect(mMainWindow->actionUndo, SIGNAL(triggered()), UBApplication::undoStack, SLOT(undo()));
-    connect(mMainWindow->actionRedo, SIGNAL(triggered()), UBApplication::undoStack, SLOT(redo()));
-    connect(mMainWindow->actionRedo, SIGNAL(triggered()), this, SLOT(startScript()));
-    connect(mMainWindow->actionBack, SIGNAL( triggered()), this, SLOT(previousScene()));
-    connect(mMainWindow->actionForward, SIGNAL(triggered()), this, SLOT(nextScene()));
-    connect(mMainWindow->actionSleep, SIGNAL(triggered()), this, SLOT(stopScript()));
-    connect(mMainWindow->actionSleep, SIGNAL(triggered()), this, SLOT(blackout()));
-    connect(mMainWindow->actionVirtualKeyboard, SIGNAL(triggered(bool)), this, SLOT(showKeyboard(bool)));
-    connect(mMainWindow->actionImportPage, SIGNAL(triggered()), this, SLOT(importPage()));
-}
-
-void UBBoardController::startScript()
-{
-    freezeW3CWidgets(false);
-}
-
-void UBBoardController::stopScript()
-{
-    freezeW3CWidgets(true);
-}
-
-void UBBoardController::initToolbarTexts()
-{
-    QList<QAction*> allToolbarActions;
-
-    allToolbarActions << mMainWindow->boardToolBar->actions();
-    allToolbarActions << mMainWindow->webToolBar->actions();
-    allToolbarActions << mMainWindow->documentToolBar->actions();
-
-    foreach(QAction* action, allToolbarActions)
-    {
-        QString nominalText = action->text();
-        QString shortText = truncate(nominalText, 48);
-        QPair<QString, QString> texts(nominalText, shortText);
-
-        mActionTexts.insert(action, texts);
-    }
-}
-
-
-void UBBoardController::setToolbarTexts()
-{
-    bool highResolution = mMainWindow->width() > 1024;
-    QSize iconSize;
-
-    if (highResolution)
-        iconSize = QSize(48, 32);
-    else
-        iconSize = QSize(32, 32);
-
-    mMainWindow->boardToolBar->setIconSize(iconSize);
-    mMainWindow->webToolBar->setIconSize(iconSize);
-    mMainWindow->documentToolBar->setIconSize(iconSize);
-
-    foreach(QAction* action, mActionTexts.keys())
-    {
-        QPair<QString, QString> texts = mActionTexts.value(action);
-
-        if (highResolution)
-            action->setText(texts.first);
-        else
-        {
-            action->setText(texts.second);
-        }
-
-        action->setToolTip(texts.first);
-    }
-}
-
-
-QString UBBoardController::truncate(QString text, int maxWidth)
-{
-    QFontMetricsF fontMetrics(mMainWindow->font());
-    return fontMetrics.elidedText(text, Qt::ElideRight, maxWidth);
-}
-
-
-void UBBoardController::stylusToolDoubleClicked(int tool)
-{
-    if (tool == UBStylusTool::ZoomIn || tool == UBStylusTool::ZoomOut)
-    {
-        zoomRestore();
-    }
-    else if (tool == UBStylusTool::Hand)
-    {
-        centerRestore();
-    }
-}
-
-
-
-void UBBoardController::addScene()
-{
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-    persistCurrentScene();
-
-    UBDocumentContainer::addPage(mActiveSceneIndex + 1);
-
-    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-
-    setActiveDocumentScene(mActiveSceneIndex + 1);
-    QApplication::restoreOverrideCursor();
-}
-
-void UBBoardController::addScene(UBGraphicsScene* scene, bool replaceActiveIfEmpty)
-{
-    if (scene)
-    {
-        UBGraphicsScene* clone = scene->sceneDeepCopy();
-
-        if (scene->document() && (scene->document() != selectedDocument()))
-        {
-            foreach(QUrl relativeFile, scene->relativeDependencies())
-            {
-                QString source = scene->document()->persistencePath() + "/" + relativeFile.toString();
-                QString target = selectedDocument()->persistencePath() + "/" + relativeFile.toString();
-
-                QFileInfo fi(target);
-                QDir d = fi.dir();
-
-                d.mkpath(d.absolutePath());
-                QFile::copy(source, target);
-            }
-        }
-
-        if (replaceActiveIfEmpty && mActiveScene->isEmpty())
-        {
-            setActiveDocumentScene(mActiveSceneIndex);
-        }
-        else
-        {
-            persistCurrentScene();
-            UBPersistenceManager::persistenceManager()->insertDocumentSceneAt(selectedDocument(), clone, mActiveSceneIndex + 1);
-            setActiveDocumentScene(mActiveSceneIndex + 1);
-        }
-
-        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-    }
-}
-
-
-void UBBoardController::addScene(UBDocumentProxy* proxy, int sceneIndex, bool replaceActiveIfEmpty)
-{
-    UBGraphicsScene* scene = UBPersistenceManager::persistenceManager()->loadDocumentScene(proxy, sceneIndex);
-
-    if (scene)
-    {
-        addScene(scene, replaceActiveIfEmpty);
-    }
-}
-
-void UBBoardController::duplicateScene(int nIndex)
-{
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-    persistCurrentScene();
-
-    QList<int> scIndexes;
-    scIndexes << nIndex;
-    duplicatePages(scIndexes);
-    insertThumbPage(nIndex);
-    emit documentThumbnailsUpdated(this);
-    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-
-    setActiveDocumentScene(nIndex + 1);
-    QApplication::restoreOverrideCursor();
-
-    emit pageChanged();
-}
-
-void UBBoardController::duplicateScene()
-{
-    if (UBApplication::applicationController->displayMode() != UBApplicationController::Board)
-        return;
-    duplicateScene(mActiveSceneIndex);
-}
-
-UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item, bool bAsync)
-{
-    if (!item)
-        return NULL;
-
-    UBGraphicsItem *retItem = NULL;
-
-    mLastCreatedItem = NULL;
-
-    QUrl sourceUrl;
-    QByteArray pData;
-
-    //common parameters for any item
-    QPointF itemPos;
-    QSizeF itemSize;
-
-    QGraphicsItem *commonItem = dynamic_cast<QGraphicsItem*>(item);
-    if (commonItem)
-    {
-        qreal shifting = UBSettings::settings()->objectFrameWidth;
-        itemPos = commonItem->pos() + QPointF(shifting,shifting);
-        itemSize = commonItem->boundingRect().size();
-        commonItem->setSelected(false);
-    }
-
-    UBMimeType::Enum itemMimeType;
-
-    QString srcFile = item->sourceUrl().toLocalFile();
-    if (srcFile.isEmpty())
-        srcFile = item->sourceUrl().toString();
-
-    QString contentTypeHeader;
-    if (!srcFile.isEmpty())
-        contentTypeHeader = UBFileSystemUtils::mimeTypeFromFileName(srcFile);
-
-    if(NULL != qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(commonItem))
-        itemMimeType = UBMimeType::Group;
-    else
-        itemMimeType = UBFileSystemUtils::mimeTypeFromString(contentTypeHeader);
-
-    switch(static_cast<int>(itemMimeType))
-    {
-    case UBMimeType::AppleWidget:
-    case UBMimeType::W3CWidget:
-        {
-            UBGraphicsWidgetItem *witem = dynamic_cast<UBGraphicsWidgetItem*>(item);
-            if (witem)
-            {
-                sourceUrl = witem->getOwnFolder();
-            }
-        }break;
-
-    case UBMimeType::Video:
-    case UBMimeType::Audio:
-        {
-            UBGraphicsMediaItem *mitem = dynamic_cast<UBGraphicsMediaItem*>(item);
-            if (mitem)
-            {
-                sourceUrl = mitem->mediaFileUrl();
-                if (bAsync)
-                {
-                    downloadURL(sourceUrl, srcFile, itemPos, QSize(itemSize.width(), itemSize.height()), false, false);
-                    return NULL; // async operation
-                }
-            }
-        }break;
-
-    case UBMimeType::VectorImage:
-        {
-            UBGraphicsSvgItem *viitem = dynamic_cast<UBGraphicsSvgItem*>(item);
-            if (viitem)
-            {
-                pData = viitem->fileData();
-                sourceUrl = item->sourceUrl();
-            }
-        }break;
-
-    case UBMimeType::RasterImage:
-        {
-            UBGraphicsPixmapItem *pixitem = dynamic_cast<UBGraphicsPixmapItem*>(item);
-            if (pixitem)
-            {
-                 QBuffer buffer(&pData);
-                 buffer.open(QIODevice::WriteOnly);
-                 QString format = UBFileSystemUtils::extension(item->sourceUrl().toLocalFile());
-                 pixitem->pixmap().save(&buffer, format.toLatin1());
-            }
-        }break;
-
-    case UBMimeType::Group:
-    {
-        UBGraphicsGroupContainerItem* groupItem = dynamic_cast<UBGraphicsGroupContainerItem*>(item);
-        UBGraphicsGroupContainerItem* duplicatedGroup = NULL;
-
-        QList<QGraphicsItem*> duplicatedItems;
-        QList<QGraphicsItem*> children = groupItem->childItems();
-          
-        mActiveScene->setURStackEnable(false);
-        foreach(QGraphicsItem* pIt, children){
-            UBItem* pItem = dynamic_cast<UBItem*>(pIt);
-            if(pItem){ // we diong sync duplication of all childs.
-                QGraphicsItem * itemToGroup = dynamic_cast<QGraphicsItem *>(duplicateItem(pItem, false));
-                if (itemToGroup)
-                    duplicatedItems.append(itemToGroup);
-            }
-        }
-        duplicatedGroup = mActiveScene->createGroup(duplicatedItems);
-        duplicatedGroup->setTransform(groupItem->transform());
-        groupItem->setSelected(false);
-
-        retItem = dynamic_cast<UBGraphicsItem *>(duplicatedGroup);
-
-        QGraphicsItem * itemToAdd = dynamic_cast<QGraphicsItem *>(retItem);
-        if (itemToAdd)
-        {
-            mActiveScene->addItem(itemToAdd);
-            itemToAdd->setSelected(true);
-        }
-        mActiveScene->setURStackEnable(true);
-    }break;
-
-    case UBMimeType::UNKNOWN:
-        {
-            QGraphicsItem *gitem = dynamic_cast<QGraphicsItem*>(item->deepCopy());
-            if (gitem)
-            {
-                mActiveScene->addItem(gitem);
-                gitem->setPos(itemPos);
-                mLastCreatedItem = gitem;
-                gitem->setSelected(true);
-            }
-            retItem = dynamic_cast<UBGraphicsItem *>(gitem);
-        }break;
-    }
-
-    if (retItem)
-    {
-        QGraphicsItem *graphicsRetItem = dynamic_cast<QGraphicsItem *>(retItem);
-        if (mActiveScene->isURStackIsEnabled()) { //should be deleted after scene own undo stack implemented
-             UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(mActiveScene, 0, graphicsRetItem);
-             UBApplication::undoStack->push(uc);
-        }
-        return retItem;
-    }
-
-    UBItem *createdItem = downloadFinished(true, sourceUrl, srcFile, contentTypeHeader, pData, itemPos, QSize(itemSize.width(), itemSize.height()), false);
-    if (createdItem)
-    {
-        createdItem->setSourceUrl(item->sourceUrl());
-        item->copyItemParameters(createdItem);
-
-        QGraphicsItem *createdGitem = dynamic_cast<QGraphicsItem*>(createdItem);
-        if (createdGitem)
-            createdGitem->setPos(itemPos);
-        mLastCreatedItem = dynamic_cast<QGraphicsItem*>(createdItem);
-        mLastCreatedItem->setSelected(true);
-
-        retItem = dynamic_cast<UBGraphicsItem *>(createdItem);
-    }
-
-    return retItem;
-}
-
-void UBBoardController::deleteScene(int nIndex)
-{
-    if (selectedDocument()->pageCount()>=2)
-    {
-        mDeletingSceneIndex = nIndex;
-        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-        persistCurrentScene();
-        showMessage(tr("Delete page %1 from document").arg(nIndex), true);
-
-        QList<int> scIndexes;
-        scIndexes << nIndex;
-        deletePages(scIndexes);
-        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-
-        if (nIndex >= pageCount())
-            nIndex = pageCount()-1;
-        setActiveDocumentScene(nIndex);
-        showMessage(tr("Page %1 deleted").arg(nIndex));
-        QApplication::restoreOverrideCursor();
-        mDeletingSceneIndex = -1;
-    }
-}
-
-
-void UBBoardController::clearScene()
-{
-    if (mActiveScene)
-    {
-        freezeW3CWidgets(true);
-        mActiveScene->clearContent(UBGraphicsScene::clearItemsAndAnnotations);
-        updateActionStates();
-    }
-}
-
-
-void UBBoardController::clearSceneItems()
-{
-    if (mActiveScene)
-    {
-        freezeW3CWidgets(true);
-        mActiveScene->clearContent(UBGraphicsScene::clearItems);
-        updateActionStates();
-    }
-}
-
-
-void UBBoardController::clearSceneAnnotation()
-{
-    if (mActiveScene)
-    {
-        mActiveScene->clearContent(UBGraphicsScene::clearAnnotations);
-        updateActionStates();
-    }
-}
-
-void UBBoardController::clearSceneBackground()
-{
-    if (mActiveScene)
-    {
-        mActiveScene->clearContent(UBGraphicsScene::clearBackground);
-        updateActionStates();
-    }
-}
-
-void UBBoardController::showDocumentsDialog()
-{
-    if (selectedDocument())
-        persistCurrentScene();
-
-    UBApplication::mainWindow->actionLibrary->setChecked(false);
-
-}
-
-void UBBoardController::libraryDialogClosed(int ret)
-{
-    Q_UNUSED(ret);
-
-    mMainWindow->actionLibrary->setChecked(false);
-}
-
-
-void UBBoardController::blackout()
-{
-    UBApplication::applicationController->blackout();
-}
-
-
-void UBBoardController::showKeyboard(bool show)
-{
-    if(show)
-        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-    mPaletteManager->showVirtualKeyboard(show);
-}
-
-
-void UBBoardController::zoomIn(QPointF scenePoint)
-{
-    if (mControlView->transform().m11() > UB_MAX_ZOOM)
-    {
-        qApp->beep();
-        return;
-    }
-    zoom(mZoomFactor, scenePoint);
-}
-
-
-void UBBoardController::zoomOut(QPointF scenePoint)
-{
-    if ((mControlView->horizontalScrollBar()->maximum() == 0) && (mControlView->verticalScrollBar()->maximum() == 0))
-    {
-        // Do not zoom out if we reached the maximum
-        qApp->beep();
-        return;
-    }
-
-    qreal newZoomFactor = 1 / mZoomFactor;
-
-    zoom(newZoomFactor, scenePoint);
-}
-
-
-void UBBoardController::zoomRestore()
-{
-    QTransform tr;
-
-    tr.scale(mSystemScaleFactor, mSystemScaleFactor);
-    mControlView->setTransform(tr);
-
-    centerRestore();
-
-    foreach(QGraphicsItem *gi, mActiveScene->selectedItems ())
-    {
-        //force item to redraw the frame (for the anti scale calculation)
-        gi->setSelected(false);
-        gi->setSelected(true);
-    }
-
-    emit zoomChanged(1.0);
-}
-
-
-void UBBoardController::centerRestore()
-{
-    centerOn(QPointF(0,0));
-}
-
-
-void UBBoardController::centerOn(QPointF scenePoint)
-{
-    mControlView->centerOn(scenePoint);
-    UBApplication::applicationController->adjustDisplayView();
-}
-
-
-void UBBoardController::zoom(const qreal ratio, QPointF scenePoint)
-{
-
-    QPointF viewCenter = mControlView->mapToScene(QRect(0, 0, mControlView->width(), mControlView->height()).center());
-    QPointF offset = scenePoint - viewCenter;
-    QPointF scalledOffset = offset / ratio;
-
-    qreal currentZoom = ratio * mControlView->viewportTransform().m11() / mSystemScaleFactor;
-
-    qreal usedRatio = ratio;
-    if (currentZoom > UB_MAX_ZOOM)
-    {
-        currentZoom = UB_MAX_ZOOM;
-        usedRatio = currentZoom * mSystemScaleFactor / mControlView->viewportTransform().m11();
-    }
-
-    mControlView->scale(usedRatio, usedRatio);
-
-    QPointF newCenter = scenePoint - scalledOffset;
-
-    mControlView->centerOn(newCenter);
-
-    emit zoomChanged(currentZoom);
-    UBApplication::applicationController->adjustDisplayView();
-
-    emit controlViewportChanged();
-    mActiveScene->setBackgroundZoomFactor(mControlView->transform().m11());
-}
-
-
-void UBBoardController::handScroll(qreal dx, qreal dy)
-{
-    mControlView->translate(dx, dy);
-
-    UBApplication::applicationController->adjustDisplayView();
-
-    emit controlViewportChanged();
-}
-
-
-void UBBoardController::previousScene()
-{
-    if (mActiveSceneIndex > 0)
-    {
-        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-        persistCurrentScene();
-        setActiveDocumentScene(mActiveSceneIndex - 1);
-        QApplication::restoreOverrideCursor();
-    }
-
-    updateActionStates();
-    emit pageChanged();
-}
-
-
-void UBBoardController::nextScene()
-{
-    if (mActiveSceneIndex < selectedDocument()->pageCount() - 1)
-    {
-        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-        persistCurrentScene();
-        setActiveDocumentScene(mActiveSceneIndex + 1);
-        QApplication::restoreOverrideCursor();
-    }
-
-    updateActionStates();
-    emit pageChanged();
-}
-
-
-void UBBoardController::firstScene()
-{
-    if (mActiveSceneIndex > 0)
-    {
-        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-        persistCurrentScene();
-        setActiveDocumentScene(0);
-        QApplication::restoreOverrideCursor();
-    }
-
-    updateActionStates();
-    emit pageChanged();
-}
-
-
-void UBBoardController::lastScene()
-{
-    if (mActiveSceneIndex < selectedDocument()->pageCount() - 1)
-    {
-        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-        persistCurrentScene();
-        setActiveDocumentScene(selectedDocument()->pageCount() - 1);
-        QApplication::restoreOverrideCursor();
-    }
-
-    updateActionStates();
-    emit pageChanged();
-}
-
-void UBBoardController::groupButtonClicked()
-{
-    QAction *groupAction = UBApplication::mainWindow->actionGroupItems;
-    QList<QGraphicsItem*> selItems = activeScene()->selectedItems();
-    if (!selItems.count()) {
-        qDebug() << "Got grouping request when there is no any selected item on the scene";
-        return;
-    }
-
-    if (groupAction->text() == mActionGroupText) { //The only way to get information from item, considering using smth else
-        UBGraphicsGroupContainerItem *groupItem = activeScene()->createGroup(selItems);
-        groupItem->setSelected(true);
-        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-
-    }
-    else if (groupAction->text() == mActionUngroupText) {
-        //Considering one selected item and it's a group
-        if (selItems.count() > 1)
-        {
-            qDebug() << "can't make sense of ungrouping more then one item. Grouping action should be performed for that purpose";
-            return;
-        }
-        UBGraphicsGroupContainerItem *currentGroup = dynamic_cast<UBGraphicsGroupContainerItem*>(selItems.first());
-        if (currentGroup) {
-            currentGroup->destroy();
-        }
-    }
-}
-
-void UBBoardController::downloadURL(const QUrl& url, QString contentSourceUrl, const QPointF& pPos, const QSize& pSize, bool isBackground, bool internalData)
-{
-    qDebug() << "something has been dropped on the board! Url is: " << url.toString();
-    QString sUrl = url.toString();
-
-    QGraphicsItem *oldBackgroundObject = NULL;
-    if (isBackground)
-        oldBackgroundObject = mActiveScene->backgroundObject();
-
-    if(sUrl.startsWith("uniboardTool://"))
-    {
-        downloadFinished(true, url, QUrl(), "application/vnd.mnemis-uniboard-tool", QByteArray(), pPos, pSize, isBackground);
-    }
-    else if (sUrl.startsWith("file://") || sUrl.startsWith("/"))
-    {
-        QUrl formedUrl = sUrl.startsWith("file://") ? url : QUrl::fromLocalFile(sUrl);
-        QString fileName = formedUrl.toLocalFile();
-        QString contentType = UBFileSystemUtils::mimeTypeFromFileName(fileName);
-
-        bool shouldLoadFileData =
-                contentType.startsWith("image")
-                || contentType.startsWith("application/widget")
-                || contentType.startsWith("application/vnd.apple-widget");
-
-       if (shouldLoadFileData)
-       {
-            QFile file(fileName);
-            file.open(QIODevice::ReadOnly);
-            downloadFinished(true, formedUrl, QUrl(), contentType, file.readAll(), pPos, pSize, isBackground, internalData);
-            file.close();
-       }
-       else
-       {
-           // media items should be copyed in separate thread
-
-           sDownloadFileDesc desc;
-           desc.modal = false;
-           desc.srcUrl = sUrl;
-           desc.originalSrcUrl = contentSourceUrl;
-           desc.currentSize = 0;
-           desc.name = QFileInfo(url.toString()).fileName();
-           desc.totalSize = 0; // The total size will be retrieved during the download
-           desc.pos = pPos;
-           desc.size = pSize;
-           desc.isBackground = isBackground;
-
-           UBDownloadManager::downloadManager()->addFileToDownload(desc);
-       }
-    }
-    else
-    {
-        QString urlString = url.toString();
-        int parametersStringPosition = urlString.indexOf("?");
-        if(parametersStringPosition != -1)
-            urlString = urlString.left(parametersStringPosition);
-
-        // When we fall there, it means that we are dropping something from the web to the board
-        sDownloadFileDesc desc;
-        desc.modal = true;
-        desc.srcUrl = urlString;
-        desc.currentSize = 0;
-        desc.name = QFileInfo(urlString).fileName();
-        desc.totalSize = 0; // The total size will be retrieved during the download
-        desc.pos = pPos;
-        desc.size = pSize;
-        desc.isBackground = isBackground;
-
-        UBDownloadManager::downloadManager()->addFileToDownload(desc);
-    }
-
-    if (isBackground && oldBackgroundObject != mActiveScene->backgroundObject())
-    {
-        if (mActiveScene->isURStackIsEnabled()) { //should be deleted after scene own undo stack implemented
-            UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(mActiveScene, oldBackgroundObject, mActiveScene->backgroundObject());
-            UBApplication::undoStack->push(uc);
-        }
-    }
-
-
-}
-
-
-UBItem *UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QUrl contentUrl, QString pContentTypeHeader,
-                                            QByteArray pData, QPointF pPos, QSize pSize,
-                                            bool isBackground, bool internalData)
-{
-    QString mimeType = pContentTypeHeader;
-
-    // In some cases "image/jpeg;charset=" is retourned by the drag-n-drop. That is
-    // why we will check if an ; exists and take the first part (the standard allows this kind of mimetype)
-    if(mimeType.isEmpty())
-      mimeType = UBFileSystemUtils::mimeTypeFromFileName(sourceUrl.toString());
-
-    int position=mimeType.indexOf(";");
-    if(position != -1)
-        mimeType=mimeType.left(position);
-
-    UBMimeType::Enum itemMimeType = UBFileSystemUtils::mimeTypeFromString(mimeType);
-
-    if (!pSuccess)
-    {
-        showMessage(tr("Downloading content %1 failed").arg(sourceUrl.toString()));
-        return NULL;
-    }
-
-
-    mActiveScene->deselectAllItems();
-
-    if (!sourceUrl.toString().startsWith("file://") && !sourceUrl.toString().startsWith("uniboardTool://"))
-        showMessage(tr("Download finished"));
-
-    if (UBMimeType::RasterImage == itemMimeType)
-    {
-
-        qDebug() << "accepting mime type" << mimeType << "as raster image";
-
-
-        QPixmap pix;
-        if(pData.length() == 0){
-            pix.load(sourceUrl.toLocalFile());
-        }
-        else{
-            QImage img;
-            img.loadFromData(pData);
-            pix = QPixmap::fromImage(img);
-        }
-
-        UBGraphicsPixmapItem* pixItem = mActiveScene->addPixmap(pix, NULL, pPos, 1.);
-        pixItem->setSourceUrl(sourceUrl);
-
-        if (isBackground)
-        {
-            mActiveScene->setAsBackgroundObject(pixItem, true);
-        }
-        else
-        {
-            mActiveScene->scaleToFitDocumentSize(pixItem, true, UBSettings::objectInControlViewMargin);
-            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-            pixItem->setSelected(true);
-        }
-
-        return pixItem;
-    }
-    else if (UBMimeType::VectorImage == itemMimeType)
-    {
-        qDebug() << "accepting mime type" << mimeType << "as vecto image";
-
-        UBGraphicsSvgItem* svgItem = mActiveScene->addSvg(sourceUrl, pPos, pData);
-        svgItem->setSourceUrl(sourceUrl);
-
-        if (isBackground)
-        {
-            mActiveScene->setAsBackgroundObject(svgItem);
-        }
-        else
-        {
-            mActiveScene->scaleToFitDocumentSize(svgItem, true, UBSettings::objectInControlViewMargin);
-            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-            svgItem->setSelected(true);
-        }
-
-        return svgItem;
-    }
-    else if (UBMimeType::AppleWidget == itemMimeType) //mime type invented by us :-(
-    {
-        qDebug() << "accepting mime type" << mimeType << "as Apple widget";
-
-        QUrl widgetUrl = sourceUrl;
-
-        if (pData.length() > 0)
-        {
-            widgetUrl = expandWidgetToTempDir(pData, "wdgt");
-        }
-
-        UBGraphicsWidgetItem* appleWidgetItem = mActiveScene->addAppleWidget(widgetUrl, pPos);
-
-        appleWidgetItem->setSourceUrl(sourceUrl);
-
-        if (isBackground)
-        {
-            mActiveScene->setAsBackgroundObject(appleWidgetItem);
-        }
-        else
-        {
-            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-        }
-
-        return appleWidgetItem;
-    }
-    else if (UBMimeType::W3CWidget == itemMimeType)
-    {
-        qDebug() << "accepting mime type" << mimeType << "as W3C widget";
-        QUrl widgetUrl = sourceUrl;
-
-        if (pData.length() > 0)
-        {
-            widgetUrl = expandWidgetToTempDir(pData);
-        }
-
-        UBGraphicsWidgetItem *w3cWidgetItem = addW3cWidget(widgetUrl, pPos);
-
-        if (isBackground)
-        {
-            mActiveScene->setAsBackgroundObject(w3cWidgetItem);
-        }
-        else
-        {
-            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-        }
-
-        return w3cWidgetItem;
-    }
-    else if (UBMimeType::Video == itemMimeType)
-    {
-        qDebug() << "accepting mime type" << mimeType << "as video";
-
-        UBGraphicsMediaItem *mediaVideoItem = 0;
-        QUuid uuid = QUuid::createUuid();
-        if (pData.length() > 0)
-        {
-            QString destFile;
-            bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(),
-                sourceUrl.toString(),
-                UBPersistenceManager::videoDirectory,
-                uuid,
-                destFile,
-                &pData);
-            if (!b)
-            {
-                showMessage(tr("Add file operation failed: file copying error"));
-                return NULL;
-            }
-
-            QUrl url = QUrl::fromLocalFile(destFile);
-
-            mediaVideoItem = mActiveScene->addMedia(url, false, pPos);
-        }
-        else
-        {
-            qDebug() << sourceUrl.toString();
-            mediaVideoItem = addVideo(sourceUrl, false, pPos, true);
-        }
-
-        if(mediaVideoItem){
-            if (contentUrl.isEmpty())
-                mediaVideoItem->setSourceUrl(sourceUrl);
-            else
-                mediaVideoItem->setSourceUrl(contentUrl);
-            mediaVideoItem->setUuid(uuid);
-            connect(this, SIGNAL(activeSceneChanged()), mediaVideoItem, SLOT(activeSceneChanged()));
-        }
-
-        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-
-        return mediaVideoItem;
-    }
-    else if (UBMimeType::Audio == itemMimeType)
-    {
-        qDebug() << "accepting mime type" << mimeType << "as audio";
-
-        UBGraphicsMediaItem *audioMediaItem = 0;
-
-        QUuid uuid = QUuid::createUuid();
-        if (pData.length() > 0)
-        {
-            QString destFile;
-            bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(),
-                sourceUrl.toString(),
-                UBPersistenceManager::audioDirectory,
-                uuid,
-                destFile,
-                &pData);
-            if (!b)
-            {
-                showMessage(tr("Add file operation failed: file copying error"));
-                return NULL;
-            }
-
-            QUrl url = QUrl::fromLocalFile(destFile);
-
-            audioMediaItem = mActiveScene->addMedia(url, false, pPos);
-        }
-        else
-        {
-            audioMediaItem = addAudio(sourceUrl, false, pPos, true);
-        }
-
-        if(audioMediaItem){
-            if (contentUrl.isEmpty())
-                audioMediaItem->setSourceUrl(sourceUrl);
-            else
-                audioMediaItem->setSourceUrl(contentUrl);
-            audioMediaItem->setUuid(uuid);
-            connect(this, SIGNAL(activeSceneChanged()), audioMediaItem, SLOT(activeSceneChanged()));
-        }
-
-        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-
-        return audioMediaItem;
-    }
-
-    else if (UBMimeType::Flash == itemMimeType)
-    {
-
-        qDebug() << "accepting mime type" << mimeType << "as flash";
-
-        QString sUrl = sourceUrl.toString();
-
-        if (sUrl.startsWith("file://") || sUrl.startsWith("/"))
-        {
-            sUrl = sourceUrl.toLocalFile();
-        }
-
-        QTemporaryFile* eduMediaFile = 0;
-
-        if (sUrl.toLower().contains("edumedia-sciences.com"))
-        {
-            eduMediaFile = new QTemporaryFile("XXXXXX.swf");
-            if (eduMediaFile->open())
-            {
-                eduMediaFile->write(pData);
-                QFileInfo fi(*eduMediaFile);
-                sUrl = fi.absoluteFilePath();
-            }
-        }
-
-        QSize size;
-
-        if (pSize.height() > 0 && pSize.width() > 0)
-            size = pSize;
-        else
-            size = mActiveScene->nominalSize() * .8;
-
-        Q_UNUSED(internalData)
-
-        QString widgetUrl = UBGraphicsW3CWidgetItem::createNPAPIWrapper(sUrl, mimeType, size);
-        emit npapiWidgetCreated(widgetUrl);
-
-        if (widgetUrl.length() > 0)
-        {
-            UBGraphicsWidgetItem *widgetItem = mActiveScene->addW3CWidget(QUrl::fromLocalFile(widgetUrl), pPos);
-            widgetItem->setUuid(QUuid::createUuid());
-            widgetItem->setSourceUrl(QUrl::fromLocalFile(widgetUrl));
-
-            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-
-            return widgetItem;
-        }
-
-        if (eduMediaFile)
-            delete eduMediaFile;
-
-    }
-    else if (UBMimeType::PDF == itemMimeType)
-    {
-        qDebug() << "accepting mime type" << mimeType << "as PDF";
-        qDebug() << "pdf data length: " << pData.size();
-        qDebug() << "sourceurl : " + sourceUrl.toString();
-        int result = 0;
-        if(!sourceUrl.isEmpty()){
-            QStringList fileNames;
-            fileNames << sourceUrl.toLocalFile();
-            result = UBDocumentManager::documentManager()->addFilesToDocument(selectedDocument(), fileNames);
-        }
-        else if(pData.size()){
-            QTemporaryFile pdfFile("XXXXXX.pdf");
-            if (pdfFile.open())
-            {
-                pdfFile.write(pData);
-                QStringList fileNames;
-                fileNames << pdfFile.fileName();
-                result = UBDocumentManager::documentManager()->addFilesToDocument(selectedDocument(), fileNames);
-                pdfFile.close();
-            }
-        }
-
-        if (result){
-            selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-        }
-    }
-    else if (UBMimeType::UniboardTool == itemMimeType)
-    {
-        qDebug() << "accepting mime type" << mimeType << "as Uniboard Tool";
-
-        if (sourceUrl.toString() == UBToolsManager::manager()->compass.id)
-        {
-            mActiveScene->addCompass(pPos);
-            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-        }
-        else if (sourceUrl.toString() == UBToolsManager::manager()->ruler.id)
-        {
-            mActiveScene->addRuler(pPos);
-            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-        }
-        else if (sourceUrl.toString() == UBToolsManager::manager()->protractor.id)
-        {
-            mActiveScene->addProtractor(pPos);
-            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-        }
-        else if (sourceUrl.toString() == UBToolsManager::manager()->triangle.id)
-        {
-            mActiveScene->addTriangle(pPos);
-            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-        }
-        else if (sourceUrl.toString() == UBToolsManager::manager()->cache.id)
-        {
-            mActiveScene->addCache();
-            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-        }
-        else if (sourceUrl.toString() == UBToolsManager::manager()->magnifier.id)
-        {
-            UBMagnifierParams params;
-            params.x = controlContainer()->geometry().width() / 2;
-            params.y = controlContainer()->geometry().height() / 2;
-            params.zoom = 2;
-            params.sizePercentFromScene = 20;
-            mActiveScene->addMagnifier(params);
-            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-        }
-        else if (sourceUrl.toString() == UBToolsManager::manager()->mask.id)
-        {
-            mActiveScene->addMask(pPos);
-            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-        }
-        else if (sourceUrl.toString() == UBToolsManager::manager()->aristo.id)
-        {
-            mActiveScene->addAristo(pPos);
-            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-        }
-        else
-        {
-            showMessage(tr("Unknown tool type %1").arg(sourceUrl.toString()));
-        }
-    }
-    else if (sourceUrl.toString().contains("edumedia-sciences.com"))
-    {
-        qDebug() << "accepting url " << sourceUrl.toString() << "as eduMedia content";
-
-        QTemporaryFile eduMediaZipFile("XXXXXX.edumedia");
-        if (eduMediaZipFile.open())
-        {
-            eduMediaZipFile.write(pData);
-            eduMediaZipFile.close();
-
-            QString tempDir = UBFileSystemUtils::createTempDir("uniboard-edumedia");
-
-            UBFileSystemUtils::expandZipToDir(eduMediaZipFile, tempDir);
-
-            QDir appDir(tempDir);
-
-            foreach(QString subDirName, appDir.entryList(QDir::AllDirs))
-            {
-                QDir subDir(tempDir + "/" + subDirName + "/contents");
-
-                foreach(QString fileName, subDir.entryList(QDir::Files))
-                {
-                    if (fileName.toLower().endsWith(".swf"))
-                    {
-                        QString swfFile = tempDir + "/" + subDirName + "/contents/" + fileName;
-
-                        QSize size;
-
-                        if (pSize.height() > 0 && pSize.width() > 0)
-                            size = pSize;
-                        else
-                            size = mActiveScene->nominalSize() * .8;
-
-                        QString widgetUrl = UBGraphicsW3CWidgetItem::createNPAPIWrapper(swfFile, "application/x-shockwave-flash", size);
-
-                        if (widgetUrl.length() > 0)
-                        {
-                            UBGraphicsWidgetItem *widgetItem = mActiveScene->addW3CWidget(QUrl::fromLocalFile(widgetUrl), pPos);
-
-                            widgetItem->setSourceUrl(sourceUrl);
-
-                            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-
-                            return widgetItem;
-                        }
-                    }
-                }
-            }
-        }
-    }
-    else
-    {
-        showMessage(tr("Unknown content type %1").arg(pContentTypeHeader));
-        qWarning() << "ignoring mime type" << pContentTypeHeader ;
-    }
-
-    return NULL;
-}
-
-void UBBoardController::setActiveDocumentScene(int pSceneIndex)
-{
-    setActiveDocumentScene(selectedDocument(), pSceneIndex);
-}
-
-void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, const int pSceneIndex, bool forceReload)
-{
-    saveViewState();
-
-    bool documentChange = selectedDocument() != pDocumentProxy;
-
-    int index = pSceneIndex;
-    int sceneCount = pDocumentProxy->pageCount();
-    if (index >= sceneCount && sceneCount > 0)
-        index = sceneCount - 1;
-
-    UBGraphicsScene* targetScene = UBPersistenceManager::persistenceManager()->loadDocumentScene(pDocumentProxy, index);
-
-    bool sceneChange = targetScene != mActiveScene;
-
-    if (targetScene)
-    {
-        freezeW3CWidgets(true);
-
-        persistCurrentScene();
-
-        ClearUndoStack();
-
-        mActiveScene = targetScene;
-        mActiveSceneIndex = index;
-        setDocument(pDocumentProxy, forceReload);
-
-        updateSystemScaleFactor();
-
-        mControlView->setScene(mActiveScene);
-        mDisplayView->setScene(mActiveScene);
-        mActiveScene->setBackgroundZoomFactor(mControlView->transform().m11());
-        pDocumentProxy->setDefaultDocumentSize(mActiveScene->nominalSize());
-        updatePageSizeState();
-
-        adjustDisplayViews();
-
-        UBSettings::settings()->setDarkBackground(mActiveScene->isDarkBackground());
-        UBSettings::settings()->setCrossedBackground(mActiveScene->isCrossedBackground());
-
-        freezeW3CWidgets(false);
-    }
-
-    selectionChanged();
-
-    updateBackgroundActionsState(mActiveScene->isDarkBackground(), mActiveScene->isCrossedBackground());
-    updateBackgroundState();
-
-    if(documentChange)
-    {
-        UBGraphicsTextItem::lastUsedTextColor = QColor();
-    }
-
-
-    if (sceneChange)
-    {
-        emit activeSceneChanged();
-        emit pageChanged();
-    }
-}
-
-
-void UBBoardController::moveSceneToIndex(int source, int target)
-{
-    if (selectedDocument())
-    {
-
-        persistCurrentScene();
-
-        UBDocumentContainer::movePageToIndex(source, target);
-
-        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-        UBMetadataDcSubsetAdaptor::persist(selectedDocument());
-        mMovingSceneIndex = source;
-        setActiveDocumentScene(target);
-        mMovingSceneIndex = -1;
-
-    }
-}
-
-void UBBoardController::ClearUndoStack()
-{
-// The code has been removed because it leads to a strange error and because the final goal has never been
-// reached on tests and sound a little bit strange.
-// Strange error: item->scene() crashes the application because item doesn't implement scene() method. I'm
-// not able to give all the steps to reproduce this error sistematically but is quite frequent (~ twice per utilisation hours)
-// strange goal: if item is on the undocommand, the item->scene() is null and the item is not on the deleted scene item list then
-// then it's deleted.
-
-    //    QSet<QGraphicsItem*> uniqueItems;
-//    // go through all stack command
-//    for(int i = 0; i < UBApplication::undoStack->count(); i++)
-//    {
-
-//        UBAbstractUndoCommand *abstractCmd = (UBAbstractUndoCommand*)UBApplication::undoStack->command(i);
-//        if(abstractCmd->getType() != UBAbstractUndoCommand::undotype_GRAPHICITEM)
-//            continue;
-
-//        UBGraphicsItemUndoCommand *cmd = (UBGraphicsItemUndoCommand*)UBApplication::undoStack->command(i);
-
-//        // go through all added and removed objects, for create list of unique objects
-//        // grouped items will be deleted by groups, so we don't need do delete that items.
-//        QSetIterator<QGraphicsItem*> itAdded(cmd->GetAddedList());
-//        while (itAdded.hasNext())
-//        {
-//            QGraphicsItem* item = itAdded.next();
-//            if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type()))
-//                uniqueItems.insert(item);
-//        }
-
-//        QSetIterator<QGraphicsItem*> itRemoved(cmd->GetRemovedList());
-//        while (itRemoved.hasNext())
-//        {
-//            QGraphicsItem* item = itRemoved.next();
-//            if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type()))
-//                uniqueItems.insert(item);
-//        }
-//    }
-
-//    // go through all unique items, and check, ot on scene, or not.
-//    // if not on scene, than item can be deleted
-
-//    QSetIterator<QGraphicsItem*> itUniq(uniqueItems);
-//    while (itUniq.hasNext())
-//    {
-//        QGraphicsItem* item = itUniq.next();
-//        UBGraphicsScene *scene = NULL;
-//        if (item->scene()) {
-//            scene = dynamic_cast<UBGraphicsScene*>(item->scene());
-//        }
-//        if(!scene)
-//        {
-//           if (!mActiveScene->deleteItem(item))
-//               delete item;
-//        }
-//    }
-
-    // clear stack, and command list
-    UBApplication::undoStack->clear();
-
-}
-
-void UBBoardController::adjustDisplayViews()
-{
-    if (UBApplication::applicationController)
-    {
-        UBApplication::applicationController->adjustDisplayView();
-        UBApplication::applicationController->adjustPreviousViews(mActiveSceneIndex, selectedDocument());
-    }
-}
-
-
-void UBBoardController::changeBackground(bool isDark, bool isCrossed)
-{
-    bool currentIsDark = mActiveScene->isDarkBackground();
-    bool currentIsCrossed = mActiveScene->isCrossedBackground();
-
-    if ((isDark != currentIsDark) || (currentIsCrossed != isCrossed))
-    {
-        UBSettings::settings()->setDarkBackground(isDark);
-        UBSettings::settings()->setCrossedBackground(isCrossed);
-
-        mActiveScene->setBackground(isDark, isCrossed);
-
-        updateBackgroundState();
-
-        emit backgroundChanged();
-    }
-}
-
-void UBBoardController::boardViewResized(QResizeEvent* event)
-{
-    Q_UNUSED(event);
-
-    int innerMargin = UBSettings::boardMargin;
-    int userHeight = mControlContainer->height() - (2 * innerMargin);
-
-    mMessageWindow->move(innerMargin, innerMargin + userHeight - mMessageWindow->height());
-    mMessageWindow->adjustSizeAndPosition();
-
-    UBApplication::applicationController->initViewState(
-                mControlView->horizontalScrollBar()->value(),
-                mControlView->verticalScrollBar()->value());
-
-    updateSystemScaleFactor();
-
-    mControlView->centerOn(0,0);
-
-    if (mDisplayView)
-        mDisplayView->centerOn(0,0);
-
-    mPaletteManager->containerResized();
-
-    UBApplication::boardController->controlView()->scene()->moveMagnifier();
-
-}
-
-
-void UBBoardController::documentWillBeDeleted(UBDocumentProxy* pProxy)
-{
-    if (selectedDocument() == pProxy)
-    {
-        if (!mIsClosing)
-            setActiveDocumentScene(UBPersistenceManager::persistenceManager()->createDocument());
-    }
-}
-
-
-void UBBoardController::showMessage(const QString& message, bool showSpinningWheel)
-{
-    mMessageWindow->showMessage(message, showSpinningWheel);
-}
-
-
-void UBBoardController::hideMessage()
-{
-    mMessageWindow->hideMessage();
-}
-
-
-void UBBoardController::setDisabled(bool disable)
-{
-    mMainWindow->boardToolBar->setDisabled(disable);
-    mControlView->setDisabled(disable);
-}
-
-
-void UBBoardController::selectionChanged()
-{
-    updateActionStates();
-    emit pageSelectionChanged(activeSceneIndex());
-}
-
-
-void UBBoardController::undoRedoStateChange(bool canUndo)
-{
-    Q_UNUSED(canUndo);
-
-    mMainWindow->actionUndo->setEnabled(UBApplication::undoStack->canUndo());
-    mMainWindow->actionRedo->setEnabled(UBApplication::undoStack->canRedo());
-
-    updateActionStates();
-}
-
-
-void UBBoardController::updateActionStates()
-{
-    mMainWindow->actionBack->setEnabled(selectedDocument() && (mActiveSceneIndex > 0));
-    mMainWindow->actionForward->setEnabled(selectedDocument() && (mActiveSceneIndex < selectedDocument()->pageCount() - 1));
-    mMainWindow->actionErase->setEnabled(mActiveScene && !mActiveScene->isEmpty());
-}
-
-
-UBGraphicsScene* UBBoardController::activeScene() const
-{
-    return mActiveScene;
-}
-
-
-int UBBoardController::activeSceneIndex() const
-{
-    return mActiveSceneIndex;
-}
-
-
-void UBBoardController::documentSceneChanged(UBDocumentProxy* pDocumentProxy, int pIndex)
-{
-    Q_UNUSED(pIndex);
-
-    if(selectedDocument() == pDocumentProxy)
-    {
-        setActiveDocumentScene(mActiveSceneIndex);
-    }
-}
-
-void UBBoardController::closing()
-{
-    mIsClosing = true;
-    ClearUndoStack();
-    lastWindowClosed();
-}
-
-void UBBoardController::lastWindowClosed()
-{
-    if (!mCleanupDone)
-    {
-        bool teacherGuideModified = false;
-        if(UBApplication::boardController->paletteManager()->teacherGuideDockWidget())
-            teacherGuideModified = UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified();
-        if (selectedDocument()->pageCount() == 1 && (!mActiveScene || mActiveScene->isEmpty()) && !teacherGuideModified)
-        {
-            UBPersistenceManager::persistenceManager()->deleteDocument(selectedDocument());
-        }
-        else
-        {
-            persistCurrentScene();
-        }
-
-        UBPersistenceManager::persistenceManager()->purgeEmptyDocuments();
-
-        mCleanupDone = true;
-    }
-}
-
-
-
-void UBBoardController::setColorIndex(int pColorIndex)
-{
-    UBDrawingController::drawingController()->setColorIndex(pColorIndex);
-
-    if (UBDrawingController::drawingController()->stylusTool() != UBStylusTool::Marker &&
-            UBDrawingController::drawingController()->stylusTool() != UBStylusTool::Line &&
-            UBDrawingController::drawingController()->stylusTool() != UBStylusTool::Text &&
-            UBDrawingController::drawingController()->stylusTool() != UBStylusTool::Selector)
-    {
-        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Pen);
-    }
-
-    if (UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Pen ||
-            UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line ||
-            UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Text ||
-            UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Selector)
-    {
-        mPenColorOnDarkBackground = UBSettings::settings()->penColors(true).at(pColorIndex);
-        mPenColorOnLightBackground = UBSettings::settings()->penColors(false).at(pColorIndex);
-
-        if (UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Selector)
-        {
-            // If we are in mode board, then do that
-            if(UBApplication::applicationController->displayMode() == UBApplicationController::Board)
-            {
-                UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Pen);
-                mMainWindow->actionPen->setChecked(true);
-            }
-        }
-
-        emit penColorChanged();
-    }
-    else if (UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Marker)
-    {
-        mMarkerColorOnDarkBackground = UBSettings::settings()->markerColors(true).at(pColorIndex);
-        mMarkerColorOnLightBackground = UBSettings::settings()->markerColors(false).at(pColorIndex);
-    }
-}
-
-void UBBoardController::colorPaletteChanged()
-{
-    mPenColorOnDarkBackground = UBSettings::settings()->penColor(true);
-    mPenColorOnLightBackground = UBSettings::settings()->penColor(false);
-    mMarkerColorOnDarkBackground = UBSettings::settings()->markerColor(true);
-    mMarkerColorOnLightBackground = UBSettings::settings()->markerColor(false);
-}
-
-
-qreal UBBoardController::currentZoom()
-{
-    if (mControlView)
-        return mControlView->viewportTransform().m11() / mSystemScaleFactor;
-    else
-        return 1.0;
-}
-
-void UBBoardController::removeTool(UBToolWidget* toolWidget)
-{
-    toolWidget->hide();
-
-    delete toolWidget;
-}
-
-void UBBoardController::hide()
-{
-    UBApplication::mainWindow->actionLibrary->setChecked(false);
-}
-
-void UBBoardController::show()
-{
-    UBApplication::mainWindow->actionLibrary->setChecked(false);
-}
-
-void UBBoardController::persistCurrentScene()
-{
-    if(UBPersistenceManager::persistenceManager()
-            && selectedDocument() && mActiveScene && mActiveSceneIndex != mDeletingSceneIndex
-            && (mActiveSceneIndex >= 0) && mActiveSceneIndex != mMovingSceneIndex
-            && (mActiveScene->isModified() || (UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified())))
-    {
-        UBPersistenceManager::persistenceManager()->persistDocumentScene(selectedDocument(), mActiveScene, mActiveSceneIndex);
-        updatePage(mActiveSceneIndex);
-    }
-}
-
-void UBBoardController::updateSystemScaleFactor()
-{
-    qreal newScaleFactor = 1.0;
-
-    if (mActiveScene)
-    {
-        QSize pageNominalSize = mActiveScene->nominalSize();
-        //we're going to keep scale factor untouched if the size is custom
-        QMap<DocumentSizeRatio::Enum, QSize> sizesMap = UBSettings::settings()->documentSizes;
-        if(pageNominalSize == sizesMap.value(DocumentSizeRatio::Ratio16_9) || pageNominalSize == sizesMap.value(DocumentSizeRatio::Ratio4_3))
-        {
-            QSize controlSize = controlViewport();
-
-            qreal hFactor = ((qreal)controlSize.width()) / ((qreal)pageNominalSize.width());
-            qreal vFactor = ((qreal)controlSize.height()) / ((qreal)pageNominalSize.height());
-
-            newScaleFactor = qMin(hFactor, vFactor);
-        }
-    }
-
-    if (mSystemScaleFactor != newScaleFactor)
-    {
-        mSystemScaleFactor = newScaleFactor;
-        emit systemScaleFactorChanged(newScaleFactor);
-    }
-
-    UBGraphicsScene::SceneViewState viewState = mActiveScene->viewState();
-
-    QTransform scalingTransform;
-
-    qreal scaleFactor = viewState.zoomFactor * mSystemScaleFactor;
-    scalingTransform.scale(scaleFactor, scaleFactor);
-
-    mControlView->setTransform(scalingTransform);
-    mControlView->horizontalScrollBar()->setValue(viewState.horizontalPosition);
-    mControlView->verticalScrollBar()->setValue(viewState.verticalPostition);
-    mActiveScene->setBackgroundZoomFactor(mControlView->transform().m11());}
-
-
-void UBBoardController::setWidePageSize(bool checked)
-{
-    Q_UNUSED(checked);
-    QSize newSize = UBSettings::settings()->documentSizes.value(DocumentSizeRatio::Ratio16_9);
-
-    if (mActiveScene->nominalSize() != newSize)
-    {
-        UBPageSizeUndoCommand* uc = new UBPageSizeUndoCommand(mActiveScene, mActiveScene->nominalSize(), newSize);
-        UBApplication::undoStack->push(uc);
-
-        setPageSize(newSize);
-    }
-}
-
-
-void UBBoardController::setRegularPageSize(bool checked)
-{
-    Q_UNUSED(checked);
-    QSize newSize = UBSettings::settings()->documentSizes.value(DocumentSizeRatio::Ratio4_3);
-
-    if (mActiveScene->nominalSize() != newSize)
-    {
-        UBPageSizeUndoCommand* uc = new UBPageSizeUndoCommand(mActiveScene, mActiveScene->nominalSize(), newSize);
-        UBApplication::undoStack->push(uc);
-
-        setPageSize(newSize);
-    }
-}
-
-
-void UBBoardController::setPageSize(QSize newSize)
-{
-    if (mActiveScene->nominalSize() != newSize)
-    {
-        mActiveScene->setNominalSize(newSize);
-
-        saveViewState();
-
-        updateSystemScaleFactor();
-        updatePageSizeState();
-        adjustDisplayViews();
-        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-
-        UBSettings::settings()->pageSize->set(newSize);
-    }
-}
-
-void UBBoardController::notifyCache(bool visible)
-{
-    if(visible)
-    {
-        emit cacheEnabled();
-    }
-    else
-    {
-        emit cacheDisabled();
-    }
-    mCacheWidgetIsEnabled = visible;
-}
-
-void UBBoardController::updatePageSizeState()
-{
-    if (mActiveScene->nominalSize() == UBSettings::settings()->documentSizes.value(DocumentSizeRatio::Ratio16_9))
-    {
-        mMainWindow->actionWidePageSize->setChecked(true);
-    }
-    else if(mActiveScene->nominalSize() == UBSettings::settings()->documentSizes.value(DocumentSizeRatio::Ratio4_3))
-    {
-        mMainWindow->actionRegularPageSize->setChecked(true);
-    }
-    else
-    {
-        mMainWindow->actionCustomPageSize->setChecked(true);
-    }
-}
-
-
-void UBBoardController::saveViewState()
-{
-    if (mActiveScene)
-    {
-        mActiveScene->setViewState(UBGraphicsScene::SceneViewState(currentZoom(),
-                                                                   mControlView->horizontalScrollBar()->value(),
-                                                                   mControlView->verticalScrollBar()->value()));
-    }
-}
-
-
-void UBBoardController::updateBackgroundState()
-{
-    //adjust background style
-    QString newBackgroundStyle;
-
-    if (mActiveScene && mActiveScene->isDarkBackground())
-    {
-        newBackgroundStyle ="QWidget {background-color: #0E0E0E}";
-    }
-    else
-    {
-        newBackgroundStyle ="QWidget {background-color: #F1F1F1}";
-    }
-}
-
-void UBBoardController::stylusToolChanged(int tool)
-{
-    if (UBPlatformUtils::hasVirtualKeyboard() && mPaletteManager->mKeyboardPalette)
-    {
-        UBStylusTool::Enum eTool = (UBStylusTool::Enum)tool;
-        if(eTool != UBStylusTool::Selector && eTool != UBStylusTool::Text)
-        {
-            if(mPaletteManager->mKeyboardPalette->m_isVisible)
-                UBApplication::mainWindow->actionVirtualKeyboard->activate(QAction::Trigger);
-        }
-    }
-
-    updateBackgroundState();
-}
-
-
-QUrl UBBoardController::expandWidgetToTempDir(const QByteArray& pZipedData, const QString& ext)
-{
-    QUrl widgetUrl;
-    QTemporaryFile tmp;
-
-    if (tmp.open())
-    {
-        tmp.write(pZipedData);
-        tmp.flush();
-        tmp.close();
-
-        QString tmpDir = UBFileSystemUtils::createTempDir() + "." + ext;
-
-        if (UBFileSystemUtils::expandZipToDir(tmp, tmpDir))
-        {
-            widgetUrl = QUrl::fromLocalFile(tmpDir);
-        }
-    }
-
-    return widgetUrl;
-}
-
-
-void UBBoardController::grabScene(const QRectF& pSceneRect)
-{
-    if (mActiveScene)
-    {
-        QImage image(pSceneRect.width(), pSceneRect.height(), QImage::Format_ARGB32);
-        image.fill(Qt::transparent);
-
-        QRectF targetRect(0, 0, pSceneRect.width(), pSceneRect.height());
-        QPainter painter(&image);
-        painter.setRenderHint(QPainter::SmoothPixmapTransform);
-        painter.setRenderHint(QPainter::Antialiasing);
-
-        mActiveScene->setRenderingContext(UBGraphicsScene::NonScreen);
-        mActiveScene->setRenderingQuality(UBItem::RenderingQualityHigh);
-
-        mActiveScene->render(&painter, targetRect, pSceneRect);
-
-        mActiveScene->setRenderingContext(UBGraphicsScene::Screen);
-        mActiveScene->setRenderingQuality(UBItem::RenderingQualityNormal);
-
-        mPaletteManager->addItem(QPixmap::fromImage(image));
-        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-    }
-}
-
-UBGraphicsMediaItem* UBBoardController::addVideo(const QUrl& pSourceUrl, bool startPlay, const QPointF& pos, bool bUseSource)
-{
-    QUuid uuid = QUuid::createUuid();
-    QUrl concreteUrl = pSourceUrl;
-
-    // media file is not in document folder yet
-    if (!bUseSource)
-    {
-        QString destFile;
-        bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(),
-                    pSourceUrl.toLocalFile(),
-                    UBPersistenceManager::videoDirectory,
-                    uuid,
-                    destFile);
-        if (!b)
-        {
-            showMessage(tr("Add file operation failed: file copying error"));
-            return NULL;
-        }
-        concreteUrl = QUrl::fromLocalFile(destFile);
-    }// else we just use source Url.
-
-
-    UBGraphicsMediaItem* vi = mActiveScene->addMedia(concreteUrl, startPlay, pos);
-    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-
-    if (vi) {
-        vi->setUuid(uuid);
-        vi->setSourceUrl(pSourceUrl);
-    }
-
-    return vi;
-
-}
-
-UBGraphicsMediaItem* UBBoardController::addAudio(const QUrl& pSourceUrl, bool startPlay, const QPointF& pos, bool bUseSource)
-{
-    QUuid uuid = QUuid::createUuid();
-    QUrl concreteUrl = pSourceUrl;
-
-    // media file is not in document folder yet
-    if (!bUseSource)
-    {
-        QString destFile;
-        bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(),
-            pSourceUrl.toLocalFile(),
-            UBPersistenceManager::audioDirectory,
-            uuid,
-            destFile);
-        if (!b)
-        {
-            showMessage(tr("Add file operation failed: file copying error"));
-            return NULL;
-        }
-        concreteUrl = QUrl::fromLocalFile(destFile);
-    }// else we just use source Url.
-
-    UBGraphicsMediaItem* ai = mActiveScene->addMedia(concreteUrl, startPlay, pos);
-    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-
-    if (ai){
-        ai->setUuid(uuid);
-        ai->setSourceUrl(pSourceUrl);
-    }
-
-    return ai;
-
-}
-
-UBGraphicsWidgetItem *UBBoardController::addW3cWidget(const QUrl &pUrl, const QPointF &pos)
-{
-    UBGraphicsWidgetItem* w3cWidgetItem = 0;
-
-    QUuid uuid = QUuid::createUuid();
-
-    QString destPath;
-    if (!UBPersistenceManager::persistenceManager()->addGraphicsWidgteToDocument(selectedDocument(), pUrl.toLocalFile(), uuid, destPath))
-        return NULL;
-    QUrl newUrl = QUrl::fromLocalFile(destPath);
-
-    w3cWidgetItem = mActiveScene->addW3CWidget(newUrl, pos);
-
-    if (w3cWidgetItem) {
-        w3cWidgetItem->setUuid(uuid);
-        w3cWidgetItem->setOwnFolder(newUrl);
-        w3cWidgetItem->setSourceUrl(pUrl);
-
-        QString struuid = UBStringUtils::toCanonicalUuid(uuid);
-        QString snapshotPath = selectedDocument()->persistencePath() +  "/" + UBPersistenceManager::widgetDirectory + "/" + struuid + ".png";
-        w3cWidgetItem->setSnapshotPath(QUrl::fromLocalFile(snapshotPath));
-        UBGraphicsWidgetItem *tmpItem = dynamic_cast<UBGraphicsWidgetItem*>(w3cWidgetItem);
-        if (tmpItem && tmpItem->scene())
-           tmpItem->takeSnapshot().save(snapshotPath, "PNG");
-
-    }
-
-    return w3cWidgetItem;
-}
-
-void UBBoardController::cut()
-{
-    //---------------------------------------------------------//
-
-    QList<QGraphicsItem*> selectedItems;
-    foreach(QGraphicsItem* gi, mActiveScene->selectedItems())
-        selectedItems << gi;
-
-    //---------------------------------------------------------//
-
-    QList<UBItem*> selected;
-    foreach(QGraphicsItem* gi, selectedItems)
-    {
-        gi->setSelected(false);
-
-        UBItem* ubItem = dynamic_cast<UBItem*>(gi);
-        UBGraphicsItem *ubGi =  dynamic_cast<UBGraphicsItem*>(gi);
-
-        if (ubItem && ubGi && !mActiveScene->tools().contains(gi))
-        {
-            selected << ubItem->deepCopy();
-            ubGi->remove();
-        }
-    }
-
-    //---------------------------------------------------------//
-
-    if (selected.size() > 0)
-    {
-        QClipboard *clipboard = QApplication::clipboard();
-
-        UBMimeDataGraphicsItem*  mimeGi = new UBMimeDataGraphicsItem(selected);
-
-        mimeGi->setData(UBApplication::mimeTypeUniboardPageItem, QByteArray());
-        clipboard->setMimeData(mimeGi);
-
-        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-    }
-
-    //---------------------------------------------------------//
-}
-
-
-void UBBoardController::copy()
-{
-    QList<UBItem*> selected;
-
-    foreach(QGraphicsItem* gi, mActiveScene->selectedItems())
-    {
-        UBItem* ubItem = dynamic_cast<UBItem*>(gi);
-
-        if (ubItem && !mActiveScene->tools().contains(gi))
-        {
-            UBItem *itemCopy = ubItem->deepCopy();
-            if (itemCopy)
-                selected << itemCopy;
-        }
-    }
-
-    if (selected.size() > 0)
-    {
-        QClipboard *clipboard = QApplication::clipboard();
-
-        UBMimeDataGraphicsItem*  mimeGi = new UBMimeDataGraphicsItem(selected);
-
-        mimeGi->setData(UBApplication::mimeTypeUniboardPageItem, QByteArray());
-        clipboard->setMimeData(mimeGi);
-
-    }
-}
-
-
-void UBBoardController::paste()
-{
-    QClipboard *clipboard = QApplication::clipboard();
-    QPointF pos(0, 0);
-    processMimeData(clipboard->mimeData(), pos);
-
-    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-}
-
-
-void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPointF& pPos)
-{
-    if (pMimeData->hasFormat(UBApplication::mimeTypeUniboardPage))
-    {
-        const UBMimeData* mimeData = qobject_cast <const UBMimeData*>(pMimeData);
-
-        if (mimeData)
-        {
-            int previousActiveSceneIndex = activeSceneIndex();
-            int previousPageCount = selectedDocument()->pageCount();
-
-            foreach (UBMimeDataItem sourceItem, mimeData->items())
-                addScene(sourceItem.documentProxy(), sourceItem.sceneIndex(), true);
-
-            if (selectedDocument()->pageCount() < previousPageCount + mimeData->items().count())
-                setActiveDocumentScene(previousActiveSceneIndex);
-            else
-                setActiveDocumentScene(previousActiveSceneIndex + 1);
-
-            return;
-        }
-    }
-
-    if (pMimeData->hasFormat(UBApplication::mimeTypeUniboardPageItem))
-    {
-        const UBMimeDataGraphicsItem* mimeData = qobject_cast <const UBMimeDataGraphicsItem*>(pMimeData);
-
-        if (mimeData)
-        {
-            foreach(UBItem* item, mimeData->items())
-            {
-                QGraphicsItem* pItem = dynamic_cast<QGraphicsItem*>(item);
-                if(NULL != pItem){
-                    duplicateItem(item);
-                }
-            }
-
-            return;
-        }
-    }
-
-    if(pMimeData->hasHtml())
-    {
-        QString qsHtml = pMimeData->html();
-        QString url = UBApplication::urlFromHtml(qsHtml);
-
-        if("" != url)
-        {
-            downloadURL(url, QString(), pPos);
-            return;
-        }
-    }
-
-    if (pMimeData->hasUrls())
-    {
-        QList<QUrl> urls = pMimeData->urls();
-
-        int index = 0;
-
-        const UBFeaturesMimeData *internalMimeData = qobject_cast<const UBFeaturesMimeData*>(pMimeData);
-        bool internalData = false;
-        if (internalMimeData) {
-            internalData = true;
-        }
-
-        foreach(const QUrl url, urls){
-            QPointF pos(pPos + QPointF(index * 15, index * 15));
-
-            downloadURL(url, QString(), pos, QSize(), false,  internalData);
-            index++;
-        }
-
-        return;
-    }
-
-    if (pMimeData->hasImage())
-    {
-        QImage img = qvariant_cast<QImage> (pMimeData->imageData());
-        QPixmap pix = QPixmap::fromImage(img);
-
-        // validate that the image is really an image, webkit does not fill properly the image mime data
-        if (pix.width() != 0 && pix.height() != 0)
-        {
-            mActiveScene->addPixmap(pix, NULL, pPos, 1.);
-            return;
-        }
-    }
-
-    if (pMimeData->hasText())
-    {
-        if("" != pMimeData->text()){
-            // Sometimes, it is possible to have an URL as text. we check here if it is the case
-            QString qsTmp = pMimeData->text().remove(QRegExp("[\\0]"));
-            if(qsTmp.startsWith("http")){
-                downloadURL(QUrl(qsTmp), QString(), pPos);
-            }
-            else{
-                mActiveScene->addTextHtml(pMimeData->html(), pPos);
-            }
-        }
-        else{
-#ifdef Q_WS_MACX
-                //  With Safari, in 95% of the drops, the mime datas are hidden in Apple Web Archive pasteboard type.
-                //  This is due to the way Safari is working so we have to dig into the pasteboard in order to retrieve
-                //  the data.
-                QString qsUrl = UBPlatformUtils::urlFromClipboard();
-                if("" != qsUrl){
-                    // We finally got the url of the dropped ressource! Let's import it!
-                    downloadURL(qsUrl, qsUrl, pPos);
-                    return;
-                }
-#endif
-        }
-    }
-}
-
-
-void UBBoardController::togglePodcast(bool checked)
-{
-    if (UBPodcastController::instance())
-        UBPodcastController::instance()->toggleRecordingPalette(checked);
-}
-
-void UBBoardController::moveGraphicsWidgetToControlView(UBGraphicsWidgetItem* graphicsWidget)
-{
-    mActiveScene->setURStackEnable(false);
-    UBGraphicsItem *toolW3C = duplicateItem(dynamic_cast<UBItem *>(graphicsWidget));
-    UBGraphicsWidgetItem *copyedGraphicsWidget = NULL;
-
-    if (UBGraphicsWidgetItem::Type == toolW3C->type())
-        copyedGraphicsWidget = static_cast<UBGraphicsWidgetItem *>(toolW3C);
-
-    UBToolWidget *toolWidget = new UBToolWidget(copyedGraphicsWidget, mControlView);
-
-    graphicsWidget->remove(false);
-    mActiveScene->addItemToDeletion(graphicsWidget);
-
-    mActiveScene->setURStackEnable(true);
-
-    QPoint controlViewPos = mControlView->mapFromScene(graphicsWidget->sceneBoundingRect().center());
-    toolWidget->centerOn(mControlView->mapTo(mControlContainer, controlViewPos));
-    toolWidget->show();
-}
-
-
-void UBBoardController::moveToolWidgetToScene(UBToolWidget* toolWidget)
-{
-    UBGraphicsWidgetItem *widgetToScene = toolWidget->toolWidget();
-
-    widgetToScene->resetTransform();
-
-    QPoint mainWindowCenter = toolWidget->mapTo(mMainWindow, QPoint(toolWidget->width(), toolWidget->height()) / 2);
-    QPoint controlViewCenter = mControlView->mapFrom(mMainWindow, mainWindowCenter);
-    QPointF scenePos = mControlView->mapToScene(controlViewCenter);
-
-    mActiveScene->addGraphicsWidget(widgetToScene, scenePos);
-
-    toolWidget->remove();
-}
-
-
-void UBBoardController::updateBackgroundActionsState(bool isDark, bool isCrossed)
-{
-    if (isDark && !isCrossed)
-        mMainWindow->actionPlainDarkBackground->setChecked(true);
-    else if (isDark && isCrossed)
-        mMainWindow->actionCrossedDarkBackground->setChecked(true);
-    else if (!isDark && isCrossed)
-        mMainWindow->actionCrossedLightBackground->setChecked(true);
-    else
-        mMainWindow->actionPlainLightBackground->setChecked(true);
-}
-
-
-void UBBoardController::addItem()
-{
-    QString defaultPath = UBSettings::settings()->lastImportToLibraryPath->get().toString();
-
-    QString extensions;
-    foreach(QString ext, UBSettings::imageFileExtensions)
-    {
-        extensions += " *.";
-        extensions += ext;
-    }
-
-    QString filename = QFileDialog::getOpenFileName(mControlContainer, tr("Add Item"),
-                                                    defaultPath,
-                                                    tr("All Supported (%1)").arg(extensions), NULL, QFileDialog::DontUseNativeDialog);
-
-    if (filename.length() > 0)
-    {
-        mPaletteManager->addItem(QUrl::fromLocalFile(filename));
-        QFileInfo source(filename);
-        UBSettings::settings()->lastImportToLibraryPath->set(QVariant(source.absolutePath()));
-    }
-}
-
-void UBBoardController::importPage()
-{
-    int pageCount = selectedDocument()->pageCount();
-    if (UBApplication::documentController->addFileToDocument(selectedDocument()))
-    {
-        setActiveDocumentScene(selectedDocument(), pageCount, true);
-    }
-}
-
-void UBBoardController::notifyPageChanged()
-{
-    emit pageChanged();
-}
-
-void UBBoardController::onDownloadModalFinished()
-{
-
-}
-
-void UBBoardController::displayMetaData(QMap<QString, QString> metadatas)
-{
-    emit displayMetadata(metadatas);
-}
-
-void UBBoardController::freezeW3CWidgets(bool freeze)
-{
-    if (mActiveSceneIndex >= 0)
-    {
-        QList<QGraphicsItem *> list = UBApplication::boardController->activeScene()->getFastAccessItems();
-        foreach(QGraphicsItem *item, list)
-        {
-            freezeW3CWidget(item, freeze);
-        }
-    }
-}
-
-void UBBoardController::freezeW3CWidget(QGraphicsItem *item, bool freeze)
-{
-    if(item->type() == UBGraphicsW3CWidgetItem::Type)
-    {
-        UBGraphicsW3CWidgetItem* item_casted = dynamic_cast<UBGraphicsW3CWidgetItem*>(item);
-        if (0 == item_casted)
-            return;
-
-        if (freeze) {
-            item_casted->load(QUrl(UBGraphicsW3CWidgetItem::freezedWidgetFilePath()));
-        } else
-            item_casted->loadMainHtml();
-    }
-}
+
+
+
+#include "UBBoardController.h"
+
+#include <QtGui>
+#include <QtWebKit>
+#include <QDir>
+
+#include "frameworks/UBFileSystemUtils.h"
+#include "frameworks/UBPlatformUtils.h"
+
+#include "core/UBApplication.h"
+#include "core/UBSettings.h"
+#include "core/UBSetting.h"
+#include "core/UBPersistenceManager.h"
+#include "core/UBApplicationController.h"
+#include "core/UBDocumentManager.h"
+#include "core/UBMimeData.h"
+#include "core/UBDownloadManager.h"
+#include "core/UBDisplayManager.h"
+
+#include "network/UBHttpGet.h"
+
+#include "gui/UBMessageWindow.h"
+#include "gui/UBResources.h"
+#include "gui/UBToolbarButtonGroup.h"
+#include "gui/UBMainWindow.h"
+#include "gui/UBToolWidget.h"
+#include "gui/UBKeyboardPalette.h"
+#include "gui/UBMagnifer.h"
+#include "gui/UBDockPaletteWidget.h"
+#include "gui/UBDockTeacherGuideWidget.h"
+#include "gui/UBTeacherGuideWidget.h"
+
+#include "domain/UBGraphicsPixmapItem.h"
+#include "domain/UBGraphicsItemUndoCommand.h"
+#include "domain/UBGraphicsProxyWidget.h"
+#include "domain/UBGraphicsSvgItem.h"
+#include "domain/UBGraphicsWidgetItem.h"
+#include "domain/UBGraphicsMediaItem.h"
+#include "domain/UBGraphicsPDFItem.h"
+#include "domain/UBGraphicsTextItem.h"
+#include "domain/UBPageSizeUndoCommand.h"
+#include "domain/UBGraphicsGroupContainerItem.h"
+#include "domain/UBItem.h"
+#include "board/UBFeaturesController.h"
+#include "domain/UBGraphicsStrokesGroup.h"
+
+#include "gui/UBFeaturesWidget.h"
+
+#include "tools/UBToolsManager.h"
+
+#include "document/UBDocumentProxy.h"
+#include "document/UBDocumentController.h"
+
+#include "board/UBDrawingController.h"
+#include "board/UBBoardView.h"
+
+#include "podcast/UBPodcastController.h"
+
+#include "adaptors/UBMetadataDcSubsetAdaptor.h"
+#include "adaptors/UBSvgSubsetAdaptor.h"
+
+#include "UBBoardPaletteManager.h"
+
+#include "core/UBSettings.h"
+
+#include "core/memcheck.h"
+
+#include "web/UBWebController.h"
+
+UBBoardController::UBBoardController(UBMainWindow* mainWindow)
+    : UBDocumentContainer(mainWindow->centralWidget())
+    , mMainWindow(mainWindow)
+    , mActiveScene(0)
+    , mActiveSceneIndex(-1)
+    , mPaletteManager(0)
+    , mSoftwareUpdateDialog(0)
+    , mMessageWindow(0)
+    , mControlView(0)
+    , mDisplayView(0)
+    , mControlContainer(0)
+    , mControlLayout(0)
+    , mZoomFactor(1.0)
+    , mIsClosing(false)
+    , mSystemScaleFactor(1.0)
+    , mCleanupDone(false)
+    , mCacheWidgetIsEnabled(false)
+    , mDeletingSceneIndex(-1)
+    , mMovingSceneIndex(-1)
+    , mActionGroupText(tr("Group"))
+    , mActionUngroupText(tr("Ungroup"))
+{
+    mZoomFactor = UBSettings::settings()->boardZoomFactor->get().toDouble();
+
+    int penColorIndex = UBSettings::settings()->penColorIndex();
+    int markerColorIndex = UBSettings::settings()->markerColorIndex();
+
+    mPenColorOnDarkBackground = UBSettings::settings()->penColors(true).at(penColorIndex);
+    mPenColorOnLightBackground = UBSettings::settings()->penColors(false).at(penColorIndex);
+    mMarkerColorOnDarkBackground = UBSettings::settings()->markerColors(true).at(markerColorIndex);
+    mMarkerColorOnLightBackground = UBSettings::settings()->markerColors(false).at(markerColorIndex);
+
+    QDesktopWidget* desktop = UBApplication::desktop();
+    int dpiCommon = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2;
+    int sPixelsPerMillimeter = qRound(dpiCommon / UBGeometryUtils::inchSize);
+    UBSettings::settings()->crossSize = 10*sPixelsPerMillimeter;
+}
+
+
+void UBBoardController::init()
+{
+    setupViews();
+    setupToolbar();
+
+    connect(UBApplication::undoStack, SIGNAL(canUndoChanged(bool))
+            , this, SLOT(undoRedoStateChange(bool)));
+
+    connect(UBApplication::undoStack, SIGNAL(canRedoChanged (bool))
+            , this, SLOT(undoRedoStateChange(bool)));
+
+    connect(UBDrawingController::drawingController(), SIGNAL(stylusToolChanged(int))
+            , this, SLOT(setToolCursor(int)));
+
+    connect(UBDrawingController::drawingController(), SIGNAL(stylusToolChanged(int))
+            , this, SLOT(stylusToolChanged(int)));
+
+    connect(UBApplication::app(), SIGNAL(lastWindowClosed())
+            , this, SLOT(lastWindowClosed()));
+
+    connect(UBDownloadManager::downloadManager(), SIGNAL(downloadModalFinished()), this, SLOT(onDownloadModalFinished()));
+    connect(UBDownloadManager::downloadManager(), SIGNAL(addDownloadedFileToBoard(bool,QUrl,QUrl,QString,QByteArray,QPointF,QSize,bool,bool)), this, SLOT(downloadFinished(bool,QUrl,QUrl,QString,QByteArray,QPointF,QSize,bool,bool)));
+
+    UBDocumentProxy* doc = UBPersistenceManager::persistenceManager()->createNewDocument();
+
+    setActiveDocumentScene(doc);
+
+    connect(UBApplication::mainWindow->actionGroupItems, SIGNAL(triggered()), this, SLOT(groupButtonClicked()));
+
+    undoRedoStateChange(true);
+}
+
+
+UBBoardController::~UBBoardController()
+{
+    delete mDisplayView;
+}
+
+
+int UBBoardController::currentPage()
+{
+    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
+        return mActiveSceneIndex;
+    return mActiveSceneIndex + 1;
+}
+
+void UBBoardController::setupViews()
+{
+    mControlContainer = new QWidget(mMainWindow->centralWidget());
+
+    mControlLayout = new QHBoxLayout(mControlContainer);
+    mControlLayout->setContentsMargins(0, 0, 0, 0);
+
+    mControlView = new UBBoardView(this, mControlContainer, true, false);
+    mControlView->setInteractive(true);
+    mControlView->setMouseTracking(true);
+
+    mControlView->grabGesture(Qt::SwipeGesture);
+
+    mControlView->setTransformationAnchor(QGraphicsView::NoAnchor);
+
+    mControlLayout->addWidget(mControlView);
+    mControlContainer->setObjectName("ubBoardControlContainer");
+    mMainWindow->addBoardWidget(mControlContainer);
+
+    connect(mControlView, SIGNAL(resized(QResizeEvent*)), this, SLOT(boardViewResized(QResizeEvent*)));
+
+    // TODO UB 4.x Optimization do we have to create the display view even if their is
+    // only 1 screen
+    //
+    mDisplayView = new UBBoardView(this, UBItemLayerType::FixedBackground, UBItemLayerType::Tool, 0);
+    mDisplayView->setInteractive(false);
+    mDisplayView->setTransformationAnchor(QGraphicsView::NoAnchor);
+
+    mMessageWindow = new UBMessageWindow(mControlView);
+    mMessageWindow->hide();
+
+    mPaletteManager = new UBBoardPaletteManager(mControlContainer, this);
+    connect(this, SIGNAL(activeSceneChanged()), mPaletteManager, SLOT(activeSceneChanged()));
+
+}
+
+
+void UBBoardController::setupLayout()
+{
+    if(mPaletteManager)
+        mPaletteManager->setupLayout();
+}
+
+
+void UBBoardController::setBoxing(QRect displayRect)
+{
+    if (displayRect.isNull())
+    {
+        mControlLayout->setContentsMargins(0, 0, 0, 0);
+        return;
+    }
+
+    qreal controlWidth = (qreal)mMainWindow->centralWidget()->width();
+    qreal controlHeight = (qreal)mMainWindow->centralWidget()->height();
+    qreal displayWidth = (qreal)displayRect.width();
+    qreal displayHeight = (qreal)displayRect.height();
+
+    qreal displayRatio = displayWidth / displayHeight;
+    qreal controlRatio = controlWidth / controlHeight;
+
+    if (displayRatio < controlRatio)
+    {
+        // Pillarboxing
+        int boxWidth = (controlWidth - (displayWidth * (controlHeight / displayHeight))) / 2;
+        mControlLayout->setContentsMargins(boxWidth, 0, boxWidth, 0);
+    }
+    else if (displayRatio > controlRatio)
+    {
+        // Letterboxing
+        int boxHeight = (controlHeight - (displayHeight * (controlWidth / displayWidth))) / 2;
+        mControlLayout->setContentsMargins(0, boxHeight, 0, boxHeight);
+    }
+    else
+    {
+        // No boxing
+        mControlLayout->setContentsMargins(0, 0, 0, 0);
+    }
+}
+
+
+QSize UBBoardController::displayViewport()
+{
+    return mDisplayView->geometry().size();
+}
+
+
+QSize UBBoardController::controlViewport()
+{
+    return mControlView->geometry().size();
+}
+
+
+QRectF UBBoardController::controlGeometry()
+{
+    return mControlView->geometry();
+}
+
+
+void UBBoardController::setupToolbar()
+{
+    UBSettings *settings = UBSettings::settings();
+
+    // Setup color choice widget
+    QList<QAction *> colorActions;
+    colorActions.append(mMainWindow->actionColor0);
+    colorActions.append(mMainWindow->actionColor1);
+    colorActions.append(mMainWindow->actionColor2);
+    colorActions.append(mMainWindow->actionColor3);
+
+    UBToolbarButtonGroup *colorChoice =
+            new UBToolbarButtonGroup(mMainWindow->boardToolBar, colorActions);
+
+    mMainWindow->boardToolBar->insertWidget(mMainWindow->actionBackgrounds, colorChoice);
+
+    connect(settings->appToolBarDisplayText, SIGNAL(changed(QVariant)), colorChoice, SLOT(displayText(QVariant)));
+    connect(colorChoice, SIGNAL(activated(int)), this, SLOT(setColorIndex(int)));
+    connect(UBDrawingController::drawingController(), SIGNAL(colorIndexChanged(int)), colorChoice, SLOT(setCurrentIndex(int)));
+    connect(UBDrawingController::drawingController(), SIGNAL(colorPaletteChanged()), colorChoice, SLOT(colorPaletteChanged()));
+    connect(UBDrawingController::drawingController(), SIGNAL(colorPaletteChanged()), this, SLOT(colorPaletteChanged()));
+
+    colorChoice->displayText(QVariant(settings->appToolBarDisplayText->get().toBool()));
+    colorChoice->colorPaletteChanged();
+
+    // Setup line width choice widget
+    QList<QAction *> lineWidthActions;
+    lineWidthActions.append(mMainWindow->actionLineSmall);
+    lineWidthActions.append(mMainWindow->actionLineMedium);
+    lineWidthActions.append(mMainWindow->actionLineLarge);
+
+    UBToolbarButtonGroup *lineWidthChoice =
+            new UBToolbarButtonGroup(mMainWindow->boardToolBar, lineWidthActions);
+
+    connect(settings->appToolBarDisplayText, SIGNAL(changed(QVariant)), lineWidthChoice, SLOT(displayText(QVariant)));
+
+    connect(lineWidthChoice, SIGNAL(activated(int))
+            , UBDrawingController::drawingController(), SLOT(setLineWidthIndex(int)));
+
+    connect(UBDrawingController::drawingController(), SIGNAL(lineWidthIndexChanged(int))
+            , lineWidthChoice, SLOT(setCurrentIndex(int)));
+
+    lineWidthChoice->displayText(QVariant(settings->appToolBarDisplayText->get().toBool()));
+
+    mMainWindow->boardToolBar->insertWidget(mMainWindow->actionBackgrounds, lineWidthChoice);
+
+    //-----------------------------------------------------------//
+    // Setup eraser width choice widget
+
+    QList<QAction *> eraserWidthActions;
+    eraserWidthActions.append(mMainWindow->actionEraserSmall);
+    eraserWidthActions.append(mMainWindow->actionEraserMedium);
+    eraserWidthActions.append(mMainWindow->actionEraserLarge);
+
+    UBToolbarButtonGroup *eraserWidthChoice =
+            new UBToolbarButtonGroup(mMainWindow->boardToolBar, eraserWidthActions);
+
+    mMainWindow->boardToolBar->insertWidget(mMainWindow->actionBackgrounds, eraserWidthChoice);
+
+    connect(settings->appToolBarDisplayText, SIGNAL(changed(QVariant)), eraserWidthChoice, SLOT(displayText(QVariant)));
+    connect(eraserWidthChoice, SIGNAL(activated(int)), UBDrawingController::drawingController(), SLOT(setEraserWidthIndex(int)));
+
+    eraserWidthChoice->displayText(QVariant(settings->appToolBarDisplayText->get().toBool()));
+    eraserWidthChoice->setCurrentIndex(settings->eraserWidthIndex());
+
+    mMainWindow->boardToolBar->insertSeparator(mMainWindow->actionBackgrounds);
+
+    //-----------------------------------------------------------//
+
+    UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->boardToolBar, mMainWindow->actionBoard);
+    UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->tutorialToolBar, mMainWindow->actionBoard);
+
+    UBApplication::app()->decorateActionMenu(mMainWindow->actionMenu);
+
+    mMainWindow->actionBoard->setVisible(false);
+
+    mMainWindow->webToolBar->hide();
+    mMainWindow->documentToolBar->hide();
+    mMainWindow->tutorialToolBar->hide();
+
+    connectToolbar();
+    initToolbarTexts();
+}
+
+
+void UBBoardController::setToolCursor(int tool)
+{
+    if (mActiveScene)
+    {
+        mActiveScene->setToolCursor(tool);
+    }
+
+    mControlView->setToolCursor(tool);
+}
+
+
+void UBBoardController::connectToolbar()
+{
+    connect(mMainWindow->actionAdd, SIGNAL(triggered()), this, SLOT(addItem()));
+    connect(mMainWindow->actionNewPage, SIGNAL(triggered()), this, SLOT(addScene()));
+    connect(mMainWindow->actionDuplicatePage, SIGNAL(triggered()), this, SLOT(duplicateScene()));
+
+    connect(mMainWindow->actionClearPage, SIGNAL(triggered()), this, SLOT(clearScene()));
+    connect(mMainWindow->actionEraseItems, SIGNAL(triggered()), this, SLOT(clearSceneItems()));
+    connect(mMainWindow->actionEraseAnnotations, SIGNAL(triggered()), this, SLOT(clearSceneAnnotation()));
+    connect(mMainWindow->actionEraseBackground,SIGNAL(triggered()),this,SLOT(clearSceneBackground()));
+
+    connect(mMainWindow->actionUndo, SIGNAL(triggered()), UBApplication::undoStack, SLOT(undo()));
+    connect(mMainWindow->actionRedo, SIGNAL(triggered()), UBApplication::undoStack, SLOT(redo()));
+    connect(mMainWindow->actionRedo, SIGNAL(triggered()), this, SLOT(startScript()));
+    connect(mMainWindow->actionBack, SIGNAL( triggered()), this, SLOT(previousScene()));
+    connect(mMainWindow->actionForward, SIGNAL(triggered()), this, SLOT(nextScene()));
+    connect(mMainWindow->actionSleep, SIGNAL(triggered()), this, SLOT(stopScript()));
+    connect(mMainWindow->actionSleep, SIGNAL(triggered()), this, SLOT(blackout()));
+    connect(mMainWindow->actionVirtualKeyboard, SIGNAL(triggered(bool)), this, SLOT(showKeyboard(bool)));
+    connect(mMainWindow->actionImportPage, SIGNAL(triggered()), this, SLOT(importPage()));
+}
+
+void UBBoardController::startScript()
+{
+    freezeW3CWidgets(false);
+}
+
+void UBBoardController::stopScript()
+{
+    freezeW3CWidgets(true);
+}
+
+void UBBoardController::initToolbarTexts()
+{
+    QList<QAction*> allToolbarActions;
+
+    allToolbarActions << mMainWindow->boardToolBar->actions();
+    allToolbarActions << mMainWindow->webToolBar->actions();
+    allToolbarActions << mMainWindow->documentToolBar->actions();
+
+    foreach(QAction* action, allToolbarActions)
+    {
+        QString nominalText = action->text();
+        QString shortText = truncate(nominalText, 48);
+        QPair<QString, QString> texts(nominalText, shortText);
+
+        mActionTexts.insert(action, texts);
+    }
+}
+
+
+void UBBoardController::setToolbarTexts()
+{
+    bool highResolution = mMainWindow->width() > 1024;
+    QSize iconSize;
+
+    if (highResolution)
+        iconSize = QSize(48, 32);
+    else
+        iconSize = QSize(32, 32);
+
+    mMainWindow->boardToolBar->setIconSize(iconSize);
+    mMainWindow->webToolBar->setIconSize(iconSize);
+    mMainWindow->documentToolBar->setIconSize(iconSize);
+
+    foreach(QAction* action, mActionTexts.keys())
+    {
+        QPair<QString, QString> texts = mActionTexts.value(action);
+
+        if (highResolution)
+            action->setText(texts.first);
+        else
+        {
+            action->setText(texts.second);
+        }
+
+        action->setToolTip(texts.first);
+    }
+}
+
+
+QString UBBoardController::truncate(QString text, int maxWidth)
+{
+    QFontMetricsF fontMetrics(mMainWindow->font());
+    return fontMetrics.elidedText(text, Qt::ElideRight, maxWidth);
+}
+
+
+void UBBoardController::stylusToolDoubleClicked(int tool)
+{
+    if (tool == UBStylusTool::ZoomIn || tool == UBStylusTool::ZoomOut)
+    {
+        zoomRestore();
+    }
+    else if (tool == UBStylusTool::Hand)
+    {
+        centerRestore();
+    }
+}
+
+void UBBoardController::addScene()
+{
+    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+    persistCurrentScene();
+
+    UBDocumentContainer::addPage(mActiveSceneIndex + 1);
+
+    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+
+    setActiveDocumentScene(mActiveSceneIndex + 1);
+    QApplication::restoreOverrideCursor();
+}
+
+void UBBoardController::addScene(UBGraphicsScene* scene, bool replaceActiveIfEmpty)
+{
+    if (scene)
+    {
+        if (scene->document() && (scene->document() != selectedDocument()))
+        {
+            foreach(QUrl relativeFile, scene->relativeDependencies())
+            {
+                QString source = scene->document()->persistencePath() + "/" + relativeFile.toString();
+                QString target = selectedDocument()->persistencePath() + "/" + relativeFile.toString();
+
+                QFileInfo fi(target);
+                QDir d = fi.dir();
+
+                d.mkpath(d.absolutePath());
+                QFile::copy(source, target);
+            }
+        }
+
+        if (replaceActiveIfEmpty && mActiveScene->isEmpty())
+        {
+            setActiveDocumentScene(mActiveSceneIndex);
+        }
+        else
+        {
+            persistCurrentScene();
+            UBPersistenceManager::persistenceManager()->insertDocumentSceneAt(selectedDocument(), scene, mActiveSceneIndex + 1);
+            setActiveDocumentScene(mActiveSceneIndex + 1);
+        }
+
+        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+    }
+}
+
+
+void UBBoardController::addScene(UBDocumentProxy* proxy, int sceneIndex, bool replaceActiveIfEmpty)
+{
+    UBGraphicsScene* scene = UBPersistenceManager::persistenceManager()->loadDocumentScene(proxy, sceneIndex);
+
+    if (scene)
+    {
+        addScene(scene, replaceActiveIfEmpty);
+    }
+}
+
+void UBBoardController::duplicateScene(int nIndex)
+{
+    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+    persistCurrentScene();
+
+    QList<int> scIndexes;
+    scIndexes << nIndex;
+    duplicatePages(scIndexes);
+    insertThumbPage(nIndex);
+    emit documentThumbnailsUpdated(this);
+    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+
+    setActiveDocumentScene(nIndex + 1);
+    QApplication::restoreOverrideCursor();
+
+    emit pageChanged();
+}
+
+void UBBoardController::duplicateScene()
+{
+    if (UBApplication::applicationController->displayMode() != UBApplicationController::Board)
+        return;
+    duplicateScene(mActiveSceneIndex);
+}
+
+UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item, bool bAsync)
+{
+    if (!item)
+        return NULL;
+
+    UBGraphicsItem *retItem = NULL;
+
+    mLastCreatedItem = NULL;
+
+    QUrl sourceUrl;
+    QByteArray pData;
+
+    //common parameters for any item
+    QPointF itemPos;
+    QSizeF itemSize;
+
+    QGraphicsItem *commonItem = dynamic_cast<QGraphicsItem*>(item);
+    if (commonItem)
+    {
+        qreal shifting = UBSettings::settings()->objectFrameWidth;
+        itemPos = commonItem->pos() + QPointF(shifting,shifting);
+        itemSize = commonItem->boundingRect().size();
+        commonItem->setSelected(false);
+    }
+
+    UBMimeType::Enum itemMimeType;
+
+    QString srcFile = item->sourceUrl().toLocalFile();
+    if (srcFile.isEmpty())
+        srcFile = item->sourceUrl().toString();
+
+    QString contentTypeHeader;
+    if (!srcFile.isEmpty())
+        contentTypeHeader = UBFileSystemUtils::mimeTypeFromFileName(srcFile);
+
+    if(NULL != qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(commonItem))
+        itemMimeType = UBMimeType::Group;
+    else
+        itemMimeType = UBFileSystemUtils::mimeTypeFromString(contentTypeHeader);
+
+    switch(static_cast<int>(itemMimeType))
+    {
+    case UBMimeType::AppleWidget:
+    case UBMimeType::W3CWidget:
+        {
+            UBGraphicsWidgetItem *witem = dynamic_cast<UBGraphicsWidgetItem*>(item);
+            if (witem)
+            {
+                sourceUrl = witem->getOwnFolder();
+            }
+        }break;
+
+    case UBMimeType::Video:
+    case UBMimeType::Audio:
+        {
+            UBGraphicsMediaItem *mitem = dynamic_cast<UBGraphicsMediaItem*>(item);
+            if (mitem)
+            {
+                sourceUrl = mitem->mediaFileUrl();
+                if (bAsync)
+                {
+                    downloadURL(sourceUrl, srcFile, itemPos, QSize(itemSize.width(), itemSize.height()), false, false);
+                    return NULL; // async operation
+                }
+            }
+        }break;
+
+    case UBMimeType::VectorImage:
+        {
+            UBGraphicsSvgItem *viitem = dynamic_cast<UBGraphicsSvgItem*>(item);
+            if (viitem)
+            {
+                pData = viitem->fileData();
+                sourceUrl = item->sourceUrl();
+            }
+        }break;
+
+    case UBMimeType::RasterImage:
+        {
+            UBGraphicsPixmapItem *pixitem = dynamic_cast<UBGraphicsPixmapItem*>(item);
+            if (pixitem)
+            {
+                 QBuffer buffer(&pData);
+                 buffer.open(QIODevice::WriteOnly);
+                 QString format = UBFileSystemUtils::extension(item->sourceUrl().toLocalFile());
+                 pixitem->pixmap().save(&buffer, format.toLatin1());
+            }
+        }break;
+
+    case UBMimeType::Group:
+    {
+        UBGraphicsGroupContainerItem* groupItem = dynamic_cast<UBGraphicsGroupContainerItem*>(item);
+        UBGraphicsGroupContainerItem* duplicatedGroup = NULL;
+
+        QList<QGraphicsItem*> duplicatedItems;
+        QList<QGraphicsItem*> children = groupItem->childItems();
+
+        mActiveScene->setURStackEnable(false);
+        foreach(QGraphicsItem* pIt, children){
+            UBItem* pItem = dynamic_cast<UBItem*>(pIt);
+            if(pItem){ // we diong sync duplication of all childs.
+                QGraphicsItem * itemToGroup = dynamic_cast<QGraphicsItem *>(duplicateItem(pItem, false));
+                if (itemToGroup)
+                    duplicatedItems.append(itemToGroup);
+            }
+        }
+        duplicatedGroup = mActiveScene->createGroup(duplicatedItems);
+        duplicatedGroup->setTransform(groupItem->transform());
+        groupItem->setSelected(false);
+
+        retItem = dynamic_cast<UBGraphicsItem *>(duplicatedGroup);
+
+        QGraphicsItem * itemToAdd = dynamic_cast<QGraphicsItem *>(retItem);
+        if (itemToAdd)
+        {
+            mActiveScene->addItem(itemToAdd);
+            itemToAdd->setSelected(true);
+        }
+        mActiveScene->setURStackEnable(true);
+    }break;
+
+    case UBMimeType::UNKNOWN:
+        {
+            QGraphicsItem *gitem = dynamic_cast<QGraphicsItem*>(item->deepCopy());
+            if (gitem)
+            {
+                mActiveScene->addItem(gitem);
+                gitem->setPos(itemPos);
+                mLastCreatedItem = gitem;
+                gitem->setSelected(true);
+            }
+            retItem = dynamic_cast<UBGraphicsItem *>(gitem);
+        }break;
+    }
+
+    if (retItem)
+    {
+        QGraphicsItem *graphicsRetItem = dynamic_cast<QGraphicsItem *>(retItem);
+        if (mActiveScene->isURStackIsEnabled()) { //should be deleted after scene own undo stack implemented
+             UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(mActiveScene, 0, graphicsRetItem);
+             UBApplication::undoStack->push(uc);
+        }
+        return retItem;
+    }
+
+    UBItem *createdItem = downloadFinished(true, sourceUrl, srcFile, contentTypeHeader, pData, itemPos, QSize(itemSize.width(), itemSize.height()));
+    if (createdItem)
+    {
+        createdItem->setSourceUrl(item->sourceUrl());
+        item->copyItemParameters(createdItem);
+
+        QGraphicsItem *createdGitem = dynamic_cast<QGraphicsItem*>(createdItem);
+        if (createdGitem)
+            createdGitem->setPos(itemPos);
+        mLastCreatedItem = dynamic_cast<QGraphicsItem*>(createdItem);
+        mLastCreatedItem->setSelected(true);
+
+        retItem = dynamic_cast<UBGraphicsItem *>(createdItem);
+    }
+
+    return retItem;
+}
+
+void UBBoardController::deleteScene(int nIndex)
+{
+    if (selectedDocument()->pageCount()>=2)
+    {
+        mDeletingSceneIndex = nIndex;
+        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+        persistCurrentScene();
+        showMessage(tr("Delete page %1 from document").arg(nIndex+1), true);
+
+        QList<int> scIndexes;
+        scIndexes << nIndex;
+        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+
+        if (nIndex >= pageCount())
+            nIndex = pageCount()-1;
+        setActiveDocumentScene(nIndex-1);
+        deletePages(scIndexes);
+        showMessage(tr("Page %1 deleted").arg(nIndex));
+        QApplication::restoreOverrideCursor();
+        mDeletingSceneIndex = -1;
+    }
+}
+
+void UBBoardController::regenerateThumbnails()
+{
+    mDocumentNavigator->generateThumbnails(this);
+}
+
+void UBBoardController::clearScene()
+{
+    if (mActiveScene)
+    {
+        freezeW3CWidgets(true);
+        mActiveScene->clearContent(UBGraphicsScene::clearItemsAndAnnotations);
+        updateActionStates();
+    }
+}
+
+
+void UBBoardController::clearSceneItems()
+{
+    if (mActiveScene)
+    {
+        freezeW3CWidgets(true);
+        mActiveScene->clearContent(UBGraphicsScene::clearItems);
+        updateActionStates();
+    }
+}
+
+
+void UBBoardController::clearSceneAnnotation()
+{
+    if (mActiveScene)
+    {
+        mActiveScene->clearContent(UBGraphicsScene::clearAnnotations);
+        updateActionStates();
+    }
+}
+
+void UBBoardController::clearSceneBackground()
+{
+    if (mActiveScene)
+    {
+        mActiveScene->clearContent(UBGraphicsScene::clearBackground);
+        updateActionStates();
+    }
+}
+
+void UBBoardController::showDocumentsDialog()
+{
+    if (selectedDocument())
+        persistCurrentScene();
+
+    UBApplication::mainWindow->actionLibrary->setChecked(false);
+
+}
+
+void UBBoardController::libraryDialogClosed(int ret)
+{
+    Q_UNUSED(ret);
+
+    mMainWindow->actionLibrary->setChecked(false);
+}
+
+
+void UBBoardController::blackout()
+{
+    UBApplication::applicationController->blackout();
+}
+
+
+void UBBoardController::showKeyboard(bool show)
+{
+    if(show)
+        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+    mPaletteManager->showVirtualKeyboard(show);
+}
+
+
+void UBBoardController::zoomIn(QPointF scenePoint)
+{
+    if (mControlView->transform().m11() > UB_MAX_ZOOM)
+    {
+        qApp->beep();
+        return;
+    }
+    zoom(mZoomFactor, scenePoint);
+}
+
+
+void UBBoardController::zoomOut(QPointF scenePoint)
+{
+    if ((mControlView->horizontalScrollBar()->maximum() == 0) && (mControlView->verticalScrollBar()->maximum() == 0))
+    {
+        // Do not zoom out if we reached the maximum
+        qApp->beep();
+        return;
+    }
+
+    qreal newZoomFactor = 1 / mZoomFactor;
+
+    zoom(newZoomFactor, scenePoint);
+}
+
+
+void UBBoardController::zoomRestore()
+{
+    QTransform tr;
+
+    tr.scale(mSystemScaleFactor, mSystemScaleFactor);
+    mControlView->setTransform(tr);
+
+    centerRestore();
+
+    foreach(QGraphicsItem *gi, mActiveScene->selectedItems ())
+    {
+        //force item to redraw the frame (for the anti scale calculation)
+        gi->setSelected(false);
+        gi->setSelected(true);
+    }
+
+    emit zoomChanged(1.0);
+}
+
+
+void UBBoardController::centerRestore()
+{
+    centerOn(QPointF(0,0));
+}
+
+
+void UBBoardController::centerOn(QPointF scenePoint)
+{
+    mControlView->centerOn(scenePoint);
+    UBApplication::applicationController->adjustDisplayView();
+}
+
+
+void UBBoardController::zoom(const qreal ratio, QPointF scenePoint)
+{
+
+    QPointF viewCenter = mControlView->mapToScene(QRect(0, 0, mControlView->width(), mControlView->height()).center());
+    QPointF offset = scenePoint - viewCenter;
+    QPointF scalledOffset = offset / ratio;
+
+    qreal currentZoom = ratio * mControlView->viewportTransform().m11() / mSystemScaleFactor;
+
+    qreal usedRatio = ratio;
+    if (currentZoom > UB_MAX_ZOOM)
+    {
+        currentZoom = UB_MAX_ZOOM;
+        usedRatio = currentZoom * mSystemScaleFactor / mControlView->viewportTransform().m11();
+    }
+
+    mControlView->scale(usedRatio, usedRatio);
+
+    QPointF newCenter = scenePoint - scalledOffset;
+
+    mControlView->centerOn(newCenter);
+
+    emit zoomChanged(currentZoom);
+    UBApplication::applicationController->adjustDisplayView();
+
+    emit controlViewportChanged();
+    mActiveScene->setBackgroundZoomFactor(mControlView->transform().m11());
+}
+
+
+void UBBoardController::handScroll(qreal dx, qreal dy)
+{
+    mControlView->translate(dx, dy);
+
+    UBApplication::applicationController->adjustDisplayView();
+
+    emit controlViewportChanged();
+}
+
+
+void UBBoardController::previousScene()
+{
+    if (mActiveSceneIndex > 0)
+    {
+        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+        persistCurrentScene();
+        setActiveDocumentScene(mActiveSceneIndex - 1);
+        QApplication::restoreOverrideCursor();
+    }
+
+    updateActionStates();
+    emit pageChanged();
+}
+
+
+void UBBoardController::nextScene()
+{
+    if (mActiveSceneIndex < selectedDocument()->pageCount() - 1)
+    {
+        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+        persistCurrentScene();
+        setActiveDocumentScene(mActiveSceneIndex + 1);
+        QApplication::restoreOverrideCursor();
+    }
+
+    updateActionStates();
+    emit pageChanged();
+}
+
+
+void UBBoardController::firstScene()
+{
+    if (mActiveSceneIndex > 0)
+    {
+        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+        persistCurrentScene();
+        setActiveDocumentScene(0);
+        QApplication::restoreOverrideCursor();
+    }
+
+    updateActionStates();
+    emit pageChanged();
+}
+
+
+void UBBoardController::lastScene()
+{
+    if (mActiveSceneIndex < selectedDocument()->pageCount() - 1)
+    {
+        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+        persistCurrentScene();
+        setActiveDocumentScene(selectedDocument()->pageCount() - 1);
+        QApplication::restoreOverrideCursor();
+    }
+
+    updateActionStates();
+    emit pageChanged();
+}
+
+void UBBoardController::groupButtonClicked()
+{
+    QAction *groupAction = UBApplication::mainWindow->actionGroupItems;
+    QList<QGraphicsItem*> selItems = activeScene()->selectedItems();
+    if (!selItems.count()) {
+        qDebug() << "Got grouping request when there is no any selected item on the scene";
+        return;
+    }
+
+    if (groupAction->text() == mActionGroupText) { //The only way to get information from item, considering using smth else
+        UBGraphicsGroupContainerItem *groupItem = activeScene()->createGroup(selItems);
+        groupItem->setSelected(true);
+        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+
+    }
+    else if (groupAction->text() == mActionUngroupText) {
+        //Considering one selected item and it's a group
+        if (selItems.count() > 1)
+        {
+            qDebug() << "can't make sense of ungrouping more then one item. Grouping action should be performed for that purpose";
+            return;
+        }
+        UBGraphicsGroupContainerItem *currentGroup = dynamic_cast<UBGraphicsGroupContainerItem*>(selItems.first());
+        if (currentGroup) {
+            currentGroup->Delegate()->setAction(0);
+            currentGroup->destroy();
+        }
+    }
+}
+
+void UBBoardController::downloadURL(const QUrl& url, QString contentSourceUrl, const QPointF& pPos, const QSize& pSize, bool isBackground, bool internalData)
+{
+    qDebug() << "something has been dropped on the board! Url is: " << url.toString();
+    QString sUrl = url.toString();
+
+    QGraphicsItem *oldBackgroundObject = NULL;
+    if (isBackground)
+        oldBackgroundObject = mActiveScene->backgroundObject();
+
+    if(sUrl.startsWith("uniboardTool://"))
+    {
+        downloadFinished(true, url, QUrl(), "application/vnd.mnemis-uniboard-tool", QByteArray(), pPos, pSize, isBackground);
+    }
+    else if (sUrl.startsWith("file://") || sUrl.startsWith("/"))
+    {
+        QUrl formedUrl = sUrl.startsWith("file://") ? url : QUrl::fromLocalFile(sUrl);
+        QString fileName = formedUrl.toLocalFile();
+        QString contentType = UBFileSystemUtils::mimeTypeFromFileName(fileName);
+
+        bool shouldLoadFileData =
+                contentType.startsWith("image")
+                || contentType.startsWith("application/widget")
+                || contentType.startsWith("application/vnd.apple-widget")
+                || contentType.startsWith("internal/link");
+
+        if (isBackground)
+            mActiveScene->setURStackEnable(false);
+
+        if (shouldLoadFileData)
+        {
+            QFile file(fileName);
+            file.open(QIODevice::ReadOnly);
+            downloadFinished(true, formedUrl, QUrl(), contentType, file.readAll(), pPos, pSize, true, isBackground, internalData);
+            file.close();
+       }
+       else
+       {
+           // media items should be copyed in separate thread
+
+           sDownloadFileDesc desc;
+           desc.modal = false;
+           desc.srcUrl = sUrl;
+           desc.originalSrcUrl = contentSourceUrl;
+           desc.currentSize = 0;
+           desc.name = QFileInfo(url.toString()).fileName();
+           desc.totalSize = 0; // The total size will be retrieved during the download
+           desc.pos = pPos;
+           desc.size = pSize;
+           desc.isBackground = isBackground;
+
+           UBDownloadManager::downloadManager()->addFileToDownload(desc);
+       }
+    }
+    else
+    {
+        QString urlString = url.toString();
+        int parametersStringPosition = urlString.indexOf("?");
+        if(parametersStringPosition != -1)
+            urlString = urlString.left(parametersStringPosition);
+
+        // When we fall there, it means that we are dropping something from the web to the board
+        sDownloadFileDesc desc;
+        desc.modal = true;
+        desc.srcUrl = urlString;
+        desc.currentSize = 0;
+        desc.name = QFileInfo(urlString).fileName();
+        desc.totalSize = 0; // The total size will be retrieved during the download
+        desc.pos = pPos;
+        desc.size = pSize;
+        desc.isBackground = isBackground;
+
+        UBDownloadManager::downloadManager()->addFileToDownload(desc);
+    }
+
+    if (isBackground && oldBackgroundObject != mActiveScene->backgroundObject())
+    {
+        mActiveScene->setURStackEnable(true);
+        if (mActiveScene->isURStackIsEnabled()) { //should be deleted after scene own undo stack implemented
+            UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(mActiveScene, oldBackgroundObject, mActiveScene->backgroundObject());
+            UBApplication::undoStack->push(uc);
+        }
+    }
+}
+
+void UBBoardController::addLinkToPage(QString sourceUrl, QSize size, QPointF pos, const QString &embedCode)
+{
+    QString widgetUrl;
+    QString lSourceUrl = sourceUrl.replace("\n","").replace("\r","");
+    UBMimeType::Enum itemMimeType = UBFileSystemUtils::mimeTypeFromUrl(lSourceUrl);
+
+    if(UBMimeType::Flash == itemMimeType){
+        QString tmpDirPath = UBFileSystemUtils::createTempDir();
+        widgetUrl = UBGraphicsW3CWidgetItem::createNPAPIWrapperInDir(sourceUrl, QDir(tmpDirPath),UBFileSystemUtils::mimeTypeFromFileName(lSourceUrl),QSize(300,150),QUuid::createUuid().toString());
+
+    }
+    else{
+        QString html;
+        if (!embedCode.isEmpty())
+            html = embedCode;
+        else if(UBMimeType::Video == itemMimeType)
+            html = "     <video src=\"" + lSourceUrl + "\" controls=\"controls\">\n";
+        else if(UBMimeType::Audio == itemMimeType)
+            html = "     <audio src=\"" + lSourceUrl + "\" controls=\"controls\">\n";
+        else if(UBMimeType::RasterImage == itemMimeType || UBMimeType::VectorImage == itemMimeType)
+            html = "     <img src=\"" + lSourceUrl + "\">\n";
+        else if(QUrl(lSourceUrl).isValid())
+        {
+            html = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\r\n";
+            html += "<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n";
+            html += "    <head>\r\n";
+            html += "        <meta http-equiv=\"refresh\" content=\"0; " + lSourceUrl + "\">\r\n";
+            html += "    </head>\r\n";
+            html += "    <body>\r\n";
+            html += "        Redirect to target...\r\n";
+            html += "    </body>\r\n";
+            html += "</html>\r\n";
+        }
+
+        QString tmpDirPath = UBFileSystemUtils::createTempDir();
+        widgetUrl = UBGraphicsW3CWidgetItem::createHtmlWrapperInDir(html, QDir(tmpDirPath), size, QUuid::createUuid().toString());
+    }
+
+    if (widgetUrl.length() > 0)
+    {
+        UBGraphicsWidgetItem *widgetItem = mActiveScene->addW3CWidget(QUrl::fromLocalFile(widgetUrl), pos);
+        widgetItem->setUuid(QUuid::createUuid());
+        widgetItem->setSourceUrl(QUrl::fromLocalFile(widgetUrl));
+
+        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+    }
+}
+
+UBItem *UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QUrl contentUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isSyncOperation, bool isBackground, bool internalData)
+{
+    Q_ASSERT(pSuccess);
+
+    QString mimeType = pContentTypeHeader;
+
+    // In some cases "image/jpeg;charset=" is retourned by the drag-n-drop. That is
+    // why we will check if an ; exists and take the first part (the standard allows this kind of mimetype)
+    if(mimeType.isEmpty())
+      mimeType = UBFileSystemUtils::mimeTypeFromFileName(sourceUrl.toString());
+
+
+    int position=mimeType.indexOf(";");
+    if(position != -1)
+        mimeType=mimeType.left(position);
+
+    UBMimeType::Enum itemMimeType = UBFileSystemUtils::mimeTypeFromString(mimeType);
+
+    if(itemMimeType == UBMimeType::UNKNOWN)
+        itemMimeType = UBFileSystemUtils::mimeTypeFromString(UBFileSystemUtils::mimeTypeFromFileName(sourceUrl.toString()));
+
+    if (!pSuccess)
+    {
+        showMessage(tr("Downloading content %1 failed").arg(sourceUrl.toString()));
+        return NULL;
+    }
+
+
+    mActiveScene->deselectAllItems();
+
+    if (!sourceUrl.toString().startsWith("file://") && !sourceUrl.toString().startsWith("uniboardTool://"))
+        showMessage(tr("Download finished"));
+
+
+    if (UBMimeType::RasterImage == itemMimeType)
+    {
+        QPixmap pix;
+        if(pData.length() == 0){
+            pix.load(sourceUrl.toLocalFile());
+        }
+        else{
+            QImage img;
+            img.loadFromData(pData);
+            pix = QPixmap::fromImage(img);
+        }
+
+        UBGraphicsPixmapItem* pixItem = mActiveScene->addPixmap(pix, NULL, pPos, 1.);
+        pixItem->setSourceUrl(sourceUrl);
+
+        if (isBackground)
+        {
+            mActiveScene->setAsBackgroundObject(pixItem, true);
+        }
+        else
+        {
+            mActiveScene->scaleToFitDocumentSize(pixItem, true, UBSettings::objectInControlViewMargin);
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+            pixItem->setSelected(true);
+        }
+
+        return pixItem;
+    }
+    else if (UBMimeType::VectorImage == itemMimeType)
+    {
+        qDebug() << "accepting mime type" << mimeType << "as vecto image";
+
+        UBGraphicsSvgItem* svgItem = mActiveScene->addSvg(sourceUrl, pPos, pData);
+        svgItem->setSourceUrl(sourceUrl);
+
+        if (isBackground)
+            mActiveScene->setAsBackgroundObject(svgItem);
+        else
+        {
+            mActiveScene->scaleToFitDocumentSize(svgItem, true, UBSettings::objectInControlViewMargin);
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+            svgItem->setSelected(true);
+        }
+
+        return svgItem;
+    }
+    else if (UBMimeType::AppleWidget == itemMimeType) //mime type invented by us :-(
+    {
+        qDebug() << "accepting mime type" << mimeType << "as Apple widget";
+
+        QUrl widgetUrl = sourceUrl;
+
+        if (pData.length() > 0)
+        {
+            widgetUrl = expandWidgetToTempDir(pData, "wdgt");
+        }
+
+        UBGraphicsWidgetItem* appleWidgetItem = mActiveScene->addAppleWidget(widgetUrl, pPos);
+
+        appleWidgetItem->setSourceUrl(sourceUrl);
+
+        if (isBackground)
+        {
+            mActiveScene->setAsBackgroundObject(appleWidgetItem);
+        }
+        else
+        {
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+        }
+
+        return appleWidgetItem;
+    }
+    else if (UBMimeType::W3CWidget == itemMimeType)
+    {
+        QUrl widgetUrl = sourceUrl;
+
+        if (pData.length() > 0)
+            widgetUrl = expandWidgetToTempDir(pData);
+
+        UBGraphicsWidgetItem *w3cWidgetItem = addW3cWidget(widgetUrl, pPos);
+
+        if (isBackground)
+            mActiveScene->setAsBackgroundObject(w3cWidgetItem);
+        else
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+
+        return w3cWidgetItem;
+    }
+    else if (UBMimeType::Video == itemMimeType)
+    {
+        qDebug() << "accepting mime type" << mimeType << "as video";
+
+        UBGraphicsMediaItem *mediaVideoItem = 0;
+        QUuid uuid = QUuid::createUuid();
+        if (pData.length() > 0)
+        {
+            QString destFile;
+            bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(),
+                sourceUrl.toString(),
+                UBPersistenceManager::videoDirectory,
+                uuid,
+                destFile,
+                &pData);
+            if (!b)
+            {
+                showMessage(tr("Add file operation failed: file copying error"));
+                return NULL;
+            }
+
+            QUrl url = QUrl::fromLocalFile(destFile);
+
+            mediaVideoItem = mActiveScene->addMedia(url, false, pPos);
+        }
+        else
+        {
+            qDebug() << sourceUrl.toString();
+            mediaVideoItem = addVideo(sourceUrl, false, pPos, isSyncOperation);
+        }
+
+        if(mediaVideoItem){
+            if (contentUrl.isEmpty())
+                mediaVideoItem->setSourceUrl(sourceUrl);
+            else
+                mediaVideoItem->setSourceUrl(contentUrl);
+            mediaVideoItem->setUuid(uuid);
+            connect(this, SIGNAL(activeSceneChanged()), mediaVideoItem, SLOT(activeSceneChanged()));
+        }
+
+        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+
+        return mediaVideoItem;
+    }
+    else if (UBMimeType::Audio == itemMimeType)
+    {
+        qDebug() << "accepting mime type" << mimeType << "as audio";
+
+        UBGraphicsMediaItem *audioMediaItem = 0;
+
+        QUuid uuid = QUuid::createUuid();
+        if (pData.length() > 0)
+        {
+            QString destFile;
+            bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(),
+                sourceUrl.toString(),
+                UBPersistenceManager::audioDirectory,
+                uuid,
+                destFile,
+                &pData);
+            if (!b)
+            {
+                showMessage(tr("Add file operation failed: file copying error"));
+                return NULL;
+            }
+
+            QUrl url = QUrl::fromLocalFile(destFile);
+
+            audioMediaItem = mActiveScene->addMedia(url, false, pPos);
+        }
+        else
+        {
+            audioMediaItem = addAudio(sourceUrl, false, pPos, isSyncOperation);
+        }
+
+        if(audioMediaItem){
+            if (contentUrl.isEmpty())
+                audioMediaItem->setSourceUrl(sourceUrl);
+            else
+                audioMediaItem->setSourceUrl(contentUrl);
+            audioMediaItem->setUuid(uuid);
+            connect(this, SIGNAL(activeSceneChanged()), audioMediaItem, SLOT(activeSceneChanged()));
+        }
+
+        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+
+        return audioMediaItem;
+    }
+    else if (UBMimeType::Flash == itemMimeType)
+    {
+
+        qDebug() << "accepting mime type" << mimeType << "as flash";
+
+        QString sUrl = sourceUrl.toString();
+
+        if (sUrl.startsWith("file://") || sUrl.startsWith("/"))
+        {
+            sUrl = sourceUrl.toLocalFile();
+        }
+
+        QTemporaryFile* tempFile = 0;
+
+        if (!pData.isNull())
+        {
+            tempFile = new QTemporaryFile("XXXXXX.swf");
+            if (tempFile->open())
+            {
+                tempFile->write(pData);
+                tempFile->close();
+                QFileInfo fi(*tempFile);
+                sUrl = fi.absoluteFilePath();
+            }
+        }
+
+        QSize size;
+
+        if (pSize.height() > 0 && pSize.width() > 0)
+            size = pSize;
+        else
+            size = mActiveScene->nominalSize() * .8;
+
+        Q_UNUSED(internalData)
+
+        QString widgetUrl = UBGraphicsW3CWidgetItem::createNPAPIWrapper(sUrl, mimeType, size);
+        emit npapiWidgetCreated(widgetUrl);
+
+        if (widgetUrl.length() > 0)
+        {
+            UBGraphicsWidgetItem *widgetItem = mActiveScene->addW3CWidget(QUrl::fromLocalFile(widgetUrl), pPos);
+            widgetItem->setUuid(QUuid::createUuid());
+            widgetItem->setSourceUrl(QUrl::fromLocalFile(widgetUrl));
+            widgetItem->resize(size);
+
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+
+            return widgetItem;
+        }
+
+        if (tempFile)
+            delete tempFile;
+
+    }
+    else if (UBMimeType::PDF == itemMimeType)
+    {
+        qDebug() << "accepting mime type" << mimeType << "as PDF";
+        qDebug() << "pdf data length: " << pData.size();
+        qDebug() << "sourceurl : " + sourceUrl.toString();
+        int result = 0;
+        if(!sourceUrl.isEmpty()){
+            QStringList fileNames;
+            fileNames << sourceUrl.toLocalFile();
+            result = UBDocumentManager::documentManager()->addFilesToDocument(selectedDocument(), fileNames);
+        }
+        else if(pData.size()){
+            QTemporaryFile pdfFile("XXXXXX.pdf");
+            if (pdfFile.open())
+            {
+                pdfFile.write(pData);
+                QStringList fileNames;
+                fileNames << pdfFile.fileName();
+                result = UBDocumentManager::documentManager()->addFilesToDocument(selectedDocument(), fileNames);
+                pdfFile.close();
+            }
+        }
+
+        if (result){
+            selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+        }
+    }
+    else if (UBMimeType::UniboardTool == itemMimeType)
+    {
+        qDebug() << "accepting mime type" << mimeType << "as Uniboard Tool";
+
+        if (sourceUrl.toString() == UBToolsManager::manager()->compass.id)
+        {
+            mActiveScene->addCompass(pPos);
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+        }
+        else if (sourceUrl.toString() == UBToolsManager::manager()->ruler.id)
+        {
+            mActiveScene->addRuler(pPos);
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+        }
+        else if (sourceUrl.toString() == UBToolsManager::manager()->protractor.id)
+        {
+            mActiveScene->addProtractor(pPos);
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+        }
+        else if (sourceUrl.toString() == UBToolsManager::manager()->triangle.id)
+        {
+            mActiveScene->addTriangle(pPos);
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+        }
+        else if (sourceUrl.toString() == UBToolsManager::manager()->cache.id)
+        {
+            mActiveScene->addCache();
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+        }
+        else if (sourceUrl.toString() == UBToolsManager::manager()->magnifier.id)
+        {
+            UBMagnifierParams params;
+            params.x = controlContainer()->geometry().width() / 2;
+            params.y = controlContainer()->geometry().height() / 2;
+            params.zoom = 2;
+            params.sizePercentFromScene = 20;
+            mActiveScene->addMagnifier(params);
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+        }
+        else if (sourceUrl.toString() == UBToolsManager::manager()->mask.id)
+        {
+            mActiveScene->addMask(pPos);
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+        }
+        else if (sourceUrl.toString() == UBToolsManager::manager()->aristo.id)
+        {
+            mActiveScene->addAristo(pPos);
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+        }
+        else
+        {
+            showMessage(tr("Unknown tool type %1").arg(sourceUrl.toString()));
+        }
+    }
+    else if (sourceUrl.toString().contains("edumedia-sciences.com"))
+    {
+        qDebug() << "accepting url " << sourceUrl.toString() << "as eduMedia content";
+
+        QTemporaryFile eduMediaZipFile("XXXXXX.edumedia");
+        if (eduMediaZipFile.open())
+        {
+            eduMediaZipFile.write(pData);
+            eduMediaZipFile.close();
+
+            QString tempDir = UBFileSystemUtils::createTempDir("uniboard-edumedia");
+
+            UBFileSystemUtils::expandZipToDir(eduMediaZipFile, tempDir);
+
+            QDir appDir(tempDir);
+
+            foreach(QString subDirName, appDir.entryList(QDir::AllDirs))
+            {
+                QDir subDir(tempDir + "/" + subDirName + "/contents");
+
+                foreach(QString fileName, subDir.entryList(QDir::Files))
+                {
+                    if (fileName.toLower().endsWith(".swf"))
+                    {
+                        QString swfFile = tempDir + "/" + subDirName + "/contents/" + fileName;
+
+                        QSize size;
+
+                        if (pSize.height() > 0 && pSize.width() > 0)
+                            size = pSize;
+                        else
+                            size = mActiveScene->nominalSize() * .8;
+
+                        QString widgetUrl = UBGraphicsW3CWidgetItem::createNPAPIWrapper(swfFile, "application/x-shockwave-flash", size);
+
+                        if (widgetUrl.length() > 0)
+                        {
+                            UBGraphicsWidgetItem *widgetItem = mActiveScene->addW3CWidget(QUrl::fromLocalFile(widgetUrl), pPos);
+
+                            widgetItem->setSourceUrl(sourceUrl);
+
+                            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+
+                            return widgetItem;
+                        }
+                    }
+                }
+            }
+        }
+    }
+    else if (UBMimeType::Link == itemMimeType)
+    {
+        QString url;
+        QString embedCode;
+        QSize size;
+
+        QDomDocument linkDoc;
+        linkDoc.setContent(QString(pData));
+
+        QDomElement e = linkDoc.firstChildElement();
+        if ("link" == e.tagName().toLower())
+            e = e.firstChildElement();
+
+        while(!e.isNull())
+        {
+            if ("src" == e.tagName().toLower())
+                url = e.text();
+
+            if ( "html" == e.tagName().toLower())
+                embedCode = e.text();
+
+            if ( "width" == e.tagName().toLower())
+                size.setWidth(e.text().toInt());
+
+            if ( "height" == e.tagName().toLower())
+                size.setHeight(e.text().toInt());
+
+            e = e.nextSiblingElement();
+        }
+
+
+        addLinkToPage(url, size, pPos, embedCode);
+    }
+    else if (UBMimeType::Web == itemMimeType){
+        addLinkToPage(sourceUrl.toString(),pSize,pPos);
+    }
+    else if(UBMimeType::Bookmark){
+        QFile file(sourceUrl.toLocalFile());
+        file.open(QIODevice::ReadOnly);
+        addLinkToPage(QString::fromAscii(file.readAll()),QSize(640,480),pPos);
+        file.close();
+    }
+    else
+    {
+        showMessage(tr("Unknown content type %1").arg(pContentTypeHeader));
+        qWarning() << "ignoring mime type" << pContentTypeHeader ;
+    }
+
+    return NULL;
+}
+
+void UBBoardController::setActiveDocumentScene(int pSceneIndex)
+{
+    setActiveDocumentScene(selectedDocument(), pSceneIndex);
+}
+
+void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, const int pSceneIndex, bool forceReload)
+{
+    saveViewState();
+
+    bool documentChange = selectedDocument() != pDocumentProxy;
+
+    int index = pSceneIndex;
+    int sceneCount = pDocumentProxy->pageCount();
+    if (index >= sceneCount && sceneCount > 0)
+        index = sceneCount - 1;
+
+    UBGraphicsScene* targetScene = UBPersistenceManager::persistenceManager()->loadDocumentScene(pDocumentProxy, index);
+
+    bool sceneChange = targetScene != mActiveScene;
+
+    if (targetScene)
+    {
+        if (mActiveScene) {
+            persistCurrentScene();
+            freezeW3CWidgets(true);
+            ClearUndoStack();
+        }
+
+        mActiveScene = targetScene;
+        mActiveSceneIndex = index;
+        setDocument(pDocumentProxy, forceReload);
+
+        updateSystemScaleFactor();
+
+        mControlView->setScene(mActiveScene);
+        mDisplayView->setScene(mActiveScene);
+        mActiveScene->setBackgroundZoomFactor(mControlView->transform().m11());
+        pDocumentProxy->setDefaultDocumentSize(mActiveScene->nominalSize());
+        updatePageSizeState();
+
+        adjustDisplayViews();
+
+        UBSettings::settings()->setDarkBackground(mActiveScene->isDarkBackground());
+        UBSettings::settings()->setCrossedBackground(mActiveScene->isCrossedBackground());
+
+        freezeW3CWidgets(false);
+    }
+
+    selectionChanged();
+
+    updateBackgroundActionsState(mActiveScene->isDarkBackground(), mActiveScene->isCrossedBackground());
+    updateBackgroundState();
+
+    if(documentChange)
+    {
+        UBGraphicsTextItem::lastUsedTextColor = QColor();
+    }
+
+
+    if (sceneChange)
+    {
+        emit activeSceneChanged();
+        emit pageChanged();
+    }
+}
+
+
+void UBBoardController::moveSceneToIndex(int source, int target)
+{
+    if (selectedDocument())
+    {
+
+        persistCurrentScene();
+
+        UBDocumentContainer::movePageToIndex(source, target);
+
+        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+        UBMetadataDcSubsetAdaptor::persist(selectedDocument());
+        mMovingSceneIndex = source;
+        setActiveDocumentScene(target);
+        mMovingSceneIndex = -1;
+
+    }
+}
+
+void UBBoardController::ClearUndoStack()
+{
+// The code has been removed because it leads to a strange error and because the final goal has never been
+// reached on tests and sound a little bit strange.
+// Strange error: item->scene() crashes the application because item doesn't implement scene() method. I'm
+// not able to give all the steps to reproduce this error sistematically but is quite frequent (~ twice per utilisation hours)
+// strange goal: if item is on the undocommand, the item->scene() is null and the item is not on the deleted scene item list then
+// then it's deleted.
+
+    //    QSet<QGraphicsItem*> uniqueItems;
+//    // go through all stack command
+//    for(int i = 0; i < UBApplication::undoStack->count(); i++)
+//    {
+
+//        UBAbstractUndoCommand *abstractCmd = (UBAbstractUndoCommand*)UBApplication::undoStack->command(i);
+//        if(abstractCmd->getType() != UBAbstractUndoCommand::undotype_GRAPHICITEM)
+//            continue;
+
+//        UBGraphicsItemUndoCommand *cmd = (UBGraphicsItemUndoCommand*)UBApplication::undoStack->command(i);
+
+//        // go through all added and removed objects, for create list of unique objects
+//        // grouped items will be deleted by groups, so we don't need do delete that items.
+//        QSetIterator<QGraphicsItem*> itAdded(cmd->GetAddedList());
+//        while (itAdded.hasNext())
+//        {
+//            QGraphicsItem* item = itAdded.next();
+//            if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type()))
+//                uniqueItems.insert(item);
+//        }
+
+//        QSetIterator<QGraphicsItem*> itRemoved(cmd->GetRemovedList());
+//        while (itRemoved.hasNext())
+//        {
+//            QGraphicsItem* item = itRemoved.next();
+//            if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type()))
+//                uniqueItems.insert(item);
+//        }
+//    }
+
+//    // go through all unique items, and check, ot on scene, or not.
+//    // if not on scene, than item can be deleted
+
+//    QSetIterator<QGraphicsItem*> itUniq(uniqueItems);
+//    while (itUniq.hasNext())
+//    {
+//        QGraphicsItem* item = itUniq.next();
+//        UBGraphicsScene *scene = NULL;
+//        if (item->scene()) {
+//            scene = dynamic_cast<UBGraphicsScene*>(item->scene());
+//        }
+//        if(!scene)
+//        {
+//           if (!mActiveScene->deleteItem(item))
+//               delete item;
+//        }
+//    }
+
+    // clear stack, and command list
+    UBApplication::undoStack->clear();
+
+}
+
+void UBBoardController::adjustDisplayViews()
+{
+    if (UBApplication::applicationController)
+    {
+        UBApplication::applicationController->adjustDisplayView();
+        UBApplication::applicationController->adjustPreviousViews(mActiveSceneIndex, selectedDocument());
+    }
+}
+
+
+void UBBoardController::changeBackground(bool isDark, bool isCrossed)
+{
+    bool currentIsDark = mActiveScene->isDarkBackground();
+    bool currentIsCrossed = mActiveScene->isCrossedBackground();
+
+    if ((isDark != currentIsDark) || (currentIsCrossed != isCrossed))
+    {
+        UBSettings::settings()->setDarkBackground(isDark);
+        UBSettings::settings()->setCrossedBackground(isCrossed);
+
+        mActiveScene->setBackground(isDark, isCrossed);
+
+        updateBackgroundState();
+
+        emit backgroundChanged();
+    }
+}
+
+void UBBoardController::boardViewResized(QResizeEvent* event)
+{
+    Q_UNUSED(event);
+
+    int innerMargin = UBSettings::boardMargin;
+    int userHeight = mControlContainer->height() - (2 * innerMargin);
+
+    mMessageWindow->move(innerMargin, innerMargin + userHeight - mMessageWindow->height());
+    mMessageWindow->adjustSizeAndPosition();
+
+    UBApplication::applicationController->initViewState(
+                mControlView->horizontalScrollBar()->value(),
+                mControlView->verticalScrollBar()->value());
+
+    updateSystemScaleFactor();
+
+    mControlView->centerOn(0,0);
+
+    if (mDisplayView)
+        mDisplayView->centerOn(0,0);
+
+    mPaletteManager->containerResized();
+
+    UBApplication::boardController->controlView()->scene()->moveMagnifier();
+
+}
+
+
+void UBBoardController::documentWillBeDeleted(UBDocumentProxy* pProxy)
+{
+    if (selectedDocument() == pProxy)
+    {
+        if (!mIsClosing) {
+//            setActiveDocumentScene(UBPersistenceManager::persistenceManager()->createDocument());
+            mActiveScene = 0;
+            mActiveSceneIndex = -1;
+//            mActiveScene->deleteLater();
+        }
+    }
+}
+
+
+void UBBoardController::showMessage(const QString& message, bool showSpinningWheel)
+{
+    mMessageWindow->showMessage(message, showSpinningWheel);
+}
+
+
+void UBBoardController::hideMessage()
+{
+    mMessageWindow->hideMessage();
+}
+
+
+void UBBoardController::setDisabled(bool disable)
+{
+    mMainWindow->boardToolBar->setDisabled(disable);
+    mControlView->setDisabled(disable);
+}
+
+
+void UBBoardController::selectionChanged()
+{
+    updateActionStates();
+    emit pageSelectionChanged(activeSceneIndex());
+}
+
+
+void UBBoardController::undoRedoStateChange(bool canUndo)
+{
+    Q_UNUSED(canUndo);
+
+    mMainWindow->actionUndo->setEnabled(UBApplication::undoStack->canUndo());
+    mMainWindow->actionRedo->setEnabled(UBApplication::undoStack->canRedo());
+
+    updateActionStates();
+}
+
+
+void UBBoardController::updateActionStates()
+{
+    mMainWindow->actionBack->setEnabled(selectedDocument() && (mActiveSceneIndex > 0));
+    mMainWindow->actionForward->setEnabled(selectedDocument() && (mActiveSceneIndex < selectedDocument()->pageCount() - 1));
+    mMainWindow->actionErase->setEnabled(mActiveScene && !mActiveScene->isEmpty());
+}
+
+
+UBGraphicsScene* UBBoardController::activeScene() const
+{
+    return mActiveScene;
+}
+
+
+int UBBoardController::activeSceneIndex() const
+{
+    return mActiveSceneIndex;
+}
+
+
+void UBBoardController::documentSceneChanged(UBDocumentProxy* pDocumentProxy, int pIndex)
+{
+    Q_UNUSED(pIndex);
+
+    if(selectedDocument() == pDocumentProxy)
+    {
+        setActiveDocumentScene(mActiveSceneIndex);
+    }
+}
+
+void UBBoardController::closing()
+{
+    mIsClosing = true;
+    ClearUndoStack();
+    lastWindowClosed();
+}
+
+void UBBoardController::lastWindowClosed()
+{
+    if (!mCleanupDone)
+    {
+        bool teacherGuideModified = false;
+        if(UBApplication::boardController->paletteManager()->teacherGuideDockWidget())
+            teacherGuideModified = UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified();
+        if (selectedDocument()->pageCount() == 1 && (!mActiveScene || mActiveScene->isEmpty()) && !teacherGuideModified)
+        {
+//            UBPersistenceManager::persistenceManager()->deleteDocument(selectedDocument());
+        }
+        else
+        {
+            persistCurrentScene();
+        }
+
+        UBPersistenceManager::persistenceManager()->purgeEmptyDocuments();
+
+        mCleanupDone = true;
+    }
+}
+
+
+
+void UBBoardController::setColorIndex(int pColorIndex)
+{
+    UBDrawingController::drawingController()->setColorIndex(pColorIndex);
+
+    if (UBDrawingController::drawingController()->stylusTool() != UBStylusTool::Marker &&
+            UBDrawingController::drawingController()->stylusTool() != UBStylusTool::Line &&
+            UBDrawingController::drawingController()->stylusTool() != UBStylusTool::Text &&
+            UBDrawingController::drawingController()->stylusTool() != UBStylusTool::Selector)
+    {
+        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Pen);
+    }
+
+    if (UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Pen ||
+            UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line ||
+            UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Text ||
+            UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Selector)
+    {
+        mPenColorOnDarkBackground = UBSettings::settings()->penColors(true).at(pColorIndex);
+        mPenColorOnLightBackground = UBSettings::settings()->penColors(false).at(pColorIndex);
+
+        if (UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Selector)
+        {
+            // If we are in mode board, then do that
+            if(UBApplication::applicationController->displayMode() == UBApplicationController::Board)
+            {
+                UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Pen);
+                mMainWindow->actionPen->setChecked(true);
+            }
+        }
+
+        emit penColorChanged();
+    }
+    else if (UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Marker)
+    {
+        mMarkerColorOnDarkBackground = UBSettings::settings()->markerColors(true).at(pColorIndex);
+        mMarkerColorOnLightBackground = UBSettings::settings()->markerColors(false).at(pColorIndex);
+    }
+}
+
+void UBBoardController::colorPaletteChanged()
+{
+    mPenColorOnDarkBackground = UBSettings::settings()->penColor(true);
+    mPenColorOnLightBackground = UBSettings::settings()->penColor(false);
+    mMarkerColorOnDarkBackground = UBSettings::settings()->markerColor(true);
+    mMarkerColorOnLightBackground = UBSettings::settings()->markerColor(false);
+}
+
+
+qreal UBBoardController::currentZoom()
+{
+    if (mControlView)
+        return mControlView->viewportTransform().m11() / mSystemScaleFactor;
+    else
+        return 1.0;
+}
+
+void UBBoardController::removeTool(UBToolWidget* toolWidget)
+{
+    toolWidget->hide();
+
+    delete toolWidget;
+}
+
+void UBBoardController::hide()
+{
+    UBApplication::mainWindow->actionLibrary->setChecked(false);
+}
+
+void UBBoardController::show()
+{
+    UBApplication::mainWindow->actionLibrary->setChecked(false);
+}
+
+void UBBoardController::persistCurrentScene(UBDocumentProxy *pProxy)
+{
+    if(UBPersistenceManager::persistenceManager()
+            && selectedDocument() && mActiveScene && mActiveSceneIndex != mDeletingSceneIndex
+            && (mActiveSceneIndex >= 0) && mActiveSceneIndex != mMovingSceneIndex
+            && (mActiveScene->isModified() || (UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified())))
+    {        
+        UBPersistenceManager::persistenceManager()->persistDocumentScene(pProxy ? pProxy : selectedDocument(), mActiveScene, mActiveSceneIndex);
+        updatePage(mActiveSceneIndex);
+    }
+}
+
+void UBBoardController::updateSystemScaleFactor()
+{
+    qreal newScaleFactor = 1.0;
+
+    if (mActiveScene)
+    {
+        QSize pageNominalSize = mActiveScene->nominalSize();
+        //we're going to keep scale factor untouched if the size is custom
+        QMap<DocumentSizeRatio::Enum, QSize> sizesMap = UBSettings::settings()->documentSizes;
+      //  if(pageNominalSize == sizesMap.value(DocumentSizeRatio::Ratio16_9) || pageNominalSize == sizesMap.value(DocumentSizeRatio::Ratio4_3))
+        {
+            QSize controlSize = controlViewport();
+
+            qreal hFactor = ((qreal)controlSize.width()) / ((qreal)pageNominalSize.width());
+            qreal vFactor = ((qreal)controlSize.height()) / ((qreal)pageNominalSize.height());
+
+            newScaleFactor = qMin(hFactor, vFactor);
+        }
+    }
+
+    if (mSystemScaleFactor != newScaleFactor)
+    {
+        mSystemScaleFactor = newScaleFactor;
+        emit systemScaleFactorChanged(newScaleFactor);
+    }
+
+    UBGraphicsScene::SceneViewState viewState = mActiveScene->viewState();
+
+    QTransform scalingTransform;
+
+    qreal scaleFactor = viewState.zoomFactor * mSystemScaleFactor;
+    scalingTransform.scale(scaleFactor, scaleFactor);
+
+    mControlView->setTransform(scalingTransform);
+    mControlView->horizontalScrollBar()->setValue(viewState.horizontalPosition);
+    mControlView->verticalScrollBar()->setValue(viewState.verticalPostition);
+    mActiveScene->setBackgroundZoomFactor(mControlView->transform().m11());}
+
+
+void UBBoardController::setWidePageSize(bool checked)
+{
+    Q_UNUSED(checked);
+    QSize newSize = UBSettings::settings()->documentSizes.value(DocumentSizeRatio::Ratio16_9);
+
+    if (mActiveScene->nominalSize() != newSize)
+    {
+        UBPageSizeUndoCommand* uc = new UBPageSizeUndoCommand(mActiveScene, mActiveScene->nominalSize(), newSize);
+        UBApplication::undoStack->push(uc);
+
+        setPageSize(newSize);
+    }
+}
+
+
+void UBBoardController::setRegularPageSize(bool checked)
+{
+    Q_UNUSED(checked);
+    QSize newSize = UBSettings::settings()->documentSizes.value(DocumentSizeRatio::Ratio4_3);
+
+    if (mActiveScene->nominalSize() != newSize)
+    {
+        UBPageSizeUndoCommand* uc = new UBPageSizeUndoCommand(mActiveScene, mActiveScene->nominalSize(), newSize);
+        UBApplication::undoStack->push(uc);
+
+        setPageSize(newSize);
+    }
+}
+
+
+void UBBoardController::setPageSize(QSize newSize)
+{
+    if (mActiveScene->nominalSize() != newSize)
+    {
+        mActiveScene->setNominalSize(newSize);
+
+        saveViewState();
+
+        updateSystemScaleFactor();
+        updatePageSizeState();
+        adjustDisplayViews();
+        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+
+        UBSettings::settings()->pageSize->set(newSize);
+    }
+}
+
+void UBBoardController::notifyCache(bool visible)
+{
+    if(visible)
+    {
+        emit cacheEnabled();
+    }
+    else
+    {
+        emit cacheDisabled();
+    }
+    mCacheWidgetIsEnabled = visible;
+}
+
+void UBBoardController::updatePageSizeState()
+{
+    if (mActiveScene->nominalSize() == UBSettings::settings()->documentSizes.value(DocumentSizeRatio::Ratio16_9))
+    {
+        mMainWindow->actionWidePageSize->setChecked(true);
+    }
+    else if(mActiveScene->nominalSize() == UBSettings::settings()->documentSizes.value(DocumentSizeRatio::Ratio4_3))
+    {
+        mMainWindow->actionRegularPageSize->setChecked(true);
+    }
+    else
+    {
+        mMainWindow->actionCustomPageSize->setChecked(true);
+    }
+}
+
+
+void UBBoardController::saveViewState()
+{
+    if (mActiveScene)
+    {
+        mActiveScene->setViewState(UBGraphicsScene::SceneViewState(currentZoom(),
+                                                                   mControlView->horizontalScrollBar()->value(),
+                                                                   mControlView->verticalScrollBar()->value()));
+    }
+}
+
+
+void UBBoardController::updateBackgroundState()
+{
+    //adjust background style
+    QString newBackgroundStyle;
+
+    if (mActiveScene && mActiveScene->isDarkBackground())
+    {
+        newBackgroundStyle ="QWidget {background-color: #0E0E0E}";
+    }
+    else
+    {
+        newBackgroundStyle ="QWidget {background-color: #F1F1F1}";
+    }
+}
+
+void UBBoardController::stylusToolChanged(int tool)
+{
+    if (UBPlatformUtils::hasVirtualKeyboard() && mPaletteManager->mKeyboardPalette)
+    {
+        UBStylusTool::Enum eTool = (UBStylusTool::Enum)tool;
+        if(eTool != UBStylusTool::Selector && eTool != UBStylusTool::Text)
+        {
+            if(mPaletteManager->mKeyboardPalette->m_isVisible)
+                UBApplication::mainWindow->actionVirtualKeyboard->activate(QAction::Trigger);
+        }
+    }
+
+    updateBackgroundState();
+}
+
+
+QUrl UBBoardController::expandWidgetToTempDir(const QByteArray& pZipedData, const QString& ext)
+{
+    QUrl widgetUrl;
+    QTemporaryFile tmp;
+
+    if (tmp.open())
+    {
+        tmp.write(pZipedData);
+        tmp.flush();
+        tmp.close();
+
+        QString tmpDir = UBFileSystemUtils::createTempDir() + "." + ext;
+
+        if (UBFileSystemUtils::expandZipToDir(tmp, tmpDir))
+        {
+            //Claudio this is a workaround to know it the zip is the widget itself or a zipped widget
+            QStringList directoryContent = QDir(tmpDir).entryList(QDir::AllDirs | QDir::NoDotAndDotDot);
+            if(directoryContent.count() == 1 && directoryContent.at(0).contains(".wgt"))
+                widgetUrl = QUrl::fromLocalFile(tmpDir + "/" + directoryContent.at(0));
+            else
+                widgetUrl = QUrl::fromLocalFile(tmpDir);
+        }
+    }
+
+    return widgetUrl;
+}
+
+
+void UBBoardController::grabScene(const QRectF& pSceneRect)
+{
+    if (mActiveScene)
+    {
+        QImage image(pSceneRect.width(), pSceneRect.height(), QImage::Format_ARGB32);
+        image.fill(Qt::transparent);
+
+        QRectF targetRect(0, 0, pSceneRect.width(), pSceneRect.height());
+        QPainter painter(&image);
+        painter.setRenderHint(QPainter::SmoothPixmapTransform);
+        painter.setRenderHint(QPainter::Antialiasing);
+
+        mActiveScene->setRenderingQuality(UBItem::RenderingQualityHigh);
+
+        mActiveScene->render(&painter, targetRect, pSceneRect);
+
+        mActiveScene->setRenderingQuality(UBItem::RenderingQualityNormal);
+
+        mPaletteManager->addItem(QPixmap::fromImage(image));
+        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+    }
+}
+
+UBGraphicsMediaItem* UBBoardController::addVideo(const QUrl& pSourceUrl, bool startPlay, const QPointF& pos, bool bUseSource)
+{
+    QUuid uuid = QUuid::createUuid();
+    QUrl concreteUrl = pSourceUrl;
+
+    // media file is not in document folder yet
+    if (bUseSource)
+    {
+        QString destFile;
+        bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(),
+                    pSourceUrl.toLocalFile(),
+                    UBPersistenceManager::videoDirectory,
+                    uuid,
+                    destFile);
+        if (!b)
+        {
+            showMessage(tr("Add file operation failed: file copying error"));
+            return NULL;
+        }
+        concreteUrl = QUrl::fromLocalFile(destFile);
+    }// else we just use source Url.
+
+
+    UBGraphicsMediaItem* vi = mActiveScene->addMedia(concreteUrl, startPlay, pos);
+    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+
+    if (vi) {
+        vi->setUuid(uuid);
+        vi->setSourceUrl(pSourceUrl);
+    }
+
+    return vi;
+
+}
+
+UBGraphicsMediaItem* UBBoardController::addAudio(const QUrl& pSourceUrl, bool startPlay, const QPointF& pos, bool bUseSource)
+{
+    QUuid uuid = QUuid::createUuid();
+    QUrl concreteUrl = pSourceUrl;
+
+    // media file is not in document folder yet
+    if (bUseSource)
+    {
+        QString destFile;
+        bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(),
+            pSourceUrl.toLocalFile(),
+            UBPersistenceManager::audioDirectory,
+            uuid,
+            destFile);
+        if (!b)
+        {
+            showMessage(tr("Add file operation failed: file copying error"));
+            return NULL;
+        }
+        concreteUrl = QUrl::fromLocalFile(destFile);
+    }// else we just use source Url.
+
+    UBGraphicsMediaItem* ai = mActiveScene->addMedia(concreteUrl, startPlay, pos);
+    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+
+    if (ai){
+        ai->setUuid(uuid);
+        ai->setSourceUrl(pSourceUrl);
+    }
+
+    return ai;
+
+}
+
+UBGraphicsWidgetItem *UBBoardController::addW3cWidget(const QUrl &pUrl, const QPointF &pos)
+{
+    UBGraphicsWidgetItem* w3cWidgetItem = 0;
+
+    QUuid uuid = QUuid::createUuid();
+
+    QString destPath;
+    if (!UBPersistenceManager::persistenceManager()->addGraphicsWidgetToDocument(selectedDocument(), pUrl.toLocalFile(), uuid, destPath))
+        return NULL;
+    QUrl newUrl = QUrl::fromLocalFile(destPath);
+
+    w3cWidgetItem = mActiveScene->addW3CWidget(newUrl, pos);
+
+    if (w3cWidgetItem) {
+        w3cWidgetItem->setUuid(uuid);
+        w3cWidgetItem->setOwnFolder(newUrl);
+        w3cWidgetItem->setSourceUrl(pUrl);
+
+        QString struuid = UBStringUtils::toCanonicalUuid(uuid);
+        QString snapshotPath = selectedDocument()->persistencePath() +  "/" + UBPersistenceManager::widgetDirectory + "/" + struuid + ".png";
+        w3cWidgetItem->setSnapshotPath(QUrl::fromLocalFile(snapshotPath));
+/*        UBGraphicsWidgetItem *tmpItem = dynamic_cast<UBGraphicsWidgetItem*>(w3cWidgetItem);
+        if (tmpItem && tmpItem->scene())
+           tmpItem->takeSnapshot().save(snapshotPath, "PNG");
+*/
+    }
+
+    return w3cWidgetItem;
+}
+
+void UBBoardController::cut()
+{
+    //---------------------------------------------------------//
+
+    QList<QGraphicsItem*> selectedItems;
+    foreach(QGraphicsItem* gi, mActiveScene->selectedItems())
+        selectedItems << gi;
+
+    //---------------------------------------------------------//
+
+    QList<UBItem*> selected;
+    foreach(QGraphicsItem* gi, selectedItems)
+    {
+        gi->setSelected(false);
+
+        UBItem* ubItem = dynamic_cast<UBItem*>(gi);
+        UBGraphicsItem *ubGi =  dynamic_cast<UBGraphicsItem*>(gi);
+
+        if (ubItem && ubGi && !mActiveScene->tools().contains(gi))
+        {
+            selected << ubItem->deepCopy();
+            ubGi->remove();
+        }
+    }
+
+    //---------------------------------------------------------//
+
+    if (selected.size() > 0)
+    {
+        QClipboard *clipboard = QApplication::clipboard();
+
+        UBMimeDataGraphicsItem*  mimeGi = new UBMimeDataGraphicsItem(selected);
+
+        mimeGi->setData(UBApplication::mimeTypeUniboardPageItem, QByteArray());
+        clipboard->setMimeData(mimeGi);
+
+        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+    }
+
+    //---------------------------------------------------------//
+}
+
+
+void UBBoardController::copy()
+{
+    QList<UBItem*> selected;
+
+    foreach(QGraphicsItem* gi, mActiveScene->selectedItems())
+    {
+        UBItem* ubItem = dynamic_cast<UBItem*>(gi);
+
+        if (ubItem && !mActiveScene->tools().contains(gi))
+            selected << ubItem;
+    }
+
+    if (selected.size() > 0)
+    {
+        QClipboard *clipboard = QApplication::clipboard();
+
+        UBMimeDataGraphicsItem*  mimeGi = new UBMimeDataGraphicsItem(selected);
+
+        mimeGi->setData(UBApplication::mimeTypeUniboardPageItem, QByteArray());
+        clipboard->setMimeData(mimeGi);
+
+    }
+}
+
+
+void UBBoardController::paste()
+{
+    QClipboard *clipboard = QApplication::clipboard();
+    QPointF pos(0, 0);
+    processMimeData(clipboard->mimeData(), pos);
+
+    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+}
+
+
+void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPointF& pPos)
+{
+    if (pMimeData->hasFormat(UBApplication::mimeTypeUniboardPage))
+    {
+        const UBMimeData* mimeData = qobject_cast <const UBMimeData*>(pMimeData);
+
+        if (mimeData)
+        {
+            int previousActiveSceneIndex = activeSceneIndex();
+            int previousPageCount = selectedDocument()->pageCount();
+
+            foreach (UBMimeDataItem sourceItem, mimeData->items())
+                addScene(sourceItem.documentProxy(), sourceItem.sceneIndex(), true);
+
+            if (selectedDocument()->pageCount() < previousPageCount + mimeData->items().count())
+                setActiveDocumentScene(previousActiveSceneIndex);
+            else
+                setActiveDocumentScene(previousActiveSceneIndex + 1);
+
+            return;
+        }
+    }
+
+    if (pMimeData->hasFormat(UBApplication::mimeTypeUniboardPageItem))
+    {
+        const UBMimeDataGraphicsItem* mimeData = qobject_cast <const UBMimeDataGraphicsItem*>(pMimeData);
+
+        if (mimeData)
+        {
+            foreach(UBItem* item, mimeData->items())
+            {
+                QGraphicsItem* pItem = dynamic_cast<QGraphicsItem*>(item);
+                if(NULL != pItem){
+                    duplicateItem(item);
+                }
+            }
+
+            return;
+        }
+    }
+
+    if(pMimeData->hasHtml())
+    {
+        QString qsHtml = pMimeData->html();
+        QString url = UBApplication::urlFromHtml(qsHtml);
+
+        if("" != url)
+        {
+            downloadURL(url, QString(), pPos);
+            return;
+        }
+    }
+
+    if (pMimeData->hasUrls())
+    {
+        QList<QUrl> urls = pMimeData->urls();
+
+        int index = 0;
+
+        const UBFeaturesMimeData *internalMimeData = qobject_cast<const UBFeaturesMimeData*>(pMimeData);
+        bool internalData = false;
+        if (internalMimeData) {
+            internalData = true;
+        }
+
+        foreach(const QUrl url, urls){
+            QPointF pos(pPos + QPointF(index * 15, index * 15));
+
+            downloadURL(url, QString(), pos, QSize(), false,  internalData);
+            index++;
+        }
+
+        return;
+    }
+
+    if (pMimeData->hasImage())
+    {
+        QImage img = qvariant_cast<QImage> (pMimeData->imageData());
+        QPixmap pix = QPixmap::fromImage(img);
+
+        // validate that the image is really an image, webkit does not fill properly the image mime data
+        if (pix.width() != 0 && pix.height() != 0)
+        {
+            mActiveScene->addPixmap(pix, NULL, pPos, 1.);
+            return;
+        }
+    }
+
+    if (pMimeData->hasText())
+    {
+        if("" != pMimeData->text()){
+            // Sometimes, it is possible to have an URL as text. we check here if it is the case
+            QString qsTmp = pMimeData->text().remove(QRegExp("[\\0]"));
+            if(qsTmp.startsWith("http")){
+                downloadURL(QUrl(qsTmp), QString(), pPos);
+            }
+            else{
+                mActiveScene->addTextHtml(pMimeData->html(), pPos);
+            }
+        }
+        else{
+#ifdef Q_WS_MACX
+                //  With Safari, in 95% of the drops, the mime datas are hidden in Apple Web Archive pasteboard type.
+                //  This is due to the way Safari is working so we have to dig into the pasteboard in order to retrieve
+                //  the data.
+                QString qsUrl = UBPlatformUtils::urlFromClipboard();
+                if("" != qsUrl){
+                    // We finally got the url of the dropped ressource! Let's import it!
+                    downloadURL(qsUrl, qsUrl, pPos);
+                    return;
+                }
+#endif
+        }
+    }
+}
+
+
+void UBBoardController::togglePodcast(bool checked)
+{
+    if (UBPodcastController::instance())
+        UBPodcastController::instance()->toggleRecordingPalette(checked);
+}
+
+void UBBoardController::moveGraphicsWidgetToControlView(UBGraphicsWidgetItem* graphicsWidget)
+{
+    mActiveScene->setURStackEnable(false);
+    UBGraphicsItem *toolW3C = duplicateItem(dynamic_cast<UBItem *>(graphicsWidget));
+    UBGraphicsWidgetItem *copyedGraphicsWidget = NULL;
+
+    if (UBGraphicsWidgetItem::Type == toolW3C->type())
+        copyedGraphicsWidget = static_cast<UBGraphicsWidgetItem *>(toolW3C);
+
+    UBToolWidget *toolWidget = new UBToolWidget(copyedGraphicsWidget, mControlView);
+
+    graphicsWidget->remove(false);
+    mActiveScene->addItemToDeletion(graphicsWidget);
+
+    mActiveScene->setURStackEnable(true);
+
+    QPoint controlViewPos = mControlView->mapFromScene(graphicsWidget->sceneBoundingRect().center());
+    toolWidget->centerOn(mControlView->mapTo(mControlContainer, controlViewPos));
+    toolWidget->show();
+}
+
+
+void UBBoardController::moveToolWidgetToScene(UBToolWidget* toolWidget)
+{
+    UBGraphicsWidgetItem *widgetToScene = toolWidget->toolWidget();
+
+    widgetToScene->resetTransform();
+
+    QPoint mainWindowCenter = toolWidget->mapTo(mMainWindow, QPoint(toolWidget->width(), toolWidget->height()) / 2);
+    QPoint controlViewCenter = mControlView->mapFrom(mMainWindow, mainWindowCenter);
+    QPointF scenePos = mControlView->mapToScene(controlViewCenter);
+
+    mActiveScene->addGraphicsWidget(widgetToScene, scenePos);
+
+    toolWidget->remove();
+}
+
+
+void UBBoardController::updateBackgroundActionsState(bool isDark, bool isCrossed)
+{
+    if (isDark && !isCrossed)
+        mMainWindow->actionPlainDarkBackground->setChecked(true);
+    else if (isDark && isCrossed)
+        mMainWindow->actionCrossedDarkBackground->setChecked(true);
+    else if (!isDark && isCrossed)
+        mMainWindow->actionCrossedLightBackground->setChecked(true);
+    else
+        mMainWindow->actionPlainLightBackground->setChecked(true);
+}
+
+
+void UBBoardController::addItem()
+{
+    QString defaultPath = UBSettings::settings()->lastImportToLibraryPath->get().toString();
+
+    QString extensions;
+    foreach(QString ext, UBSettings::imageFileExtensions)
+    {
+        extensions += " *.";
+        extensions += ext;
+    }
+
+    QString filename = QFileDialog::getOpenFileName(mControlContainer, tr("Add Item"),
+                                                    defaultPath,
+                                                    tr("All Supported (%1)").arg(extensions), NULL, QFileDialog::DontUseNativeDialog);
+
+    if (filename.length() > 0)
+    {
+        mPaletteManager->addItem(QUrl::fromLocalFile(filename));
+        QFileInfo source(filename);
+        UBSettings::settings()->lastImportToLibraryPath->set(QVariant(source.absolutePath()));
+    }
+}
+
+void UBBoardController::importPage()
+{
+    int pageCount = selectedDocument()->pageCount();
+    if (UBApplication::documentController->addFileToDocument(selectedDocument()))
+    {
+        setActiveDocumentScene(selectedDocument(), pageCount, true);
+    }
+}
+
+void UBBoardController::notifyPageChanged()
+{
+    emit pageChanged();
+}
+
+void UBBoardController::onDownloadModalFinished()
+{
+
+}
+
+void UBBoardController::displayMetaData(QMap<QString, QString> metadatas)
+{
+    emit displayMetadata(metadatas);
+}
+
+void UBBoardController::freezeW3CWidgets(bool freeze)
+{
+    if (mActiveSceneIndex >= 0)
+    {
+        QList<QGraphicsItem *> list = UBApplication::boardController->activeScene()->getFastAccessItems();
+        foreach(QGraphicsItem *item, list)
+        {
+            freezeW3CWidget(item, freeze);
+        }
+    }
+}
+
+void UBBoardController::freezeW3CWidget(QGraphicsItem *item, bool freeze)
+{
+    if(item->type() == UBGraphicsW3CWidgetItem::Type)
+    {
+        UBGraphicsW3CWidgetItem* item_casted = dynamic_cast<UBGraphicsW3CWidgetItem*>(item);
+        if (0 == item_casted)
+            return;
+
+        if (freeze) {
+            item_casted->load(QUrl(UBGraphicsW3CWidgetItem::freezedWidgetFilePath()));
+        } else
+            item_casted->loadMainHtml();
+    }
+}
diff --git a/Sankore-3.1/src/board/UBBoardController.h b/Sankore-3.1/src/board/UBBoardController.h
index 152ea39..b52b7ae 100644
--- a/Sankore-3.1/src/board/UBBoardController.h
+++ b/Sankore-3.1/src/board/UBBoardController.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,295 +18,303 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBBOARDCONTROLLER_H_
-#define UBBOARDCONTROLLER_H_
-
-#include <QtGui>
-
-#include <QObject>
-#include "document/UBDocumentContainer.h"
-
-class UBMainWindow;
-class UBApplication;
-class UBBoardView;
-
-class UBDocumentController;
-class UBMessageWindow;
-class UBGraphicsScene;
-class UBDocumentProxy;
-class UBBlackoutWidget;
-class UBToolWidget;
-class UBVersion;
-class UBSoftwareUpdate;
-class UBSoftwareUpdateDialog;
-class UBGraphicsMediaItem;
-class UBGraphicsVideoItem;
-class UBGraphicsAudioItem;
-class UBGraphicsWidgetItem;
-class UBBoardPaletteManager;
-class UBItem;
-class UBGraphicsItem;
-
-
-class UBBoardController : public UBDocumentContainer
-{
-    Q_OBJECT
-
-    public:
-        UBBoardController(UBMainWindow *mainWindow);
-        virtual ~UBBoardController();
-
-        void init();
-        void setupLayout();
-
-        UBGraphicsScene* activeScene() const;
-        int activeSceneIndex() const;
-        QSize displayViewport();
-        QSize controlViewport();
-        QRectF controlGeometry();
-        void closing();
-
-        int currentPage();
-
-        QWidget* controlContainer()
-        {
-            return mControlContainer;
-        }
-
-        UBBoardView* controlView()
-        {
-            return mControlView;
-        }
-
-        UBBoardView* displayView()
-        {
-            return mDisplayView;
-        }
-
-        UBGraphicsScene* activeScene()
-        {
-            return mActiveScene;
-        }
-
-        void setPenColorOnDarkBackground(const QColor& pColor)
-        {
-            if (mPenColorOnDarkBackground == pColor)
-                return;
-
-            mPenColorOnDarkBackground = pColor;
-            emit penColorChanged();
-        }
-
-        void setPenColorOnLightBackground(const QColor& pColor)
-        {
-            if (mPenColorOnLightBackground == pColor)
-                return;
-
-            mPenColorOnLightBackground = pColor;
-            emit penColorChanged();
-        }
-
-        void setMarkerColorOnDarkBackground(const QColor& pColor)
-        {
-            mMarkerColorOnDarkBackground = pColor;
-        }
-
-        void setMarkerColorOnLightBackground(const QColor& pColor)
-        {
-            mMarkerColorOnLightBackground = pColor;
-        }
-
-        QColor penColorOnDarkBackground()
-        {
-            return mPenColorOnDarkBackground;
-        }
-
-        QColor penColorOnLightBackground()
-        {
-            return mPenColorOnLightBackground;
-        }
-
-        QColor markerColorOnDarkBackground()
-        {
-            return mMarkerColorOnDarkBackground;
-        }
-
-        QColor markerColorOnLightBackground()
-        {
-            return mMarkerColorOnLightBackground;
-        }
-
-        qreal systemScaleFactor()
-        {
-            return mSystemScaleFactor;
-        }
-        qreal currentZoom();
-        void persistCurrentScene();
-        void showNewVersionAvailable(bool automatic, const UBVersion &installedVersion, const UBSoftwareUpdate &softwareUpdate);
-        void setBoxing(QRect displayRect);
-        void setToolbarTexts();
-        static QUrl expandWidgetToTempDir(const QByteArray& pZipedData, const QString& pExtension = QString("wgt"));
-//        static QRect freeRectInGlobalPos() const {return ;}
-        void setPageSize(QSize newSize);
-        UBBoardPaletteManager *paletteManager()
-        {
-            return mPaletteManager;
-        }
-
-        void notifyCache(bool visible);
-        void notifyPageChanged();
-        void displayMetaData(QMap<QString, QString> metadatas);
-
-        void ClearUndoStack();
-
-        void setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, int pSceneIndex = 0, bool forceReload = false);
-        void setActiveDocumentScene(int pSceneIndex);
-
-        void moveSceneToIndex(int source, int target);
-        void duplicateScene(int index);
-        UBGraphicsItem *duplicateItem(UBItem *item, bool bAsync = true);
-        void deleteScene(int index);
-
-        bool cacheIsVisible() {return mCacheWidgetIsEnabled;}
-
-        QString actionGroupText(){ return mActionGroupText;}
-        QString actionUngroupText(){ return mActionUngroupText;}
-
-    public slots:
-        void showDocumentsDialog();
-        void showKeyboard(bool show);
-        void togglePodcast(bool checked);
-        void blackout();
-        void addScene();
-        void addScene(UBDocumentProxy* proxy, int sceneIndex, bool replaceActiveIfEmpty = false);
-        void addScene(UBGraphicsScene* scene, bool replaceActiveIfEmpty = false);
-        void duplicateScene();
-        void importPage();
-        void clearScene();
-        void clearSceneItems();
-        void clearSceneAnnotation();
-        void clearSceneBackground();
-        void zoomIn(QPointF scenePoint = QPointF(0,0));
-        void zoomOut(QPointF scenePoint = QPointF(0,0));
-        void zoomRestore();
-        void centerRestore();
-        void centerOn(QPointF scenePoint = QPointF(0,0));
-        void zoom(const qreal ratio, QPointF scenePoint);
-        void handScroll(qreal dx, qreal dy);
-        void previousScene();
-        void nextScene();
-        void firstScene();
-        void lastScene();
-        void groupButtonClicked();
-        void downloadURL(const QUrl& url, QString contentSourceUrl = QString(), const QPointF& pPos = QPointF(0.0, 0.0), const QSize& pSize = QSize(), bool isBackground = false, bool internalData = false);
-        UBItem *downloadFinished(bool pSuccess, QUrl sourceUrl, QUrl contentUrl, QString pHeader,
-                                 QByteArray pData, QPointF pPos, QSize pSize,
-                                 bool isBackground = false, bool internalData = false);
-        void changeBackground(bool isDark, bool isCrossed);
-        void setToolCursor(int tool);
-        void showMessage(const QString& message, bool showSpinningWheel = false);
-        void hideMessage();
-        void setDisabled(bool disable);
-        void setColorIndex(int pColorIndex);
-        void removeTool(UBToolWidget* toolWidget);
-        void hide();
-        void show();
-        void setWidePageSize(bool checked);
-        void setRegularPageSize(bool checked);
-        void stylusToolChanged(int tool);
-        void grabScene(const QRectF& pSceneRect);
-        UBGraphicsMediaItem* addVideo(const QUrl& pUrl, bool startPlay, const QPointF& pos, bool bUseSource = false);
-        UBGraphicsMediaItem* addAudio(const QUrl& pUrl, bool startPlay, const QPointF& pos, bool bUseSource = false);
-        UBGraphicsWidgetItem *addW3cWidget(const QUrl& pUrl, const QPointF& pos);
-
-        void cut();
-        void copy();
-        void paste();
-        void processMimeData(const QMimeData* pMimeData, const QPointF& pPos);
-        void moveGraphicsWidgetToControlView(UBGraphicsWidgetItem* graphicWidget);
-        void moveToolWidgetToScene(UBToolWidget* toolWidget);
-        void addItem();
-
-        void freezeW3CWidgets(bool freeze);
-        void freezeW3CWidget(QGraphicsItem* item, bool freeze);
-        void startScript();
-        void stopScript();
-
-    signals:
-        void newPageAdded();
-        void activeSceneChanged();
-        void zoomChanged(qreal pZoomFactor);
-        void systemScaleFactorChanged(qreal pSystemScaleFactor);
-        void penColorChanged();
-        void controlViewportChanged();
-        void backgroundChanged();
-        void cacheEnabled();
-        void cacheDisabled();
-        void pageChanged();
-        void documentReorganized(int index);
-        void displayMetadata(QMap<QString, QString> metadata);
-        void pageSelectionChanged(int index);
-        void npapiWidgetCreated(const QString &Url);
-
-    protected:
-        void setupViews();
-        void setupToolbar();
-        void connectToolbar();
-        void initToolbarTexts();
-        void updateActionStates();
-        void updateSystemScaleFactor();
-        QString truncate(QString text, int maxWidth);
-
-    protected slots:
-        void selectionChanged();
-        void undoRedoStateChange(bool canUndo);
-        void documentSceneChanged(UBDocumentProxy* proxy, int pIndex);
-
-    private:
-        void updatePageSizeState();
-        void saveViewState();
-        void adjustDisplayViews();
-
-        UBMainWindow *mMainWindow;
-        UBGraphicsScene* mActiveScene;
-        int mActiveSceneIndex;
-        UBBoardPaletteManager *mPaletteManager;
-        UBSoftwareUpdateDialog *mSoftwareUpdateDialog;
-        UBMessageWindow *mMessageWindow;
-        UBBoardView *mControlView;
-        UBBoardView *mDisplayView;
-        QWidget *mControlContainer;
-        QHBoxLayout *mControlLayout;
-        qreal mZoomFactor;
-        bool mIsClosing;
-        QColor mPenColorOnDarkBackground;
-        QColor mPenColorOnLightBackground;
-        QColor mMarkerColorOnDarkBackground;
-        QColor mMarkerColorOnLightBackground;
-        qreal mSystemScaleFactor;
-        bool mCleanupDone;
-        QMap<QAction*, QPair<QString, QString> > mActionTexts;
-        bool mCacheWidgetIsEnabled;
-        QGraphicsItem* mLastCreatedItem;
-        int mDeletingSceneIndex;
-        int mMovingSceneIndex;
-        QString mActionGroupText;
-        QString mActionUngroupText;
-
-    private slots:
-        void stylusToolDoubleClicked(int tool);
-        void boardViewResized(QResizeEvent* event);
-        void documentWillBeDeleted(UBDocumentProxy* pProxy);
-        void updateBackgroundActionsState(bool isDark, bool isCrossed);
-        void updateBackgroundState();
-        void colorPaletteChanged();
-        void libraryDialogClosed(int ret);
-        void lastWindowClosed();
-        void onDownloadModalFinished();
-
-};
-
-
-#endif /* UBBOARDCONTROLLER_H_ */
+
+
+
+#ifndef UBBOARDCONTROLLER_H_
+#define UBBOARDCONTROLLER_H_
+
+#include <QtGui>
+
+#include <QObject>
+#include "document/UBDocumentContainer.h"
+
+class UBMainWindow;
+class UBApplication;
+class UBBoardView;
+
+class UBDocumentController;
+class UBMessageWindow;
+class UBGraphicsScene;
+class UBDocumentProxy;
+class UBBlackoutWidget;
+class UBToolWidget;
+class UBVersion;
+class UBSoftwareUpdate;
+class UBSoftwareUpdateDialog;
+class UBGraphicsMediaItem;
+class UBGraphicsVideoItem;
+class UBGraphicsAudioItem;
+class UBGraphicsWidgetItem;
+class UBBoardPaletteManager;
+class UBItem;
+class UBGraphicsItem;
+class UBDocumentNavigator;
+
+
+class UBBoardController : public UBDocumentContainer
+{
+    Q_OBJECT
+
+    public:
+        UBBoardController(UBMainWindow *mainWindow);
+        virtual ~UBBoardController();
+
+        void init();
+        void setupLayout();
+
+        UBGraphicsScene* activeScene() const;
+        int activeSceneIndex() const;
+        QSize displayViewport();
+        QSize controlViewport();
+        QRectF controlGeometry();
+        void closing();
+        void addLinkToPage(QString sourceUrl, QSize size = QSize(340,200), QPointF pos = QPointF(0,0), const QString &embedCode = QString());
+
+        int currentPage();
+
+        QWidget* controlContainer()
+        {
+            return mControlContainer;
+        }
+
+        UBBoardView* controlView()
+        {
+            return mControlView;
+        }
+
+        UBBoardView* displayView()
+        {
+            return mDisplayView;
+        }
+
+        UBGraphicsScene* activeScene()
+        {
+            return mActiveScene;
+        }
+
+        void setPenColorOnDarkBackground(const QColor& pColor)
+        {
+            if (mPenColorOnDarkBackground == pColor)
+                return;
+
+            mPenColorOnDarkBackground = pColor;
+            emit penColorChanged();
+        }
+
+        void setPenColorOnLightBackground(const QColor& pColor)
+        {
+            if (mPenColorOnLightBackground == pColor)
+                return;
+
+            mPenColorOnLightBackground = pColor;
+            emit penColorChanged();
+        }
+
+        void setMarkerColorOnDarkBackground(const QColor& pColor)
+        {
+            mMarkerColorOnDarkBackground = pColor;
+        }
+
+        void setMarkerColorOnLightBackground(const QColor& pColor)
+        {
+            mMarkerColorOnLightBackground = pColor;
+        }
+
+        QColor penColorOnDarkBackground()
+        {
+            return mPenColorOnDarkBackground;
+        }
+
+        QColor penColorOnLightBackground()
+        {
+            return mPenColorOnLightBackground;
+        }
+
+        QColor markerColorOnDarkBackground()
+        {
+            return mMarkerColorOnDarkBackground;
+        }
+
+        QColor markerColorOnLightBackground()
+        {
+            return mMarkerColorOnLightBackground;
+        }
+
+        qreal systemScaleFactor()
+        {
+            return mSystemScaleFactor;
+        }
+        qreal currentZoom();
+        void persistCurrentScene(UBDocumentProxy *pProxy = 0);
+        void showNewVersionAvailable(bool automatic, const UBVersion &installedVersion, const UBSoftwareUpdate &softwareUpdate);
+        void setBoxing(QRect displayRect);
+        void setToolbarTexts();
+        static QUrl expandWidgetToTempDir(const QByteArray& pZipedData, const QString& pExtension = QString("wgt"));
+//        static QRect freeRectInGlobalPos() const {return ;}
+        void setPageSize(QSize newSize);
+        UBBoardPaletteManager *paletteManager()
+        {
+            return mPaletteManager;
+        }
+
+        void notifyCache(bool visible);
+        void notifyPageChanged();
+        void displayMetaData(QMap<QString, QString> metadatas);
+
+        void ClearUndoStack();
+
+        void setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, int pSceneIndex = 0, bool forceReload = false);
+        void setActiveDocumentScene(int pSceneIndex);
+
+        void moveSceneToIndex(int source, int target);
+        void duplicateScene(int index);
+        UBGraphicsItem *duplicateItem(UBItem *item, bool bAsync = true);
+        void deleteScene(int index);
+        void regenerateThumbnails();
+
+        bool cacheIsVisible() {return mCacheWidgetIsEnabled;}
+
+        QString actionGroupText(){ return mActionGroupText;}
+        QString actionUngroupText(){ return mActionUngroupText;}
+        void setDocumentNavigator(UBDocumentNavigator *navigator){mDocumentNavigator = navigator;}
+        UBDocumentNavigator *documentNavigator() const {return mDocumentNavigator;}
+
+
+    public slots:
+        void showDocumentsDialog();
+        void showKeyboard(bool show);
+        void togglePodcast(bool checked);
+        void blackout();
+        void addScene();
+        void addScene(UBDocumentProxy* proxy, int sceneIndex, bool replaceActiveIfEmpty = false);
+        void addScene(UBGraphicsScene* scene, bool replaceActiveIfEmpty = false);
+        void duplicateScene();
+        void importPage();
+        void clearScene();
+        void clearSceneItems();
+        void clearSceneAnnotation();
+        void clearSceneBackground();
+        void zoomIn(QPointF scenePoint = QPointF(0,0));
+        void zoomOut(QPointF scenePoint = QPointF(0,0));
+        void zoomRestore();
+        void centerRestore();
+        void centerOn(QPointF scenePoint = QPointF(0,0));
+        void zoom(const qreal ratio, QPointF scenePoint);
+        void handScroll(qreal dx, qreal dy);
+        void previousScene();
+        void nextScene();
+        void firstScene();
+        void lastScene();
+        void groupButtonClicked();
+        void downloadURL(const QUrl& url, QString contentSourceUrl = QString(), const QPointF& pPos = QPointF(0.0, 0.0), const QSize& pSize = QSize(), bool isBackground = false, bool internalData = false);
+        UBItem *downloadFinished(bool pSuccess, QUrl sourceUrl, QUrl contentUrl, QString pHeader,
+                                 QByteArray pData, QPointF pPos, QSize pSize,
+                                 bool isSyncOperation = true, bool isBackground = false, bool internalData = false);
+        void changeBackground(bool isDark, bool isCrossed);
+        void setToolCursor(int tool);
+        void showMessage(const QString& message, bool showSpinningWheel = false);
+        void hideMessage();
+        void setDisabled(bool disable);
+        void setColorIndex(int pColorIndex);
+        void removeTool(UBToolWidget* toolWidget);
+        void hide();
+        void show();
+        void setWidePageSize(bool checked);
+        void setRegularPageSize(bool checked);
+        void stylusToolChanged(int tool);
+        void grabScene(const QRectF& pSceneRect);
+        UBGraphicsMediaItem* addVideo(const QUrl& pUrl, bool startPlay, const QPointF& pos, bool bUseSource = false);
+        UBGraphicsMediaItem* addAudio(const QUrl& pUrl, bool startPlay, const QPointF& pos, bool bUseSource = false);
+        UBGraphicsWidgetItem *addW3cWidget(const QUrl& pUrl, const QPointF& pos);
+
+        void cut();
+        void copy();
+        void paste();
+        void processMimeData(const QMimeData* pMimeData, const QPointF& pPos);
+        void moveGraphicsWidgetToControlView(UBGraphicsWidgetItem* graphicWidget);
+        void moveToolWidgetToScene(UBToolWidget* toolWidget);
+        void addItem();
+
+        void freezeW3CWidgets(bool freeze);
+        void freezeW3CWidget(QGraphicsItem* item, bool freeze);
+        void startScript();
+        void stopScript();
+
+    signals:
+        void newPageAdded();
+        void activeSceneChanged();
+        void zoomChanged(qreal pZoomFactor);
+        void systemScaleFactorChanged(qreal pSystemScaleFactor);
+        void penColorChanged();
+        void controlViewportChanged();
+        void backgroundChanged();
+        void cacheEnabled();
+        void cacheDisabled();
+        void pageChanged();
+        void documentReorganized(int index);
+        void displayMetadata(QMap<QString, QString> metadata);
+        void pageSelectionChanged(int index);
+        void npapiWidgetCreated(const QString &Url);
+
+    protected:
+        void setupViews();
+        void setupToolbar();
+        void connectToolbar();
+        void initToolbarTexts();
+        void updateActionStates();
+        void updateSystemScaleFactor();
+        QString truncate(QString text, int maxWidth);
+
+    protected slots:
+        void selectionChanged();
+        void undoRedoStateChange(bool canUndo);
+        void documentSceneChanged(UBDocumentProxy* proxy, int pIndex);
+
+    private:
+        void updatePageSizeState();
+        void saveViewState();
+        void adjustDisplayViews();
+
+        UBMainWindow *mMainWindow;
+        UBGraphicsScene* mActiveScene;
+        int mActiveSceneIndex;
+        UBBoardPaletteManager *mPaletteManager;
+        UBSoftwareUpdateDialog *mSoftwareUpdateDialog;
+        UBMessageWindow *mMessageWindow;
+        UBBoardView *mControlView;
+        UBBoardView *mDisplayView;
+        QWidget *mControlContainer;
+        UBDocumentNavigator *mDocumentNavigator;
+        QHBoxLayout *mControlLayout;
+        qreal mZoomFactor;
+        bool mIsClosing;
+        QColor mPenColorOnDarkBackground;
+        QColor mPenColorOnLightBackground;
+        QColor mMarkerColorOnDarkBackground;
+        QColor mMarkerColorOnLightBackground;
+        qreal mSystemScaleFactor;
+        bool mCleanupDone;
+        QMap<QAction*, QPair<QString, QString> > mActionTexts;
+        bool mCacheWidgetIsEnabled;
+        QGraphicsItem* mLastCreatedItem;
+        int mDeletingSceneIndex;
+        int mMovingSceneIndex;
+        QString mActionGroupText;
+        QString mActionUngroupText;
+
+    private slots:
+        void stylusToolDoubleClicked(int tool);
+        void boardViewResized(QResizeEvent* event);
+        void documentWillBeDeleted(UBDocumentProxy* pProxy);
+        void updateBackgroundActionsState(bool isDark, bool isCrossed);
+        void updateBackgroundState();
+        void colorPaletteChanged();
+        void libraryDialogClosed(int ret);
+        void lastWindowClosed();
+        void onDownloadModalFinished();
+
+};
+
+
+#endif /* UBBOARDCONTROLLER_H_ */
diff --git a/Sankore-3.1/src/board/UBBoardPaletteManager.cpp b/Sankore-3.1/src/board/UBBoardPaletteManager.cpp
index 8c9e84a..c460919 100644
--- a/Sankore-3.1/src/board/UBBoardPaletteManager.cpp
+++ b/Sankore-3.1/src/board/UBBoardPaletteManager.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,998 +18,1026 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBBoardPaletteManager.h"
-
-#include "frameworks/UBPlatformUtils.h"
-#include "frameworks/UBFileSystemUtils.h"
-
-#include "core/UBApplication.h"
-#include "core/UBApplicationController.h"
-#include "core/UBSettings.h"
-#include "core/UBSetting.h"
-#include "core/UBDisplayManager.h"
-
-#include "gui/UBMainWindow.h"
-#include "gui/UBStylusPalette.h"
-#include "gui/UBKeyboardPalette.h"
-#include "gui/UBToolWidget.h"
-#include "gui/UBZoomPalette.h"
-#include "gui/UBWebToolsPalette.h"
-#include "gui/UBActionPalette.h"
-#include "gui/UBFavoriteToolPalette.h"
-#include "gui/UBDockTeacherGuideWidget.h"
-
-
-#include "web/UBWebPage.h"
-#include "web/UBWebController.h"
-#include "web/browser/WBBrowserWindow.h"
-#include "web/browser/WBTabWidget.h"
-#include "web/browser/WBWebView.h"
-
-#include "desktop/UBDesktopAnnotationController.h"
-
-
-#include "network/UBNetworkAccessManager.h"
-#include "network/UBServerXMLHttpRequest.h"
-
-#include "domain/UBGraphicsScene.h"
-#include "domain/UBGraphicsPixmapItem.h"
-
-#include "document/UBDocumentProxy.h"
-#include "podcast/UBPodcastController.h"
-#include "board/UBDrawingController.h"
-
-#include "tools/UBToolsManager.h"
-
-#include "UBBoardController.h"
-
-#include "document/UBDocumentController.h"
-
-#include "core/memcheck.h"
-
-UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardController* pBoardController)
-    : QObject(container)
-    , mKeyboardPalette(0)
-    , mWebToolsCurrentPalette(0)
-    , mContainer(container)
-    , mBoardControler(pBoardController)
-    , mStylusPalette(0)
-    , mZoomPalette(0)
-    , mLeftPalette(NULL)
-    , mRightPalette(NULL)
-    , mBackgroundsPalette(0)
-    , mToolsPalette(0)
-    , mAddItemPalette(0)
-    , mErasePalette(NULL)
-    , mPagePalette(NULL)
-    , mPendingPageButtonPressed(false)
-    , mPendingZoomButtonPressed(false)
-    , mPendingPanButtonPressed(false)
-    , mPendingEraseButtonPressed(false)
-    , mpPageNavigWidget(NULL)
-    , mpCachePropWidget(NULL)
-    , mpDownloadWidget(NULL)
-    , mpTeacherGuideWidget(NULL)
-    , mDownloadInProgress(false)
-{
-    setupPalettes();
-    connectPalettes();
-}
-
-
-UBBoardPaletteManager::~UBBoardPaletteManager()
-{
-
-// mAddedItemPalette is delete automatically because of is parent 
-// that changes depending on the mode 
-
-// mMainWindow->centralWidget is the parent of mStylusPalette
-// do not delete this here.
-}
-
-void UBBoardPaletteManager::initPalettesPosAtStartup()
-{
-    mStylusPalette->initPosition();
-}
-
-void UBBoardPaletteManager::setupLayout()
-{
-
-}
-
-/**
- * \brief Set up the dock palette widgets
- */
-void UBBoardPaletteManager::setupDockPaletteWidgets()
-{
-
-    //------------------------------------------------//
-    // Create the widgets for the dock palettes
-
-    mpPageNavigWidget = new UBPageNavigationWidget();
-
-    mpCachePropWidget = new UBCachePropertiesWidget();
-
-    mpDownloadWidget = new UBDockDownloadWidget();
-
-    // Add the dock palettes
-    mLeftPalette = new UBLeftPalette(mContainer);
-
-    // LEFT palette widgets
-    mpPageNavigWidget = new UBPageNavigationWidget();
-    mLeftPalette->registerWidget(mpPageNavigWidget);
-    mLeftPalette->addTab(mpPageNavigWidget);
-
-    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool() || UBSettings::settings()->teacherGuideLessonPagesActivated->get().toBool()){
-        mpTeacherGuideWidget = new UBDockTeacherGuideWidget();
-        mLeftPalette->registerWidget(mpTeacherGuideWidget);
-        mLeftPalette->addTab(mpTeacherGuideWidget);
-    }
-
-    mLeftPalette->connectSignals();
-
-    mRightPalette = new UBRightPalette(mContainer);
-    // RIGHT palette widgets
-#ifndef USE_WEB_WIDGET
-    mpFeaturesWidget = new UBFeaturesWidget();
-    mRightPalette->registerWidget(mpFeaturesWidget);
-    mRightPalette->addTab(mpFeaturesWidget);
-#endif
-
-    //Do not show deprecated lib widget to prevent collisions. Uncomment to return lib widget
-
-#ifdef USE_WEB_WIDGET
-    mRightPalette->registerWidget(mpLibWidget);
-    mRightPalette->addTab(mpLibWidget);
-#endif
-
-
-    // The cache widget will be visible only if a cache is put on the page
-    mRightPalette->registerWidget(mpCachePropWidget);
-
-    //  The download widget will be part of the right palette but
-    //  will become visible only when the first download starts
-    mRightPalette->registerWidget(mpDownloadWidget);
-    mRightPalette->connectSignals();
-    changeMode(eUBDockPaletteWidget_BOARD, true);
-
-    // Hide the tabs that must be hidden
-    mRightPalette->removeTab(mpDownloadWidget);
-    mRightPalette->removeTab(mpCachePropWidget);
-
-}
-
-void UBBoardPaletteManager::slot_changeMainMode(UBApplicationController::MainMode mainMode)
-{
-//    Board = 0, Internet, Document, Tutorial, ParaschoolEditor, WebDocument
-
-    switch( mainMode )
-    {
-        case UBApplicationController::Board:
-            {
-                // call changeMode only when switch NOT from desktop mode
-                if(!UBApplication::applicationController->isShowingDesktop())
-                    changeMode(eUBDockPaletteWidget_BOARD);
-            }
-            break;
-
-        case UBApplicationController::Tutorial:
-            {
-                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
-                    mKeyboardPalette->hide();
-            }
-            break;
-
-        case UBApplicationController::Internet:
-            changeMode(eUBDockPaletteWidget_WEB);
-            break;
-
-        case UBApplicationController::Document:
-            changeMode(eUBDockPaletteWidget_DOCUMENT);
-            break;
-
-        default:
-            {
-                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
-                    mKeyboardPalette->hide();
-            }
-            break;
-    }
-}
-
-void UBBoardPaletteManager::slot_changeDesktopMode(bool isDesktop)
-{
-    UBApplicationController::MainMode currMode = UBApplication::applicationController->displayMode();
-    if(!isDesktop)
-    {
-        switch( currMode )
-        {
-            case UBApplicationController::Board:
-                changeMode(eUBDockPaletteWidget_BOARD);
-                break;
-
-            default:
-                break;
-        }
-    }
-    else
-        changeMode(eUBDockPaletteWidget_DESKTOP);
-}
-
-void UBBoardPaletteManager::setupPalettes()
-{
-
-    if (UBPlatformUtils::hasVirtualKeyboard())
-    {
-        mKeyboardPalette = new UBKeyboardPalette(0);
-#ifndef Q_WS_WIN
-        connect(mKeyboardPalette, SIGNAL(closed()), mKeyboardPalette, SLOT(onDeactivated()));
-#endif
-    }
-
-
-    setupDockPaletteWidgets();
-
-
-    // Add the other palettes
-    mStylusPalette = new UBStylusPalette(mContainer, UBSettings::settings()->appToolBarOrientationVertical->get().toBool() ? Qt::Vertical : Qt::Horizontal);
-    connect(mStylusPalette, SIGNAL(stylusToolDoubleClicked(int)), UBApplication::boardController, SLOT(stylusToolDoubleClicked(int)));
-    mStylusPalette->show(); // always show stylus palette at startup
-
-    mZoomPalette = new UBZoomPalette(mContainer);
-
-    mStylusPalette->stackUnder(mZoomPalette);
-
-    QList<QAction*> backgroundsActions;
-
-    backgroundsActions << UBApplication::mainWindow->actionPlainLightBackground;
-    backgroundsActions << UBApplication::mainWindow->actionCrossedLightBackground;
-    backgroundsActions << UBApplication::mainWindow->actionPlainDarkBackground;
-    backgroundsActions << UBApplication::mainWindow->actionCrossedDarkBackground;
-
-    mBackgroundsPalette = new UBActionPalette(backgroundsActions, Qt::Horizontal , mContainer);
-    mBackgroundsPalette->setButtonIconSize(QSize(128, 128));
-    mBackgroundsPalette->groupActions();
-    mBackgroundsPalette->setClosable(true);
-    mBackgroundsPalette->setAutoClose(true);
-    mBackgroundsPalette->adjustSizeAndPosition();
-    mBackgroundsPalette->hide();
-
-    QList<QAction*> addItemActions;
-
-    addItemActions << UBApplication::mainWindow->actionAddItemToCurrentPage;
-    addItemActions << UBApplication::mainWindow->actionAddItemToNewPage;
-    addItemActions << UBApplication::mainWindow->actionAddItemToLibrary;
-
-    mAddItemPalette = new UBActionPalette(addItemActions, Qt::Horizontal, mContainer);
-    mAddItemPalette->setButtonIconSize(QSize(128, 128));
-    mAddItemPalette->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
-    mAddItemPalette->groupActions();
-    mAddItemPalette->setClosable(true);
-    mAddItemPalette->adjustSizeAndPosition();
-    mAddItemPalette->hide();
-
-    QList<QAction*> eraseActions;
-
-    eraseActions << UBApplication::mainWindow->actionEraseAnnotations;
-    eraseActions << UBApplication::mainWindow->actionEraseItems;
-    eraseActions << UBApplication::mainWindow->actionClearPage;
-    eraseActions << UBApplication::mainWindow->actionEraseBackground;
-
-    mErasePalette = new UBActionPalette(eraseActions, Qt::Horizontal , mContainer);
-    mErasePalette->setButtonIconSize(QSize(128, 128));
-    mErasePalette->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
-    mErasePalette->groupActions();
-    mErasePalette->setClosable(true);
-    mErasePalette->adjustSizeAndPosition();
-    mErasePalette->hide();
-
-    QList<QAction*> pageActions;
-
-    pageActions << UBApplication::mainWindow->actionNewPage;
-    pageActions << UBApplication::mainWindow->actionDuplicatePage;
-    pageActions << UBApplication::mainWindow->actionImportPage;
-
-    mPagePalette = new UBActionPalette(pageActions, Qt::Horizontal , mContainer);
-    mPagePalette->setButtonIconSize(QSize(128, 128));
-    mPagePalette->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
-    mPagePalette->groupActions();
-    mPagePalette->setClosable(true);
-    mPagePalette->adjustSizeAndPosition();
-    mPagePalette->hide();
-
-    connect(UBSettings::settings()->appToolBarOrientationVertical, SIGNAL(changed(QVariant)), this, SLOT(changeStylusPaletteOrientation(QVariant)));
-}
-
-void UBBoardPaletteManager::pagePaletteButtonPressed()
-{
-    mPageButtonPressedTime = QTime::currentTime();
-
-    mPendingPageButtonPressed = true;
-    QTimer::singleShot(1000, this, SLOT(pagePaletteButtonReleased()));
-}
-
-
-void UBBoardPaletteManager::pagePaletteButtonReleased()
-{
-    if (mPendingPageButtonPressed)
-    {
-        if( mPageButtonPressedTime.msecsTo(QTime::currentTime()) > 900)
-        {
-            // The palette is reinstanciated because the duplication depends on the current scene
-            delete(mPagePalette);
-            mPagePalette = 0;
-            QList<QAction*>pageActions;
-            pageActions << UBApplication::mainWindow->actionNewPage;
-            UBBoardController* boardController = UBApplication::boardController;
-            if(UBApplication::documentController->pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(boardController->activeSceneIndex()))){
-                pageActions << UBApplication::mainWindow->actionDuplicatePage;
-            }
-            pageActions << UBApplication::mainWindow->actionImportPage;
-
-            mPagePalette = new UBActionPalette(pageActions, Qt::Horizontal , mContainer);
-            mPagePalette->setButtonIconSize(QSize(128, 128));
-            mPagePalette->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
-            mPagePalette->groupActions();
-            mPagePalette->setClosable(true);
-
-            // As we recreate the pagePalette every time, we must reconnect the slots
-            connect(UBApplication::mainWindow->actionNewPage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
-            connect(UBApplication::mainWindow->actionDuplicatePage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
-            connect(UBApplication::mainWindow->actionImportPage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
-            connect(mPagePalette, SIGNAL(closed()), this, SLOT(pagePaletteClosed()));
-
-            togglePagePalette(true);
-        }
-        else
-        {
-            UBApplication::mainWindow->actionNewPage->trigger();
-        }
-
-        mPendingPageButtonPressed = false;
-    }
-}
-
-void UBBoardPaletteManager::erasePaletteButtonPressed()
-{
-    mEraseButtonPressedTime = QTime::currentTime();
-
-    mPendingEraseButtonPressed = true;
-    QTimer::singleShot(1000, this, SLOT(erasePaletteButtonReleased()));
-}
-
-
-void UBBoardPaletteManager::erasePaletteButtonReleased()
-{
-    if (mPendingEraseButtonPressed)
-    {
-        if( mEraseButtonPressedTime.msecsTo(QTime::currentTime()) > 900)
-        {
-            toggleErasePalette(true);
-        }
-        else
-        {
-            UBApplication::mainWindow->actionClearPage->trigger();
-        }
-
-        mPendingEraseButtonPressed = false;
-    }
-}
-
-
-
-void UBBoardPaletteManager::linkClicked(const QUrl& url)
-{
-      UBApplication::applicationController->showInternet();
-      UBApplication::webController->loadUrl(url);
-}
-
-
-void UBBoardPaletteManager::purchaseLinkActivated(const QString& link)
-{
-    UBApplication::applicationController->showInternet();
-    UBApplication::webController->loadUrl(QUrl(link));
-}
-
-void UBBoardPaletteManager::connectPalettes()
-{
-    connect(UBApplication::mainWindow->actionStylus, SIGNAL(toggled(bool)), this, SLOT(toggleStylusPalette(bool)));
-
-    foreach(QWidget *widget, UBApplication::mainWindow->actionZoomIn->associatedWidgets())
-    {
-        QAbstractButton *button = qobject_cast<QAbstractButton*>(widget);
-        if (button)
-        {
-            connect(button, SIGNAL(pressed()), this, SLOT(zoomButtonPressed()));
-            connect(button, SIGNAL(released()), this, SLOT(zoomButtonReleased()));
-        }
-    }
-
-    foreach(QWidget *widget, UBApplication::mainWindow->actionZoomOut->associatedWidgets())
-    {
-        QAbstractButton *button = qobject_cast<QAbstractButton*>(widget);
-        if (button)
-        {
-            connect(button, SIGNAL(pressed()), this, SLOT(zoomButtonPressed()));
-            connect(button, SIGNAL(released()), this, SLOT(zoomButtonReleased()));
-        }
-    }
-
-    foreach(QWidget *widget, UBApplication::mainWindow->actionHand->associatedWidgets())
-    {
-        QAbstractButton *button = qobject_cast<QAbstractButton*>(widget);
-        if (button)
-        {
-            connect(button, SIGNAL(pressed()), this, SLOT(panButtonPressed()));
-            connect(button, SIGNAL(released()), this, SLOT(panButtonReleased()));
-        }
-    }
-
-    connect(UBApplication::mainWindow->actionBackgrounds, SIGNAL(toggled(bool)), this, SLOT(toggleBackgroundPalette(bool)));
-    connect(mBackgroundsPalette, SIGNAL(closed()), this, SLOT(backgroundPaletteClosed()));
-
-    connect(UBApplication::mainWindow->actionPlainLightBackground, SIGNAL(triggered()), this, SLOT(changeBackground()));
-    connect(UBApplication::mainWindow->actionCrossedLightBackground, SIGNAL(triggered()), this, SLOT(changeBackground()));
-    connect(UBApplication::mainWindow->actionPlainDarkBackground, SIGNAL(triggered()), this, SLOT(changeBackground()));
-    connect(UBApplication::mainWindow->actionCrossedDarkBackground, SIGNAL(triggered()), this, SLOT(changeBackground()));
-    connect(UBApplication::mainWindow->actionPodcast, SIGNAL(triggered(bool)), this, SLOT(tooglePodcastPalette(bool)));
-
-    connect(UBApplication::mainWindow->actionAddItemToCurrentPage, SIGNAL(triggered()), this, SLOT(addItemToCurrentPage()));
-    connect(UBApplication::mainWindow->actionAddItemToNewPage, SIGNAL(triggered()), this, SLOT(addItemToNewPage()));
-    connect(UBApplication::mainWindow->actionAddItemToLibrary, SIGNAL(triggered()), this, SLOT(addItemToLibrary()));
-
-    connect(UBApplication::mainWindow->actionEraseItems, SIGNAL(triggered()), mErasePalette, SLOT(close()));
-    connect(UBApplication::mainWindow->actionEraseAnnotations, SIGNAL(triggered()), mErasePalette, SLOT(close()));
-    connect(UBApplication::mainWindow->actionClearPage, SIGNAL(triggered()), mErasePalette, SLOT(close()));
-    connect(UBApplication::mainWindow->actionEraseBackground,SIGNAL(triggered()),mErasePalette,SLOT(close()));
-    connect(mErasePalette, SIGNAL(closed()), this, SLOT(erasePaletteClosed()));
-
-    foreach(QWidget *widget, UBApplication::mainWindow->actionErase->associatedWidgets())
-    {
-        QAbstractButton *button = qobject_cast<QAbstractButton*>(widget);
-        if (button)
-        {
-            connect(button, SIGNAL(pressed()), this, SLOT(erasePaletteButtonPressed()));
-            connect(button, SIGNAL(released()), this, SLOT(erasePaletteButtonReleased()));
-        }
-    }
-
-    connect(UBApplication::mainWindow->actionNewPage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
-    connect(UBApplication::mainWindow->actionDuplicatePage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
-    connect(UBApplication::mainWindow->actionImportPage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
-    connect(mPagePalette, SIGNAL(closed()), this, SLOT(pagePaletteClosed()));
-
-    foreach(QWidget *widget, UBApplication::mainWindow->actionPages->associatedWidgets())
-    {
-        QAbstractButton *button = qobject_cast<QAbstractButton*>(widget);
-        if (button)
-        {
-            connect(button, SIGNAL(pressed()), this, SLOT(pagePaletteButtonPressed()));
-            connect(button, SIGNAL(released()), this, SLOT(pagePaletteButtonReleased()));
-        }
-    }
-
-}
-
-
-bool isFirstResized = true;
-void UBBoardPaletteManager::containerResized()
-{
-    int innerMargin = UBSettings::boardMargin;
-
-    int userLeft = innerMargin;
-    int userWidth = mContainer->width() - (2 * innerMargin);
-    int userTop = innerMargin;
-    int userHeight = mContainer->height() - (2 * innerMargin);
-
-    if(mStylusPalette)
-    {
-        mStylusPalette->move(userLeft, userTop);
-        mStylusPalette->adjustSizeAndPosition();
-        mStylusPalette->initPosition();
-    }
-
-    if(mZoomPalette)
-    {
-        mZoomPalette->move(userLeft + userWidth - mZoomPalette->width()
-                , userTop + userHeight /*- mPageNumberPalette->height()*/ - innerMargin - mZoomPalette->height());
-        mZoomPalette->adjustSizeAndPosition();
-    }
-
-    if (isFirstResized && mKeyboardPalette && mKeyboardPalette->parent() == UBApplication::boardController->controlContainer())
-    {
-        isFirstResized = false;
-        mKeyboardPalette->move(userLeft + (userWidth - mKeyboardPalette->width())/2,
-                               userTop + (userHeight - mKeyboardPalette->height())/2);
-        mKeyboardPalette->adjustSizeAndPosition();
-    }
-
-    if(mLeftPalette)
-    {
-        mLeftPalette->resize(mLeftPalette->width()-1, mContainer->height());
-        mLeftPalette->resize(mLeftPalette->width(), mContainer->height());
-    }
-
-    if(mRightPalette)
-    {
-        mRightPalette->resize(mRightPalette->width()-1, mContainer->height());
-        mRightPalette->resize(mRightPalette->width(), mContainer->height());
-    }
-}
-
-
-void UBBoardPaletteManager::changeBackground()
-{
-    if (UBApplication::mainWindow->actionCrossedLightBackground->isChecked())
-        UBApplication::boardController->changeBackground(false, true);
-    else if (UBApplication::mainWindow->actionPlainDarkBackground->isChecked())
-        UBApplication::boardController->changeBackground(true, false);
-    else if (UBApplication::mainWindow->actionCrossedDarkBackground->isChecked())
-        UBApplication::boardController->changeBackground(true, true);
-    else
-        UBApplication::boardController->changeBackground(false, false);
-
-    UBApplication::mainWindow->actionBackgrounds->setChecked(false);
-}
-
-
-void UBBoardPaletteManager::activeSceneChanged()
-{
-    UBGraphicsScene *activeScene =  UBApplication::boardController->activeScene();
-    int pageIndex = UBApplication::boardController->activeSceneIndex();
-
-    if (mStylusPalette)
-        connect(mStylusPalette, SIGNAL(mouseEntered()), activeScene, SLOT(hideEraser()));
-
-    if (mpPageNavigWidget)
-    {
-        mpPageNavigWidget->setPageNumber(UBDocumentContainer::pageFromSceneIndex(pageIndex), activeScene->document()->pageCount());
-    }
-
-    if (mZoomPalette)
-        connect(mZoomPalette, SIGNAL(mouseEntered()), activeScene, SLOT(hideEraser()));
-
-    if (mBackgroundsPalette)
-        connect(mBackgroundsPalette, SIGNAL(mouseEntered()), activeScene, SLOT(hideEraser()));
-}
-
-
-void UBBoardPaletteManager::toggleBackgroundPalette(bool checked)
-{
-    mBackgroundsPalette->setVisible(checked);
-
-    if (checked)
-    {
-        UBApplication::mainWindow->actionErase->setChecked(false);
-        UBApplication::mainWindow->actionNewPage->setChecked(false);
-
-        mBackgroundsPalette->adjustSizeAndPosition();
-        mBackgroundsPalette->move((mContainer->width() - mBackgroundsPalette->width()) / 2,
-            (mContainer->height() - mBackgroundsPalette->height()) / 5);
-    }
-}
-
-
-void UBBoardPaletteManager::backgroundPaletteClosed()
-{
-    UBApplication::mainWindow->actionBackgrounds->setChecked(false);
-}
-
-
-void UBBoardPaletteManager::toggleStylusPalette(bool checked)
-{
-    mStylusPalette->setVisible(checked);
-}
-
-
-void UBBoardPaletteManager::toggleErasePalette(bool checked)
-{
-    mErasePalette->setVisible(checked);
-    if (checked)
-    {
-        UBApplication::mainWindow->actionBackgrounds->setChecked(false);
-        UBApplication::mainWindow->actionNewPage->setChecked(false);
-
-        mErasePalette->adjustSizeAndPosition();
-        mErasePalette->move((mContainer->width() - mErasePalette->width()) / 2,
-            (mContainer->height() - mErasePalette->height()) / 5);
-    }
-}
-
-
-void UBBoardPaletteManager::erasePaletteClosed()
-{
-    UBApplication::mainWindow->actionErase->setChecked(false);
-}
-
-
-void UBBoardPaletteManager::togglePagePalette(bool checked)
-{
-    mPagePalette->setVisible(checked);
-    if (checked)
-    {
-        UBApplication::mainWindow->actionBackgrounds->setChecked(false);
-        UBApplication::mainWindow->actionErase->setChecked(false);
-
-        mPagePalette->adjustSizeAndPosition();
-        mPagePalette->move((mContainer->width() - mPagePalette->width()) / 2,
-            (mContainer->height() - mPagePalette->height()) / 5);
-    }
-}
-
-
-void UBBoardPaletteManager::pagePaletteClosed()
-{
-    UBApplication::mainWindow->actionPages->setChecked(false);
-}
-
-
-void UBBoardPaletteManager::tooglePodcastPalette(bool checked)
-{
-    UBPodcastController::instance()->toggleRecordingPalette(checked);
-}
-
-
-void UBBoardPaletteManager::addItem(const QUrl& pUrl)
-{
-    mItemUrl = pUrl;
-    mPixmap = QPixmap();
-    mPos = QPointF(0, 0);
-    mScaleFactor = 1.;
-
-    mAddItemPalette->show();
-    mAddItemPalette->adjustSizeAndPosition();
-
-    mAddItemPalette->move((mContainer->width() - mAddItemPalette->width()) / 2,
-        (mContainer->height() - mAddItemPalette->height()) / 5);
-}
-
-void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool isInit)
-{
-    bool rightPaletteVisible = mRightPalette->switchMode(newMode);
-    bool leftPaletteVisible = mLeftPalette->switchMode(newMode);
-
-    switch( newMode )
-    {
-        case eUBDockPaletteWidget_BOARD:
-            {
-                // On Application start up the mAddItemPalette isn't initialized yet
-                if(mAddItemPalette){
-                    mAddItemPalette->setParent(UBApplication::boardController->controlContainer());
-                }
-                mLeftPalette->assignParent(mContainer);
-                mRightPalette->assignParent(mContainer);
-                mRightPalette->stackUnder(mStylusPalette);
-                mLeftPalette->stackUnder(mStylusPalette);
-                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
-                {
-
-                    if(mKeyboardPalette->m_isVisible)
-                    {
-                        mKeyboardPalette->hide();
-                        mKeyboardPalette->setParent(UBApplication::boardController->controlContainer());
-                        mKeyboardPalette->show();
-                    }
-                    else
-                        mKeyboardPalette->setParent(UBApplication::boardController->controlContainer());
-                }
-
-                mLeftPalette->setVisible(leftPaletteVisible);
-                mRightPalette->setVisible(rightPaletteVisible);
-#ifdef Q_WS_WIN
-                if (rightPaletteVisible)
-                    mRightPalette->setAdditionalVOffset(0);
-#endif
-
-                if( !isInit )
-                    containerResized();
-                if (mWebToolsCurrentPalette)
-                    mWebToolsCurrentPalette->hide();
-            }
-            break;
-
-        case eUBDockPaletteWidget_DESKTOP:
-            {
-                mAddItemPalette->setParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
-                mLeftPalette->assignParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
-                mRightPalette->assignParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
-                mStylusPalette->raise();
-
-                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
-                {
-
-                    if(mKeyboardPalette->m_isVisible)
-                    {
-                        mKeyboardPalette->hide();
-#ifndef Q_WS_X11
-                        mKeyboardPalette->setParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
-#else
-                        mKeyboardPalette->setParent(0);
-#endif
-#ifdef Q_WS_MAC
-                        mKeyboardPalette->setWindowFlags(Qt::Dialog | Qt::Popup | Qt::FramelessWindowHint);
-#endif
-                        mKeyboardPalette->show();
-                    }
-                    else
-// In linux keyboard in desktop mode have to allways be with null parent
-#ifdef Q_WS_X11
-                        mKeyboardPalette->setParent(0);
-#else
-                        mKeyboardPalette->setParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
-#endif //Q_WS_X11
-#ifdef Q_WS_MAC
-                        mKeyboardPalette->setWindowFlags(Qt::Dialog | Qt::Popup | Qt::FramelessWindowHint);
-#endif
-
-                }
-
-                mLeftPalette->setVisible(leftPaletteVisible);
-                mRightPalette->setVisible(rightPaletteVisible);
-#ifdef Q_WS_WIN
-                if (rightPaletteVisible && UBSettings::settings()->appToolBarPositionedAtTop->get().toBool())
-                    mRightPalette->setAdditionalVOffset(30);
-#endif
-
-                if(!isInit)
-                    UBApplication::applicationController->uninotesController()->TransparentWidgetResized();
-
-                if (mWebToolsCurrentPalette)
-                    mWebToolsCurrentPalette->hide();
-            }
-            break;
-
-        case eUBDockPaletteWidget_WEB:
-            {
-                mAddItemPalette->setParent(UBApplication::mainWindow);
-                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
-                {
-//                    tmp variable?
-//                    WBBrowserWindow* brWnd = UBApplication::webController->GetCurrentWebBrowser();
-
-                    if(mKeyboardPalette->m_isVisible)
-                    {
-                        mKeyboardPalette->hide();
-                        mKeyboardPalette->setParent(UBApplication::mainWindow);
-                        mKeyboardPalette->show();
-                    }
-                    else
-                        mKeyboardPalette->setParent(UBApplication::mainWindow);
-                }
-
-            }
-            break;
-
-        case eUBDockPaletteWidget_DOCUMENT:
-            {
-                mLeftPalette->setVisible(leftPaletteVisible);
-                mRightPalette->setVisible(rightPaletteVisible);
-                mLeftPalette->assignParent(UBApplication::documentController->controlView());
-                mRightPalette->assignParent(UBApplication::documentController->controlView());
-                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
-                {
-
-                    if(mKeyboardPalette->m_isVisible)
-                    {
-                        mKeyboardPalette->hide();
-                        mKeyboardPalette->setParent(UBApplication::documentController->controlView());
-                        mKeyboardPalette->show();
-                    }
-                    else
-                        mKeyboardPalette->setParent(UBApplication::documentController->controlView());
-                }
-                if (mWebToolsCurrentPalette)
-                    mWebToolsCurrentPalette->hide();
-            }
-            break;
-
-        default:
-            {
-                mLeftPalette->setVisible(leftPaletteVisible);
-                mRightPalette->setVisible(rightPaletteVisible);
-                mLeftPalette->assignParent(0);
-                mRightPalette->assignParent(0);
-                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
-                {
-
-                    if(mKeyboardPalette->m_isVisible)
-                    {
-                        mKeyboardPalette->hide();
-                        mKeyboardPalette->setParent(0);
-                        mKeyboardPalette->show();
-                    }
-                    else
-                        mKeyboardPalette->setParent(0);
-                }
-            }
-            break;
-    }
-
-    if( !isInit )
-        UBApplication::boardController->notifyPageChanged();
-
-    emit signal_changeMode(newMode);
-}
-
-void UBBoardPaletteManager::addItem(const QPixmap& pPixmap, const QPointF& pos,  qreal scaleFactor, const QUrl& sourceUrl)
-{
-    mItemUrl = sourceUrl;
-    mPixmap = pPixmap;
-    mPos = pos;
-    mScaleFactor = scaleFactor;
-
-    mAddItemPalette->show();
-    mAddItemPalette->adjustSizeAndPosition();
-
-    mAddItemPalette->move((mContainer->width() - mAddItemPalette->width()) / 2,
-        (mContainer->height() - mAddItemPalette->height()) / 5);
-}
-
-
-void UBBoardPaletteManager::addItemToCurrentPage()
-{
-    UBApplication::applicationController->showBoard();
-    mAddItemPalette->hide();
-    if(mPixmap.isNull())
-        UBApplication::boardController->downloadURL(mItemUrl);
-    else
-    {
-        UBGraphicsPixmapItem* item = UBApplication::boardController->activeScene()->addPixmap(mPixmap, NULL, mPos, mScaleFactor);
-
-        item->setSourceUrl(mItemUrl);
-        item->setSelected(true);
-
-        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-    }
-}
-
-
-void UBBoardPaletteManager::addItemToNewPage()
-{
-    UBApplication::boardController->addScene();
-    addItemToCurrentPage();
-}
-
-
-void UBBoardPaletteManager::addItemToLibrary()
-{
-    if(mPixmap.isNull())
-    {
-       mPixmap = QPixmap(mItemUrl.toLocalFile());
-    }
-
-    if(!mPixmap.isNull())
-    {
-        if(mScaleFactor != 1.)
-        {
-             mPixmap = mPixmap.scaled(mScaleFactor * mPixmap.width(), mScaleFactor* mPixmap.height()
-                     , Qt::KeepAspectRatio, Qt::SmoothTransformation);
-        }
-        QImage image = mPixmap.toImage();
-
-#ifdef USE_WEB_WIDGET
-        mpLibWidget->libNavigator()->libraryWidget()->libraryController()->importImageOnLibrary(image);
-#else
-        QDateTime now = QDateTime::currentDateTime();
-        QString capturedName  = tr("CapturedImage") + "-" + now.toString("dd-MM-yyyy hh-mm-ss") + ".png";
-        mpFeaturesWidget->importImage(image, capturedName);
-#endif
-
-    }
-    else
-    {
-        UBApplication::showMessage(tr("Error Adding Image to Library"));
-    }
-
-    mAddItemPalette->hide();
-}
-
-void UBBoardPaletteManager::zoomButtonPressed()
-{
-    mZoomButtonPressedTime = QTime::currentTime();
-
-    mPendingZoomButtonPressed = true;
-    QTimer::singleShot(1000, this, SLOT(zoomButtonReleased()));
-}
-
-
-void UBBoardPaletteManager::zoomButtonReleased()
-{
-    if (mPendingZoomButtonPressed)
-    {
-        if(mZoomButtonPressedTime.msecsTo(QTime::currentTime()) > 900)
-        {
-            mBoardControler->zoomRestore();
-        }
-
-        mPendingZoomButtonPressed = false;
-    }
-}
-
-void UBBoardPaletteManager::panButtonPressed()
-{
-    mPanButtonPressedTime = QTime::currentTime();
-
-    mPendingPanButtonPressed = true;
-    QTimer::singleShot(1000, this, SLOT(panButtonReleased()));
-}
-
-
-void UBBoardPaletteManager::panButtonReleased()
-{
-    if (mPendingPanButtonPressed)
-    {
-        if(mPanButtonPressedTime.msecsTo(QTime::currentTime()) > 900)
-        {
-            mBoardControler->centerRestore();
-        }
-
-        mPendingPanButtonPressed = false;
-    }
-}
-
-void UBBoardPaletteManager::showVirtualKeyboard(bool show)
-{
-    if (mKeyboardPalette)
-        mKeyboardPalette->setVisible(show);
-}
-
-void UBBoardPaletteManager::changeStylusPaletteOrientation(QVariant var)
-{
-    bool bVertical = var.toBool();
-    bool bVisible = mStylusPalette->isVisible();
-
-    // Clean the old palette
-    if(NULL != mStylusPalette)
-    {
-        delete mStylusPalette;
-        mStylusPalette = NULL;
-    }
-
-    // Create the new palette
-    if(bVertical)
-    {
-        mStylusPalette = new UBStylusPalette(mContainer, Qt::Vertical);
-    }
-    else
-    {
-        mStylusPalette = new UBStylusPalette(mContainer, Qt::Horizontal);
-    }
-
-    connect(mStylusPalette, SIGNAL(stylusToolDoubleClicked(int)), UBApplication::boardController, SLOT(stylusToolDoubleClicked(int)));
-    mStylusPalette->setVisible(bVisible); // always show stylus palette at startup
-}
-
-
-void UBBoardPaletteManager::connectToDocumentController()
-{
-    emit connectToDocController();
-}
-
-void UBBoardPaletteManager::refreshPalettes()
-{
-    mRightPalette->update();
-    mLeftPalette->update();
-}
-
-void UBBoardPaletteManager::startDownloads()
-{
-    if(!mDownloadInProgress)
-    {
-        mDownloadInProgress = true;
-        mpDownloadWidget->setVisibleState(true);
-        mRightPalette->addTab(mpDownloadWidget);
-    }
-}
-
-void UBBoardPaletteManager::stopDownloads()
-{
-    if(mDownloadInProgress)
-    {
-        mDownloadInProgress = false;
-        mpDownloadWidget->setVisibleState(false);
-        mRightPalette->removeTab(mpDownloadWidget);
-    }
-}
+
+
+
+#include "UBBoardPaletteManager.h"
+
+#include "frameworks/UBPlatformUtils.h"
+#include "frameworks/UBFileSystemUtils.h"
+
+#include "core/UBApplication.h"
+#include "core/UBApplicationController.h"
+#include "core/UBSettings.h"
+#include "core/UBSetting.h"
+#include "core/UBDisplayManager.h"
+
+#include "gui/UBMainWindow.h"
+#include "gui/UBStylusPalette.h"
+#include "gui/UBKeyboardPalette.h"
+#include "gui/UBToolWidget.h"
+#include "gui/UBZoomPalette.h"
+#include "gui/UBWebToolsPalette.h"
+#include "gui/UBActionPalette.h"
+#include "gui/UBFavoriteToolPalette.h"
+#include "gui/UBDockTeacherGuideWidget.h"
+#include "gui/UBStartupHintsPalette.h"
+#include "gui/UBCreateLinkPalette.h"
+
+
+#include "web/UBWebPage.h"
+#include "web/UBWebController.h"
+#include "web/browser/WBBrowserWindow.h"
+#include "web/browser/WBTabWidget.h"
+#include "web/browser/WBWebView.h"
+
+#include "desktop/UBDesktopAnnotationController.h"
+
+
+#include "network/UBNetworkAccessManager.h"
+#include "network/UBServerXMLHttpRequest.h"
+
+#include "domain/UBGraphicsScene.h"
+#include "domain/UBGraphicsPixmapItem.h"
+
+#include "document/UBDocumentProxy.h"
+#include "podcast/UBPodcastController.h"
+#include "board/UBDrawingController.h"
+
+#include "tools/UBToolsManager.h"
+
+#include "UBBoardController.h"
+
+#include "document/UBDocumentController.h"
+
+#include "core/memcheck.h"
+
+UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardController* pBoardController)
+    : QObject(container)
+    , mKeyboardPalette(0)
+    , mWebToolsCurrentPalette(0)
+    , mContainer(container)
+    , mBoardControler(pBoardController)
+    , mStylusPalette(0)
+    , mZoomPalette(0)
+    , mTipPalette(0)
+    , mLinkPalette(0)
+    , mLeftPalette(NULL)
+    , mRightPalette(NULL)
+    , mBackgroundsPalette(0)
+    , mToolsPalette(0)
+    , mAddItemPalette(0)
+    , mErasePalette(NULL)
+    , mPagePalette(NULL)
+    , mPendingPageButtonPressed(false)
+    , mPendingZoomButtonPressed(false)
+    , mPendingPanButtonPressed(false)
+    , mPendingEraseButtonPressed(false)
+    , mpPageNavigWidget(NULL)
+    , mpCachePropWidget(NULL)
+    , mpDownloadWidget(NULL)
+    , mpTeacherGuideWidget(NULL)
+    , mDownloadInProgress(false)
+{
+    setupPalettes();
+    connectPalettes();
+}
+
+
+UBBoardPaletteManager::~UBBoardPaletteManager()
+{
+
+// mAddedItemPalette is delete automatically because of is parent
+// that changes depending on the mode
+
+// mMainWindow->centralWidget is the parent of mStylusPalette
+// do not delete this here.
+}
+
+void UBBoardPaletteManager::initPalettesPosAtStartup()
+{
+    mStylusPalette->initPosition();
+}
+
+void UBBoardPaletteManager::setupLayout()
+{
+
+}
+
+/**
+ * \brief Set up the dock palette widgets
+ */
+void UBBoardPaletteManager::setupDockPaletteWidgets()
+{
+
+    //------------------------------------------------//
+    // Create the widgets for the dock palettes
+
+    mpCachePropWidget = new UBCachePropertiesWidget();
+
+    mpDownloadWidget = new UBDockDownloadWidget();
+
+    // Add the dock palettes
+    mLeftPalette = new UBLeftPalette(mContainer);
+
+    // LEFT palette widgets
+    mpPageNavigWidget = new UBPageNavigationWidget();
+    mLeftPalette->registerWidget(mpPageNavigWidget);
+    mLeftPalette->addTab(mpPageNavigWidget);
+
+    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool() || UBSettings::settings()->teacherGuideLessonPagesActivated->get().toBool()){
+        mpTeacherGuideWidget = new UBDockTeacherGuideWidget();
+        mLeftPalette->registerWidget(mpTeacherGuideWidget);
+        mLeftPalette->addTab(mpTeacherGuideWidget);
+    }
+
+    mLeftPalette->connectSignals();
+
+    mRightPalette = new UBRightPalette(mContainer);
+    // RIGHT palette widgets
+    mpFeaturesWidget = new UBFeaturesWidget();
+    mRightPalette->registerWidget(mpFeaturesWidget);
+    mRightPalette->addTab(mpFeaturesWidget);
+
+
+    // The cache widget will be visible only if a cache is put on the page
+    mRightPalette->registerWidget(mpCachePropWidget);
+
+    //  The download widget will be part of the right palette but
+    //  will become visible only when the first download starts
+    mRightPalette->registerWidget(mpDownloadWidget);
+    mRightPalette->connectSignals();
+    changeMode(eUBDockPaletteWidget_BOARD, true);
+
+    // Hide the tabs that must be hidden
+    mRightPalette->removeTab(mpDownloadWidget);
+    mRightPalette->removeTab(mpCachePropWidget);
+
+}
+
+void UBBoardPaletteManager::slot_changeMainMode(UBApplicationController::MainMode mainMode)
+{
+//    Board = 0, Internet, Document, Tutorial, ParaschoolEditor, WebDocument
+
+    switch( mainMode )
+    {
+        case UBApplicationController::Board:
+            {
+                // call changeMode only when switch NOT from desktop mode
+                if(!UBApplication::applicationController->isShowingDesktop())
+                    changeMode(eUBDockPaletteWidget_BOARD);
+            }
+            break;
+
+        case UBApplicationController::Tutorial:
+            {
+                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
+                    mKeyboardPalette->hide();
+            }
+            break;
+
+        case UBApplicationController::Internet:
+            changeMode(eUBDockPaletteWidget_WEB);
+            break;
+
+        case UBApplicationController::Document:
+            changeMode(eUBDockPaletteWidget_DOCUMENT);
+            break;
+
+        default:
+            {
+                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
+                    mKeyboardPalette->hide();
+            }
+            break;
+    }
+}
+
+void UBBoardPaletteManager::slot_changeDesktopMode(bool isDesktop)
+{
+    UBApplicationController::MainMode currMode = UBApplication::applicationController->displayMode();
+    if(!isDesktop)
+    {
+        switch( currMode )
+        {
+            case UBApplicationController::Board:
+                changeMode(eUBDockPaletteWidget_BOARD);
+                break;
+
+            default:
+                break;
+        }
+    }
+    else
+        changeMode(eUBDockPaletteWidget_DESKTOP);
+}
+
+void UBBoardPaletteManager::setupPalettes()
+{
+
+    if (UBPlatformUtils::hasVirtualKeyboard())
+    {
+        mKeyboardPalette = new UBKeyboardPalette(0);
+#ifndef Q_WS_WIN
+        connect(mKeyboardPalette, SIGNAL(closed()), mKeyboardPalette, SLOT(onDeactivated()));
+#endif
+    }
+
+
+    setupDockPaletteWidgets();
+
+
+    // Add the other palettes
+    mStylusPalette = new UBStylusPalette(mContainer, UBSettings::settings()->appToolBarOrientationVertical->get().toBool() ? Qt::Vertical : Qt::Horizontal);
+    connect(mStylusPalette, SIGNAL(stylusToolDoubleClicked(int)), UBApplication::boardController, SLOT(stylusToolDoubleClicked(int)));
+    mStylusPalette->show(); // always show stylus palette at startup
+
+    mZoomPalette = new UBZoomPalette(mContainer);
+    mStylusPalette->stackUnder(mZoomPalette);
+
+    mTipPalette = new UBStartupHintsPalette(mContainer);
+
+    QList<QAction*> backgroundsActions;
+
+    backgroundsActions << UBApplication::mainWindow->actionPlainLightBackground;
+    backgroundsActions << UBApplication::mainWindow->actionCrossedLightBackground;
+    backgroundsActions << UBApplication::mainWindow->actionPlainDarkBackground;
+    backgroundsActions << UBApplication::mainWindow->actionCrossedDarkBackground;
+
+    mBackgroundsPalette = new UBActionPalette(backgroundsActions, Qt::Horizontal , mContainer);
+    mBackgroundsPalette->setButtonIconSize(QSize(128, 128));
+    mBackgroundsPalette->groupActions();
+    mBackgroundsPalette->setClosable(true);
+    mBackgroundsPalette->setAutoClose(true);
+    mBackgroundsPalette->adjustSizeAndPosition();
+    mBackgroundsPalette->hide();
+
+    QList<QAction*> addItemActions;
+
+    addItemActions << UBApplication::mainWindow->actionAddItemToCurrentPage;
+    addItemActions << UBApplication::mainWindow->actionAddItemToNewPage;
+    addItemActions << UBApplication::mainWindow->actionAddItemToLibrary;
+
+    mAddItemPalette = new UBActionPalette(addItemActions, Qt::Horizontal, mContainer);
+    mAddItemPalette->setButtonIconSize(QSize(128, 128));
+    mAddItemPalette->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+    mAddItemPalette->groupActions();
+    mAddItemPalette->setClosable(true);
+    mAddItemPalette->adjustSizeAndPosition();
+    mAddItemPalette->hide();
+
+    QList<QAction*> eraseActions;
+
+    eraseActions << UBApplication::mainWindow->actionEraseAnnotations;
+    eraseActions << UBApplication::mainWindow->actionEraseItems;
+    eraseActions << UBApplication::mainWindow->actionClearPage;
+    eraseActions << UBApplication::mainWindow->actionEraseBackground;
+
+    mErasePalette = new UBActionPalette(eraseActions, Qt::Horizontal , mContainer);
+    mErasePalette->setButtonIconSize(QSize(128, 128));
+    mErasePalette->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+    mErasePalette->groupActions();
+    mErasePalette->setClosable(true);
+    mErasePalette->adjustSizeAndPosition();
+    mErasePalette->hide();
+
+    QList<QAction*> pageActions;
+
+    pageActions << UBApplication::mainWindow->actionNewPage;
+    pageActions << UBApplication::mainWindow->actionDuplicatePage;
+    pageActions << UBApplication::mainWindow->actionImportPage;
+
+    mPagePalette = new UBActionPalette(pageActions, Qt::Horizontal , mContainer);
+    mPagePalette->setButtonIconSize(QSize(128, 128));
+    mPagePalette->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+    mPagePalette->groupActions();
+    mPagePalette->setClosable(true);
+    mPagePalette->adjustSizeAndPosition();
+    mPagePalette->hide();
+
+    connect(UBSettings::settings()->appToolBarOrientationVertical, SIGNAL(changed(QVariant)), this, SLOT(changeStylusPaletteOrientation(QVariant)));
+}
+
+void UBBoardPaletteManager::pagePaletteButtonPressed()
+{
+    mPageButtonPressedTime = QTime::currentTime();
+
+    mPendingPageButtonPressed = true;
+    QTimer::singleShot(1000, this, SLOT(pagePaletteButtonReleased()));
+}
+
+
+void UBBoardPaletteManager::pagePaletteButtonReleased()
+{
+    if (mPendingPageButtonPressed)
+    {
+        if( mPageButtonPressedTime.msecsTo(QTime::currentTime()) > 900)
+        {
+            // The palette is reinstanciated because the duplication depends on the current scene
+            delete(mPagePalette);
+            mPagePalette = 0;
+            QList<QAction*>pageActions;
+            pageActions << UBApplication::mainWindow->actionNewPage;
+            UBBoardController* boardController = UBApplication::boardController;
+            if(UBApplication::documentController->pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(boardController->activeSceneIndex()))){
+                pageActions << UBApplication::mainWindow->actionDuplicatePage;
+            }
+            pageActions << UBApplication::mainWindow->actionImportPage;
+
+            mPagePalette = new UBActionPalette(pageActions, Qt::Horizontal , mContainer);
+            mPagePalette->setButtonIconSize(QSize(128, 128));
+            mPagePalette->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+            mPagePalette->groupActions();
+            mPagePalette->setClosable(true);
+
+            // As we recreate the pagePalette every time, we must reconnect the slots
+            connect(UBApplication::mainWindow->actionNewPage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
+            connect(UBApplication::mainWindow->actionDuplicatePage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
+            connect(UBApplication::mainWindow->actionImportPage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
+            connect(mPagePalette, SIGNAL(closed()), this, SLOT(pagePaletteClosed()));
+
+            togglePagePalette(true);
+        }
+        else
+        {
+            UBApplication::mainWindow->actionNewPage->trigger();
+        }
+
+        mPendingPageButtonPressed = false;
+    }
+}
+
+void UBBoardPaletteManager::erasePaletteButtonPressed()
+{
+    mEraseButtonPressedTime = QTime::currentTime();
+
+    mPendingEraseButtonPressed = true;
+    QTimer::singleShot(1000, this, SLOT(erasePaletteButtonReleased()));
+}
+
+
+void UBBoardPaletteManager::erasePaletteButtonReleased()
+{
+    if (mPendingEraseButtonPressed)
+    {
+        if( mEraseButtonPressedTime.msecsTo(QTime::currentTime()) > 900)
+        {
+            toggleErasePalette(true);
+        }
+        else
+        {
+            UBApplication::mainWindow->actionClearPage->trigger();
+        }
+
+        mPendingEraseButtonPressed = false;
+    }
+}
+
+
+
+void UBBoardPaletteManager::linkClicked(const QUrl& url)
+{
+      UBApplication::applicationController->showInternet();
+      UBApplication::webController->loadUrl(url);
+}
+
+
+void UBBoardPaletteManager::purchaseLinkActivated(const QString& link)
+{
+    UBApplication::applicationController->showInternet();
+    UBApplication::webController->loadUrl(QUrl(link));
+}
+
+void UBBoardPaletteManager::connectPalettes()
+{
+    connect(UBApplication::mainWindow->actionStylus, SIGNAL(toggled(bool)), this, SLOT(toggleStylusPalette(bool)));
+
+    foreach(QWidget *widget, UBApplication::mainWindow->actionZoomIn->associatedWidgets())
+    {
+        QAbstractButton *button = qobject_cast<QAbstractButton*>(widget);
+        if (button)
+        {
+            connect(button, SIGNAL(pressed()), this, SLOT(zoomButtonPressed()));
+            connect(button, SIGNAL(released()), this, SLOT(zoomButtonReleased()));
+        }
+    }
+
+    foreach(QWidget *widget, UBApplication::mainWindow->actionZoomOut->associatedWidgets())
+    {
+        QAbstractButton *button = qobject_cast<QAbstractButton*>(widget);
+        if (button)
+        {
+            connect(button, SIGNAL(pressed()), this, SLOT(zoomButtonPressed()));
+            connect(button, SIGNAL(released()), this, SLOT(zoomButtonReleased()));
+        }
+    }
+
+    foreach(QWidget *widget, UBApplication::mainWindow->actionHand->associatedWidgets())
+    {
+        QAbstractButton *button = qobject_cast<QAbstractButton*>(widget);
+        if (button)
+        {
+            connect(button, SIGNAL(pressed()), this, SLOT(panButtonPressed()));
+            connect(button, SIGNAL(released()), this, SLOT(panButtonReleased()));
+        }
+    }
+
+    connect(UBApplication::mainWindow->actionBackgrounds, SIGNAL(toggled(bool)), this, SLOT(toggleBackgroundPalette(bool)));
+    connect(mBackgroundsPalette, SIGNAL(closed()), this, SLOT(backgroundPaletteClosed()));
+
+    connect(UBApplication::mainWindow->actionPlainLightBackground, SIGNAL(triggered()), this, SLOT(changeBackground()));
+    connect(UBApplication::mainWindow->actionCrossedLightBackground, SIGNAL(triggered()), this, SLOT(changeBackground()));
+    connect(UBApplication::mainWindow->actionPlainDarkBackground, SIGNAL(triggered()), this, SLOT(changeBackground()));
+    connect(UBApplication::mainWindow->actionCrossedDarkBackground, SIGNAL(triggered()), this, SLOT(changeBackground()));
+    connect(UBApplication::mainWindow->actionPodcast, SIGNAL(triggered(bool)), this, SLOT(tooglePodcastPalette(bool)));
+
+    connect(UBApplication::mainWindow->actionAddItemToCurrentPage, SIGNAL(triggered()), this, SLOT(addItemToCurrentPage()));
+    connect(UBApplication::mainWindow->actionAddItemToNewPage, SIGNAL(triggered()), this, SLOT(addItemToNewPage()));
+    connect(UBApplication::mainWindow->actionAddItemToLibrary, SIGNAL(triggered()), this, SLOT(addItemToLibrary()));
+
+    connect(UBApplication::mainWindow->actionEraseItems, SIGNAL(triggered()), mErasePalette, SLOT(close()));
+    connect(UBApplication::mainWindow->actionEraseAnnotations, SIGNAL(triggered()), mErasePalette, SLOT(close()));
+    connect(UBApplication::mainWindow->actionClearPage, SIGNAL(triggered()), mErasePalette, SLOT(close()));
+    connect(UBApplication::mainWindow->actionEraseBackground,SIGNAL(triggered()),mErasePalette,SLOT(close()));
+    connect(mErasePalette, SIGNAL(closed()), this, SLOT(erasePaletteClosed()));
+
+    foreach(QWidget *widget, UBApplication::mainWindow->actionErase->associatedWidgets())
+    {
+        QAbstractButton *button = qobject_cast<QAbstractButton*>(widget);
+        if (button)
+        {
+            connect(button, SIGNAL(pressed()), this, SLOT(erasePaletteButtonPressed()));
+            connect(button, SIGNAL(released()), this, SLOT(erasePaletteButtonReleased()));
+        }
+    }
+
+    connect(UBApplication::mainWindow->actionNewPage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
+    connect(UBApplication::mainWindow->actionDuplicatePage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
+    connect(UBApplication::mainWindow->actionImportPage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
+    connect(mPagePalette, SIGNAL(closed()), this, SLOT(pagePaletteClosed()));
+
+    foreach(QWidget *widget, UBApplication::mainWindow->actionPages->associatedWidgets())
+    {
+        QAbstractButton *button = qobject_cast<QAbstractButton*>(widget);
+        if (button)
+        {
+            connect(button, SIGNAL(pressed()), this, SLOT(pagePaletteButtonPressed()));
+            connect(button, SIGNAL(released()), this, SLOT(pagePaletteButtonReleased()));
+        }
+    }
+
+}
+
+
+bool isFirstResized = true;
+void UBBoardPaletteManager::containerResized()
+{
+    int innerMargin = UBSettings::boardMargin;
+
+    int userLeft = innerMargin;
+    int userWidth = mContainer->width() - (2 * innerMargin);
+    int userTop = innerMargin;
+    int userHeight = mContainer->height() - (2 * innerMargin);
+
+    if(mStylusPalette)
+    {
+        //mStylusPalette->move(userLeft, userTop);
+        mStylusPalette->adjustSizeAndPosition(true,false);
+        mStylusPalette->initPosition();
+    }
+
+    if(mZoomPalette)
+    {
+        mZoomPalette->move(userLeft + userWidth - mZoomPalette->width()
+                , userTop + userHeight /*- mPageNumberPalette->height()*/ - innerMargin - mZoomPalette->height());
+        mZoomPalette->adjustSizeAndPosition(true,false);
+    }
+
+    if (isFirstResized && mKeyboardPalette && mKeyboardPalette->parent() == UBApplication::boardController->controlContainer())
+    {
+        isFirstResized = false;
+        mKeyboardPalette->move(userLeft + (userWidth - mKeyboardPalette->width())/2,
+                               userTop + (userHeight - mKeyboardPalette->height())/2);
+        mKeyboardPalette->adjustSizeAndPosition();
+    }
+
+    if(mLeftPalette)
+    {
+        mLeftPalette->resize(mLeftPalette->width()-1, mContainer->height());
+        mLeftPalette->resize(mLeftPalette->width(), mContainer->height());
+    }
+
+    if(mRightPalette)
+    {
+        mRightPalette->resize(mRightPalette->width()-1, mContainer->height());
+        mRightPalette->resize(mRightPalette->width(), mContainer->height());
+    }
+}
+
+
+void UBBoardPaletteManager::changeBackground()
+{
+    if (UBApplication::mainWindow->actionCrossedLightBackground->isChecked())
+        UBApplication::boardController->changeBackground(false, true);
+    else if (UBApplication::mainWindow->actionPlainDarkBackground->isChecked())
+        UBApplication::boardController->changeBackground(true, false);
+    else if (UBApplication::mainWindow->actionCrossedDarkBackground->isChecked())
+        UBApplication::boardController->changeBackground(true, true);
+    else
+        UBApplication::boardController->changeBackground(false, false);
+
+    UBApplication::mainWindow->actionBackgrounds->setChecked(false);
+}
+
+
+void UBBoardPaletteManager::activeSceneChanged()
+{
+    UBGraphicsScene *activeScene =  UBApplication::boardController->activeScene();
+    int pageIndex = UBApplication::boardController->activeSceneIndex();
+
+    if (mStylusPalette)
+        connect(mStylusPalette, SIGNAL(mouseEntered()), activeScene, SLOT(hideEraser()));
+
+    if (mpPageNavigWidget)
+    {
+        mpPageNavigWidget->setPageNumber(UBDocumentContainer::pageFromSceneIndex(pageIndex), activeScene->document()->pageCount());
+    }
+
+    if (mZoomPalette)
+        connect(mZoomPalette, SIGNAL(mouseEntered()), activeScene, SLOT(hideEraser()));
+
+    if (mBackgroundsPalette)
+        connect(mBackgroundsPalette, SIGNAL(mouseEntered()), activeScene, SLOT(hideEraser()));
+}
+
+
+void UBBoardPaletteManager::toggleBackgroundPalette(bool checked)
+{
+    mBackgroundsPalette->setVisible(checked);
+
+    if (checked)
+    {
+        UBApplication::mainWindow->actionErase->setChecked(false);
+        UBApplication::mainWindow->actionNewPage->setChecked(false);
+
+        mBackgroundsPalette->adjustSizeAndPosition();
+    }
+}
+
+
+void UBBoardPaletteManager::backgroundPaletteClosed()
+{
+    UBApplication::mainWindow->actionBackgrounds->setChecked(false);
+}
+
+
+void UBBoardPaletteManager::toggleStylusPalette(bool checked)
+{
+    mStylusPalette->setVisible(checked);
+}
+
+
+void UBBoardPaletteManager::toggleErasePalette(bool checked)
+{
+    mErasePalette->setVisible(checked);
+    if (checked)
+    {
+        UBApplication::mainWindow->actionBackgrounds->setChecked(false);
+        UBApplication::mainWindow->actionNewPage->setChecked(false);
+
+        mErasePalette->adjustSizeAndPosition();
+    }
+}
+
+
+void UBBoardPaletteManager::erasePaletteClosed()
+{
+    UBApplication::mainWindow->actionErase->setChecked(false);
+}
+
+
+void UBBoardPaletteManager::togglePagePalette(bool checked)
+{
+    mPagePalette->setVisible(checked);
+    if (checked)
+    {
+        UBApplication::mainWindow->actionBackgrounds->setChecked(false);
+        UBApplication::mainWindow->actionErase->setChecked(false);
+
+        mPagePalette->adjustSizeAndPosition();
+    }
+}
+
+
+void UBBoardPaletteManager::pagePaletteClosed()
+{
+    UBApplication::mainWindow->actionPages->setChecked(false);
+}
+
+
+void UBBoardPaletteManager::tooglePodcastPalette(bool checked)
+{
+    UBPodcastController::instance()->toggleRecordingPalette(checked);
+}
+
+
+void UBBoardPaletteManager::addItem(const QUrl& pUrl)
+{
+    mItemUrl = pUrl;
+    mPixmap = QPixmap();
+    mPos = QPointF(0, 0);
+    mScaleFactor = 1.;
+
+    mAddItemPalette->show();
+    mAddItemPalette->adjustSizeAndPosition();
+}
+
+void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool isInit)
+{
+    bool rightPaletteVisible = mRightPalette->switchMode(newMode);
+    bool leftPaletteVisible = mLeftPalette->switchMode(newMode);
+
+    if (newMode != eUBDockPaletteWidget_BOARD)
+    {
+        if (mBackgroundsPalette)
+            mBackgroundsPalette->savePos();
+        if (mKeyboardPalette)
+            mKeyboardPalette->savePos();
+        if (mZoomPalette)
+            mZoomPalette->savePos();
+        if (mPagePalette)
+            mPagePalette->savePos();
+        if (mErasePalette)
+            mErasePalette->savePos();
+        if (mAddItemPalette)
+            mAddItemPalette->savePos();
+    }
+    else
+    {
+        if (mBackgroundsPalette)
+            mBackgroundsPalette->restorePos();
+        if (mKeyboardPalette)
+            mKeyboardPalette->restorePos();
+        if (mZoomPalette)
+            mZoomPalette->restorePos();
+        if (mPagePalette)
+            mPagePalette->restorePos();
+        if (mErasePalette)
+            mErasePalette->restorePos();
+        if (mAddItemPalette)
+            mAddItemPalette->restorePos();
+    }
+
+
+    switch( newMode )
+    {
+        case eUBDockPaletteWidget_BOARD:
+            {
+                // On Application start up the mAddItemPalette isn't initialized yet
+                if(mAddItemPalette){
+                    mAddItemPalette->setParent(UBApplication::boardController->controlContainer());
+                }
+                mLeftPalette->assignParent(mContainer);
+                mRightPalette->assignParent(mContainer);
+                mRightPalette->stackUnder(mStylusPalette);
+                mLeftPalette->stackUnder(mStylusPalette);
+                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
+                {
+
+                    if(mKeyboardPalette->m_isVisible)
+                    {
+                        mKeyboardPalette->hide();
+                        mKeyboardPalette->setParent(UBApplication::boardController->controlContainer());
+                        mKeyboardPalette->show();
+                    }
+                    else
+                        mKeyboardPalette->setParent(UBApplication::boardController->controlContainer());
+                }
+
+                mLeftPalette->setVisible(leftPaletteVisible);
+                mRightPalette->setVisible(rightPaletteVisible);
+#ifdef Q_WS_WIN
+                if (rightPaletteVisible)
+                    mRightPalette->setAdditionalVOffset(0);
+#endif
+
+                if( !isInit )
+                    containerResized();
+                if (mWebToolsCurrentPalette)
+                    mWebToolsCurrentPalette->hide();
+            }
+            break;
+
+        case eUBDockPaletteWidget_DESKTOP:
+            {
+                mAddItemPalette->setParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
+                mLeftPalette->assignParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
+                mRightPalette->assignParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
+                mStylusPalette->raise();
+
+                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
+                {
+
+                    if(mKeyboardPalette->m_isVisible)
+                    {
+                        mKeyboardPalette->hide();
+#ifndef Q_WS_X11
+                        mKeyboardPalette->setParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
+#else
+                        mKeyboardPalette->setParent(0);
+#endif
+#ifdef Q_WS_MAC
+                        mKeyboardPalette->setWindowFlags(Qt::Dialog | Qt::Popup | Qt::FramelessWindowHint);
+#endif
+                        mKeyboardPalette->show();
+                    }
+                    else
+// In linux keyboard in desktop mode have to allways be with null parent
+#ifdef Q_WS_X11
+                        mKeyboardPalette->setParent(0);
+#else
+                        mKeyboardPalette->setParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
+#endif //Q_WS_X11
+#ifdef Q_WS_MAC
+                        mKeyboardPalette->setWindowFlags(Qt::Dialog | Qt::Popup | Qt::FramelessWindowHint);
+#endif
+
+                }
+
+                mLeftPalette->setVisible(leftPaletteVisible);
+                mRightPalette->setVisible(rightPaletteVisible);
+#ifdef Q_WS_WIN
+                if (rightPaletteVisible)
+                {
+                    if (UBSettings::settings()->appToolBarPositionedAtTop->get().toBool())
+                        mRightPalette->setAdditionalVOffset(30);
+                    else
+                    {
+                        QDesktopWidget *desktop = QApplication::desktop();
+                        int taskBarOffset = desktop->screenGeometry(mRightPalette).height() - desktop->availableGeometry(mRightPalette).height();
+                        mRightPalette->setAdditionalVOffset(-taskBarOffset);
+                    }
+                }
+#endif
+
+                if(!isInit)
+                    UBApplication::applicationController->uninotesController()->TransparentWidgetResized();
+
+                if (mWebToolsCurrentPalette)
+                    mWebToolsCurrentPalette->hide();
+            }
+            break;
+
+        case eUBDockPaletteWidget_WEB:
+            {
+                mAddItemPalette->setParent(UBApplication::mainWindow);
+
+                mRightPalette->assignParent(UBApplication::webController->GetCurrentWebBrowser());
+                mRightPalette->setVisible(rightPaletteVisible);
+
+                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
+                {
+                    if(mKeyboardPalette->m_isVisible)
+                    {
+                        mKeyboardPalette->hide();
+                        mKeyboardPalette->setParent(UBApplication::mainWindow);
+                        mKeyboardPalette->show();
+                    }
+                    else
+                        mKeyboardPalette->setParent(UBApplication::mainWindow);
+                }
+
+            }
+            break;
+
+        case eUBDockPaletteWidget_DOCUMENT:
+            {
+                mLeftPalette->setVisible(leftPaletteVisible);
+                mRightPalette->setVisible(rightPaletteVisible);
+                mLeftPalette->assignParent(UBApplication::documentController->controlView());
+                mRightPalette->assignParent(UBApplication::documentController->controlView());
+                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
+                {
+
+                    if(mKeyboardPalette->m_isVisible)
+                    {
+                        mKeyboardPalette->hide();
+                        mKeyboardPalette->setParent(UBApplication::documentController->controlView());
+                        mKeyboardPalette->show();
+                    }
+                    else
+                        mKeyboardPalette->setParent(UBApplication::documentController->controlView());
+                }
+                if (mWebToolsCurrentPalette)
+                    mWebToolsCurrentPalette->hide();
+            }
+            break;
+
+        default:
+            {
+                mLeftPalette->setVisible(leftPaletteVisible);
+                mRightPalette->setVisible(rightPaletteVisible);
+                mLeftPalette->assignParent(0);
+                mRightPalette->assignParent(0);
+                if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
+                {
+
+                    if(mKeyboardPalette->m_isVisible)
+                    {
+                        mKeyboardPalette->hide();
+                        mKeyboardPalette->setParent(0);
+                        mKeyboardPalette->show();
+                    }
+                    else
+                        mKeyboardPalette->setParent(0);
+                }
+            }
+            break;
+    }
+
+    if( !isInit )
+        UBApplication::boardController->notifyPageChanged();
+}
+
+void UBBoardPaletteManager::addItem(const QPixmap& pPixmap, const QPointF& pos,  qreal scaleFactor, const QUrl& sourceUrl)
+{
+    mItemUrl = sourceUrl;
+    mPixmap = pPixmap;
+    mPos = pos;
+    mScaleFactor = scaleFactor;
+
+    mAddItemPalette->show();
+    mAddItemPalette->adjustSizeAndPosition();
+}
+
+
+void UBBoardPaletteManager::addItemToCurrentPage()
+{
+    UBApplication::applicationController->showBoard();
+    mAddItemPalette->hide();
+    if(mPixmap.isNull())
+        UBApplication::boardController->downloadURL(mItemUrl);
+    else
+    {
+        UBGraphicsPixmapItem* item = UBApplication::boardController->activeScene()->addPixmap(mPixmap, NULL, mPos, mScaleFactor);
+
+        item->setSourceUrl(mItemUrl);
+        item->setSelected(true);
+
+        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+    }
+}
+
+
+void UBBoardPaletteManager::addItemToNewPage()
+{
+    UBApplication::boardController->addScene();
+    addItemToCurrentPage();
+}
+
+
+void UBBoardPaletteManager::addItemToLibrary()
+{
+    if(mPixmap.isNull())
+    {
+       mPixmap = QPixmap(mItemUrl.toLocalFile());
+    }
+
+    if(!mPixmap.isNull())
+    {
+        if(mScaleFactor != 1.)
+        {
+             mPixmap = mPixmap.scaled(mScaleFactor * mPixmap.width(), mScaleFactor* mPixmap.height()
+                     , Qt::KeepAspectRatio, Qt::SmoothTransformation);
+        }
+        QImage image = mPixmap.toImage();
+
+        QDateTime now = QDateTime::currentDateTime();
+        QString capturedName  = tr("CapturedImage") + "-" + now.toString("dd-MM-yyyy hh-mm-ss") + ".png";
+        mpFeaturesWidget->importImage(image, capturedName);
+    }
+    else
+    {
+        UBApplication::showMessage(tr("Error Adding Image to Library"));
+    }
+
+    mAddItemPalette->hide();
+}
+
+void UBBoardPaletteManager::zoomButtonPressed()
+{
+    mZoomButtonPressedTime = QTime::currentTime();
+
+    mPendingZoomButtonPressed = true;
+    QTimer::singleShot(1000, this, SLOT(zoomButtonReleased()));
+}
+
+
+void UBBoardPaletteManager::zoomButtonReleased()
+{
+    if (mPendingZoomButtonPressed)
+    {
+        if(mZoomButtonPressedTime.msecsTo(QTime::currentTime()) > 900)
+        {
+            mBoardControler->zoomRestore();
+        }
+
+        mPendingZoomButtonPressed = false;
+    }
+}
+
+void UBBoardPaletteManager::panButtonPressed()
+{
+    mPanButtonPressedTime = QTime::currentTime();
+
+    mPendingPanButtonPressed = true;
+    QTimer::singleShot(1000, this, SLOT(panButtonReleased()));
+}
+
+
+void UBBoardPaletteManager::panButtonReleased()
+{
+    if (mPendingPanButtonPressed)
+    {
+        if(mPanButtonPressedTime.msecsTo(QTime::currentTime()) > 900)
+        {
+            mBoardControler->centerRestore();
+        }
+
+        mPendingPanButtonPressed = false;
+    }
+}
+
+void UBBoardPaletteManager::showVirtualKeyboard(bool show)
+{
+    if (mKeyboardPalette)
+        mKeyboardPalette->setVisible(show);
+}
+
+void UBBoardPaletteManager::changeStylusPaletteOrientation(QVariant var)
+{
+    bool bVertical = var.toBool();
+    bool bVisible = mStylusPalette->isVisible();
+
+    // Clean the old palette
+    if(NULL != mStylusPalette)
+    {
+        delete mStylusPalette;
+        mStylusPalette = NULL;
+    }
+
+    // Create the new palette
+    if(bVertical)
+    {
+        mStylusPalette = new UBStylusPalette(mContainer, Qt::Vertical);
+    }
+    else
+    {
+        mStylusPalette = new UBStylusPalette(mContainer, Qt::Horizontal);
+    }
+
+    connect(mStylusPalette, SIGNAL(stylusToolDoubleClicked(int)), UBApplication::boardController, SLOT(stylusToolDoubleClicked(int)));
+    mStylusPalette->setVisible(bVisible); // always show stylus palette at startup
+}
+
+
+void UBBoardPaletteManager::connectToDocumentController()
+{
+    emit connectToDocController();
+}
+
+void UBBoardPaletteManager::refreshPalettes()
+{
+    mRightPalette->update();
+    mLeftPalette->update();
+}
+
+void UBBoardPaletteManager::startDownloads()
+{
+    if(!mDownloadInProgress)
+    {
+        mDownloadInProgress = true;
+        mpDownloadWidget->setVisibleState(true);
+        mRightPalette->addTab(mpDownloadWidget);
+    }
+}
+
+void UBBoardPaletteManager::stopDownloads()
+{
+    if(mDownloadInProgress)
+    {
+        mDownloadInProgress = false;
+        mpDownloadWidget->setVisibleState(false);
+        mRightPalette->removeTab(mpDownloadWidget);
+    }
+}
+
+
+UBCreateLinkPalette* UBBoardPaletteManager::linkPalette()
+{
+    if(mLinkPalette)
+        delete mLinkPalette;
+    mLinkPalette = new UBCreateLinkPalette(mContainer);
+    return mLinkPalette;
+}
+
diff --git a/Sankore-3.1/src/board/UBBoardPaletteManager.h b/Sankore-3.1/src/board/UBBoardPaletteManager.h
index 57d5d29..c6dddbd 100644
--- a/Sankore-3.1/src/board/UBBoardPaletteManager.h
+++ b/Sankore-3.1/src/board/UBBoardPaletteManager.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,177 +18,180 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBBOARDPALETTEMANAGER_H_
-#define UBBOARDPALETTEMANAGER_H_
-
-#include <QtGui>
-#include <QtWebKit>
- 
-#include "gui/UBLeftPalette.h"
-#include "gui/UBRightPalette.h"
-#include "gui/UBPageNavigationWidget.h"
-#include "gui/UBCachePropertiesWidget.h"
-#include "gui/UBDockDownloadWidget.h"
-#include "core/UBApplicationController.h"
-#include "gui/UBFeaturesWidget.h"
-
-
-class UBWebToolsPalette;
-class UBStylusPalette;
-class UBClockPalette;
-class UBPageNumberPalette;
-class UBZoomPalette;
-class UBActionPalette;
-class UBBoardController;
-class UBServerXMLHttpRequest;
-class UBKeyboardPalette;
-class UBMainWindow;
-class UBApplicationController;
-class UBDockTeacherGuideWidget;
-
-// Uncomment this to use old-styles lib paletter
-// #define USE_WEB_WIDGET
-
-
-class UBBoardPaletteManager : public QObject
-{
-    Q_OBJECT
-
-    public:
-        UBBoardPaletteManager(QWidget* container, UBBoardController* controller);
-        virtual ~UBBoardPaletteManager();
-
-        void setupLayout();
-        UBLeftPalette* leftPalette(){return mLeftPalette;}
-        UBRightPalette* rightPalette(){return mRightPalette;}
-        UBStylusPalette* stylusPalette(){return mStylusPalette;}
-        UBActionPalette *addItemPalette() {return mAddItemPalette;}
-        void showVirtualKeyboard(bool show = true);
-        void initPalettesPosAtStartup();
-        void connectToDocumentController();
-        void refreshPalettes();
-
-        UBKeyboardPalette *mKeyboardPalette;
-
-        void setCurrentWebToolsPalette(UBWebToolsPalette *palette) {mWebToolsCurrentPalette = palette;}
-        UBWebToolsPalette* mWebToolsCurrentPalette;
-
-        UBDockTeacherGuideWidget* teacherGuideDockWidget() { return mpTeacherGuideWidget;}
-
-        void processPalettersWidget(UBDockPalette *paletter, eUBDockPaletteWidgetMode mode);
-        void changeMode(eUBDockPaletteWidgetMode newMode, bool isInit = false);
-        void startDownloads();
-        void stopDownloads();
-
-    signals:
-        void connectToDocController();
-        void signal_changeMode(eUBDockPaletteWidgetMode newMode);
-
-    public slots:
-
-        void activeSceneChanged();
-        void containerResized();
-        void addItem(const QUrl& pUrl);
-        void addItem(const QPixmap& pPixmap, const QPointF& p = QPointF(0.0, 0.0), qreal scale = 1.0, const QUrl& sourceUrl = QUrl());
-
-        void slot_changeMainMode(UBApplicationController::MainMode);
-        void slot_changeDesktopMode(bool);
-
-        void toggleErasePalette(bool ckecked);
-
-    private:
-
-        void setupPalettes();
-        void connectPalettes();
-        void positionFreeDisplayPalette();
-        void setupDockPaletteWidgets();
-
-        QWidget* mContainer;
-        UBBoardController *mBoardControler;
-
-        UBStylusPalette *mStylusPalette;
-
-        UBZoomPalette *mZoomPalette;
-
-        /** The left dock palette */
-        UBLeftPalette* mLeftPalette;
-        /** The right dock palette */
-        UBRightPalette* mRightPalette;
-
-        UBActionPalette *mBackgroundsPalette;
-        UBActionPalette *mToolsPalette;
-        UBActionPalette* mAddItemPalette;
-        UBActionPalette* mErasePalette;
-        UBActionPalette* mPagePalette;
-
-        QUrl mItemUrl;
-        QPixmap mPixmap;
-        QPointF mPos;
-        qreal mScaleFactor;
-
-        QTime mPageButtonPressedTime;
-        bool mPendingPageButtonPressed;
-
-        QTime mZoomButtonPressedTime;
-        bool mPendingZoomButtonPressed;
-
-        QTime mPanButtonPressedTime;
-        bool mPendingPanButtonPressed;
-
-        QTime mEraseButtonPressedTime;
-        bool mPendingEraseButtonPressed;
-
-        /** The page navigator widget */
-        UBPageNavigationWidget* mpPageNavigWidget;
-        
-        /** The cache properties widget */
-        UBCachePropertiesWidget* mpCachePropWidget;
-
-		UBFeaturesWidget *mpFeaturesWidget;
-
-        /** The download widget */
-        UBDockDownloadWidget* mpDownloadWidget;
-        UBDockTeacherGuideWidget* mpTeacherGuideWidget;
-
-        bool mDownloadInProgress;
-
-    private slots:
-
-        void changeBackground();
-
-        void toggleBackgroundPalette(bool checked);
-        void backgroundPaletteClosed();
-
-        void toggleStylusPalette(bool checked);
-        void tooglePodcastPalette(bool checked);
-
-        void erasePaletteButtonPressed();
-        void erasePaletteButtonReleased();
-
-        void erasePaletteClosed();
-
-        void togglePagePalette(bool ckecked);
-        void pagePaletteClosed();
-
-        void pagePaletteButtonPressed();
-        void pagePaletteButtonReleased();
-
-        void addItemToCurrentPage();
-        void addItemToNewPage();
-        void addItemToLibrary();
-
-        void purchaseLinkActivated(const QString&);
-
-        void linkClicked(const QUrl& url);
-
-        void zoomButtonPressed();
-        void zoomButtonReleased();
-        void panButtonPressed();
-        void panButtonReleased();
-
-        void changeStylusPaletteOrientation(QVariant var);
-};
-
-#endif /* UBBOARDPALETTEMANAGER_H_ */
+
+
+
+#ifndef UBBOARDPALETTEMANAGER_H_
+#define UBBOARDPALETTEMANAGER_H_
+
+#include <QtGui>
+#include <QtWebKit>
+
+#include "gui/UBLeftPalette.h"
+#include "gui/UBRightPalette.h"
+#include "gui/UBPageNavigationWidget.h"
+#include "gui/UBCachePropertiesWidget.h"
+#include "gui/UBDockDownloadWidget.h"
+#include "core/UBApplicationController.h"
+#include "gui/UBFeaturesWidget.h"
+
+
+class UBWebToolsPalette;
+class UBStylusPalette;
+class UBClockPalette;
+class UBPageNumberPalette;
+class UBZoomPalette;
+class UBActionPalette;
+class UBBoardController;
+class UBServerXMLHttpRequest;
+class UBKeyboardPalette;
+class UBMainWindow;
+class UBApplicationController;
+class UBDockTeacherGuideWidget;
+class UBStartupHintsPalette;
+class UBCreateLinkPalette;
+
+class UBBoardPaletteManager : public QObject
+{
+    Q_OBJECT
+
+    public:
+        UBBoardPaletteManager(QWidget* container, UBBoardController* controller);
+        virtual ~UBBoardPaletteManager();
+
+        void setupLayout();
+        UBLeftPalette* leftPalette(){return mLeftPalette;}
+        UBRightPalette* rightPalette(){return mRightPalette;}
+        UBFeaturesWidget *featuresWidget(){return mpFeaturesWidget;}
+        UBStylusPalette* stylusPalette(){return mStylusPalette;}
+        UBActionPalette *addItemPalette() {return mAddItemPalette;}
+        void showVirtualKeyboard(bool show = true);
+        void initPalettesPosAtStartup();
+        void connectToDocumentController();
+        void refreshPalettes();
+
+        UBKeyboardPalette *mKeyboardPalette;
+
+        UBCreateLinkPalette* linkPalette();
+
+        void setCurrentWebToolsPalette(UBWebToolsPalette *palette) {mWebToolsCurrentPalette = palette;}
+        UBWebToolsPalette* mWebToolsCurrentPalette;
+
+        UBDockTeacherGuideWidget* teacherGuideDockWidget() { return mpTeacherGuideWidget;}
+
+        void processPalettersWidget(UBDockPalette *paletter, eUBDockPaletteWidgetMode mode);
+        void changeMode(eUBDockPaletteWidgetMode newMode, bool isInit = false);
+        void startDownloads();
+        void stopDownloads();
+
+    signals:
+        void connectToDocController();
+
+    public slots:
+
+        void activeSceneChanged();
+        void containerResized();
+        void addItem(const QUrl& pUrl);
+        void addItem(const QPixmap& pPixmap, const QPointF& p = QPointF(0.0, 0.0), qreal scale = 1.0, const QUrl& sourceUrl = QUrl());
+
+        void slot_changeMainMode(UBApplicationController::MainMode);
+        void slot_changeDesktopMode(bool);
+
+        void toggleErasePalette(bool ckecked);
+
+    private:
+
+        void setupPalettes();
+        void connectPalettes();
+        void positionFreeDisplayPalette();
+        void setupDockPaletteWidgets();
+
+        QWidget* mContainer;
+        UBBoardController *mBoardControler;
+
+        UBStylusPalette *mStylusPalette;
+
+        UBZoomPalette *mZoomPalette;
+        UBStartupHintsPalette* mTipPalette;
+        UBCreateLinkPalette* mLinkPalette;
+
+        /** The left dock palette */
+        UBLeftPalette* mLeftPalette;
+        /** The right dock palette */
+        UBRightPalette* mRightPalette;
+
+        UBActionPalette *mBackgroundsPalette;
+        UBActionPalette *mToolsPalette;
+        UBActionPalette* mAddItemPalette;
+        UBActionPalette* mErasePalette;
+        UBActionPalette* mPagePalette;
+
+        QUrl mItemUrl;
+        QPixmap mPixmap;
+        QPointF mPos;
+        qreal mScaleFactor;
+
+        QTime mPageButtonPressedTime;
+        bool mPendingPageButtonPressed;
+
+        QTime mZoomButtonPressedTime;
+        bool mPendingZoomButtonPressed;
+
+        QTime mPanButtonPressedTime;
+        bool mPendingPanButtonPressed;
+
+        QTime mEraseButtonPressedTime;
+        bool mPendingEraseButtonPressed;
+
+        /** The page navigator widget */
+        UBPageNavigationWidget* mpPageNavigWidget;
+
+        /** The cache properties widget */
+        UBCachePropertiesWidget* mpCachePropWidget;
+
+        UBFeaturesWidget *mpFeaturesWidget;
+
+        /** The download widget */
+        UBDockDownloadWidget* mpDownloadWidget;
+        UBDockTeacherGuideWidget* mpTeacherGuideWidget;
+
+        bool mDownloadInProgress;
+
+    private slots:
+
+        void changeBackground();
+
+        void toggleBackgroundPalette(bool checked);
+        void backgroundPaletteClosed();
+
+        void toggleStylusPalette(bool checked);
+        void tooglePodcastPalette(bool checked);
+
+        void erasePaletteButtonPressed();
+        void erasePaletteButtonReleased();
+
+        void erasePaletteClosed();
+
+        void togglePagePalette(bool ckecked);
+        void pagePaletteClosed();
+
+        void pagePaletteButtonPressed();
+        void pagePaletteButtonReleased();
+
+        void addItemToCurrentPage();
+        void addItemToNewPage();
+        void addItemToLibrary();
+
+        void purchaseLinkActivated(const QString&);
+
+        void linkClicked(const QUrl& url);
+
+        void zoomButtonPressed();
+        void zoomButtonReleased();
+        void panButtonPressed();
+        void panButtonReleased();
+
+        void changeStylusPaletteOrientation(QVariant var);
+};
+
+#endif /* UBBOARDPALETTEMANAGER_H_ */
diff --git a/Sankore-3.1/src/board/UBBoardView.cpp b/Sankore-3.1/src/board/UBBoardView.cpp
index 99d2f2e..b964857 100644
--- a/Sankore-3.1/src/board/UBBoardView.cpp
+++ b/Sankore-3.1/src/board/UBBoardView.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBBoardView.h"
 
 #include <QtGui>
@@ -51,6 +52,11 @@
 #include "board/UBBoardController.h"
 #include "board/UBBoardPaletteManager.h"
 
+#ifdef Q_WS_MAC
+#include "desktop/UBDesktopAnnotationController.h"
+#include "desktop/UBDesktopPalette.h"
+#endif
+
 #include "domain/UBGraphicsTextItem.h"
 #include "domain/UBGraphicsPixmapItem.h"
 #include "domain/UBGraphicsWidgetItem.h"
@@ -72,6 +78,8 @@
 #include "tools/UBGraphicsProtractor.h"
 #include "tools/UBGraphicsAristo.h"
 
+#include "customWidgets/UBGraphicsItemAction.h"
+
 #include "core/memcheck.h"
 
 UBBoardView::UBBoardView (UBBoardController* pController, QWidget* pParent, bool isControl, bool isDesktop)
@@ -379,6 +387,18 @@ void UBBoardView::tabletEvent (QTabletEvent * event)
 
     bool acceptEvent = true;
 
+#ifdef Q_WS_MAC
+    //Work around #1388. After selecting annotation tool in desktop mode, annotation view appears on top when
+    //using Mac OS X. In this case tablet event should send mouse event so as to let user interact with
+    //stylus palette.
+    Q_ASSERT(UBApplication::applicationController->uninotesController());
+    if (UBApplication::applicationController->uninotesController()->drawingView() == this) {
+        if (UBApplication::applicationController->uninotesController()->desktopPalettePath().contains(event->pos())) {
+            acceptEvent = false;
+        }
+    }
+#endif
+
     switch (event->type ()) {
     case QEvent::TabletPress: {
         mTabletStylusIsPressed = true;
@@ -533,6 +553,8 @@ Here we determines cases when items should to get mouse press event at pressing
     // some behavior depends on current tool.
     UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController()->stylusTool();
 
+    qDebug() << item->type();
+
     switch(item->type())
     {
     case UBGraphicsProtractor::Type:
@@ -544,8 +566,17 @@ Here we determines cases when items should to get mouse press event at pressing
         return true;
 
     case UBGraphicsDelegateFrame::Type:
-    case QGraphicsSvgItem::Type:
+        if (currentTool == UBStylusTool::Play)
+            return false;
         return true;
+    case UBGraphicsPixmapItem::Type:
+    case UBGraphicsSvgItem::Type:
+        if (currentTool == UBStylusTool::Play)
+            return true;
+        if (item->isSelected())
+            return true;
+        else
+            return false;
 
     case DelegateButton::Type:
         return true;
@@ -553,9 +584,9 @@ Here we determines cases when items should to get mouse press event at pressing
     case UBGraphicsMediaItem::Type:
         return false;
 
-    case UBGraphicsSvgItem::Type:
-    case UBGraphicsPixmapItem::Type:
     case UBGraphicsTextItem::Type:
+        if (currentTool == UBStylusTool::Play)
+            return true;
         if ((currentTool == UBStylusTool::Selector) && item->isSelected())
             return true;
         if ((currentTool == UBStylusTool::Selector) && item->parentItem() && item->parentItem()->isSelected())
@@ -564,17 +595,20 @@ Here we determines cases when items should to get mouse press event at pressing
             return false;
         break;
 
+    case UBGraphicsItemType::StrokeItemType:
+        if (currentTool == UBStylusTool::Play)
+            return true;
+        break;
     // Groups shouldn't reacts on any presses and moves for Play tool.
     case UBGraphicsGroupContainerItem::Type:
         if(currentTool == UBStylusTool::Play)
         {
             movingItem = NULL;
+            return true;
         }
         return false;
         break;
 
-    //case UBToolWidget::Type:
-      //  return true;
 
     case QGraphicsWebView::Type:
         return true;
@@ -588,6 +622,7 @@ Here we determines cases when items should to get mouse press event at pressing
             return true;
         return false;
         break;
+
     }
 
     return !isUBItem(item); // standard behavior of QGraphicsScene for not UB items. UB items should be managed upper.
@@ -608,6 +643,7 @@ bool UBBoardView::itemShouldReceiveSuspendedMousePressEvent(QGraphicsItem *item)
     case QGraphicsWebView::Type:
         return false;
     case UBGraphicsPixmapItem::Type:
+    case UBGraphicsSvgItem::Type:
     case UBGraphicsTextItem::Type:
     case UBGraphicsWidgetItem::Type:
         if (currentTool == UBStylusTool::Selector && !item->isSelected() && item->parentItem())
@@ -658,6 +694,8 @@ bool UBBoardView::itemShouldBeMoved(QGraphicsItem *item)
 
     case UBGraphicsSvgItem::Type:
     case UBGraphicsPixmapItem::Type:
+        if (currentTool == UBStylusTool::Play || !item->isSelected())
+            return true;
         if (item->isSelected())
             return false;
     case UBGraphicsMediaItem::Type:
@@ -681,12 +719,21 @@ QGraphicsItem* UBBoardView::determineItemToPress(QGraphicsItem *item)
         if (UBStylusTool::Selector == currentTool
             && item->parentItem()
             && UBGraphicsGroupContainerItem::Type == item->parentItem()->type()
-            && !item->parentItem()->isSelected())
+                && !item->parentItem()->isSelected())
             return item->parentItem();
 
         // items like polygons placed in two groups nested, so we need to recursive call.
         if(item->parentItem() && UBGraphicsStrokesGroup::Type == item->parentItem()->type())
             return determineItemToPress(item->parentItem());
+
+        //TODO claudio
+        // another chuck of very good code
+        if(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type()){
+            UBGraphicsGroupContainerItem* group = qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(item->parentItem());
+            if(group && group->Delegate()->action())
+                group->Delegate()->action()->play();
+        }
+
     }
 
     return item;
@@ -850,12 +897,79 @@ void UBBoardView::setMultiselection(bool enable)
     mMultipleSelectionIsEnabled = enable;
 }
 
+// work around for handling tablet events on MAC OS with Qt 4.8.0 and above
+#if defined(Q_WS_MACX)
+bool UBBoardView::directTabletEvent(QEvent *event)
+{
+    QTabletEvent *tEvent = static_cast<QTabletEvent *>(event);
+    tEvent = new QTabletEvent(tEvent->type()
+        , mapFromGlobal(tEvent->pos())
+        , tEvent->globalPos()
+        , tEvent->hiResGlobalPos()
+        , tEvent->device()
+        , tEvent->pointerType()
+        , tEvent->pressure()
+        , tEvent->xTilt()
+        , tEvent->yTilt()
+        , tEvent->tangentialPressure()
+        , tEvent->rotation()
+        , tEvent->z()
+        , tEvent->modifiers()
+        , tEvent->uniqueId());
+
+    if (geometry().contains(tEvent->pos()))
+    {
+        if (NULL == widgetForTabletEvent(this->parentWidget(), tEvent->pos()))
+        {
+            tabletEvent(tEvent);
+            return true;
+        }
+    }
+    return false;
+}
+
+QWidget *UBBoardView::widgetForTabletEvent(QWidget *w, const QPoint &pos)
+{
+    Q_ASSERT(w);
+
+    // it should work that, but it doesn't. So we check if it is control view.
+    //UBBoardView *board = qobject_cast<UBBoardView *>(w);
+    UBBoardView *board = UBApplication::boardController->controlView();
+
+    QWidget *childAtPos = NULL;
+
+    QList<QObject *> childs = w->children();
+    foreach(QObject *child, childs)
+    {
+        QWidget *childWidget = qobject_cast<QWidget *>(child);
+        if (childWidget)
+        {
+            if (childWidget->isVisible() && childWidget->geometry().contains(pos))
+            {
+                QWidget *lastChild = widgetForTabletEvent(childWidget, pos);
+
+                if (board && board->viewport() == lastChild)
+                    continue;
+
+                if (NULL != lastChild)
+                    childAtPos = lastChild;
+                else
+                    childAtPos = childWidget;
+
+                break;
+            }
+            else
+                childAtPos = NULL;
+        }
+    }
+    return childAtPos;
+}
+#endif
 void UBBoardView::longPressEvent()
 {
    UBDrawingController *drawingController = UBDrawingController::drawingController();
    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
 
-
    disconnect(&mLongPressTimer, SIGNAL(timeout()), this, SLOT(longPressEvent()));
 
    if (UBStylusTool::Selector == currentTool)
@@ -1160,7 +1274,7 @@ UBBoardView::mouseReleaseEvent (QMouseEvent *event)
           movingItem = NULL;
       }
       else
-      if (movingItem && !isCppTool(movingItem))
+      if (movingItem && (!isCppTool(movingItem) || UBGraphicsCurtainItem::Type == movingItem->type()))
       {
           if (suspendedMousePressEvent)
           {
@@ -1174,7 +1288,6 @@ UBBoardView::mouseReleaseEvent (QMouseEvent *event)
           {
              if (isUBItem(movingItem) &&
                 DelegateButton::Type != movingItem->type() &&
-                QGraphicsSvgItem::Type !=  movingItem->type() &&
                 UBGraphicsDelegateFrame::Type !=  movingItem->type() &&
                 UBGraphicsCache::Type != movingItem->type() &&
                 QGraphicsWebView::Type != movingItem->type() && // for W3C widgets as Tools.
diff --git a/Sankore-3.1/src/board/UBBoardView.h b/Sankore-3.1/src/board/UBBoardView.h
index 91fa280..677df7a 100644
--- a/Sankore-3.1/src/board/UBBoardView.h
+++ b/Sankore-3.1/src/board/UBBoardView.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,164 +18,169 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBBOARDVIEW_H_
-#define UBBOARDVIEW_H_
-
-#include <QtGui>
-#include "core/UB.h"
-#include "domain/UBGraphicsDelegateFrame.h"
-
-class UBBoardController;
-class UBGraphicsScene;
-class UBGraphicsWidgetItem;
-class UBRubberBand;
-
-class UBBoardView : public QGraphicsView
-{
-    Q_OBJECT
-
-    public:
-
-        UBBoardView(UBBoardController* pController, QWidget* pParent = 0, bool isControl = false, bool isDesktop = false);
-        UBBoardView(UBBoardController* pController, int pStartLayer, int pEndLayer, QWidget* pParent = 0, bool isControl = false, bool isDesktop = false);
-        virtual ~UBBoardView();
-
-        UBGraphicsScene* scene();
-
-        void forcedTabletRelease();
-
-        void setToolCursor(int tool);
-
-        void rubberItems();
-        void moveRubberedItems(QPointF movingVector);
-
-        void setMultiselection(bool enable);
-        bool isMultipleSelectionEnabled() { return mMultipleSelectionIsEnabled; }
-
-    signals:
-
-        void resized(QResizeEvent* event);
-        void hidden();
-        void shown();
-        void clickOnBoard();
-
-    protected:
-
-        bool itemIsLocked(QGraphicsItem *item);
-        bool isUBItem(QGraphicsItem *item); // we should to determine items who is not UB and use general scene behavior for them.
-        bool isCppTool(QGraphicsItem *item);
-        void handleItemsSelection(QGraphicsItem *item);
-        bool itemShouldReceiveMousePressEvent(QGraphicsItem *item);
-        bool itemShouldReceiveSuspendedMousePressEvent(QGraphicsItem *item);
-        bool itemHaveParentWithType(QGraphicsItem *item, int type);
-        bool itemShouldBeMoved(QGraphicsItem *item);
-        QGraphicsItem* determineItemToPress(QGraphicsItem *item);
-        QGraphicsItem* determineItemToMove(QGraphicsItem *item);
-        void handleItemMousePress(QMouseEvent *event);
-        void handleItemMouseMove(QMouseEvent *event);
-
-        virtual bool event (QEvent * e);
-
-        virtual void keyPressEvent(QKeyEvent *event);
-        virtual void keyReleaseEvent(QKeyEvent *event);
-        virtual void tabletEvent(QTabletEvent * event);
-        virtual void mouseDoubleClickEvent(QMouseEvent *event);
-        virtual void mousePressEvent(QMouseEvent *event);
-        virtual void mouseMoveEvent(QMouseEvent *event);
-        virtual void mouseReleaseEvent(QMouseEvent *event);
-        virtual void wheelEvent(QWheelEvent *event);
-        virtual void leaveEvent ( QEvent * event);
-
-        virtual void focusOutEvent ( QFocusEvent * event );
-
-        virtual void drawItems(QPainter *painter, int numItems,
-                                    QGraphicsItem *items[],
-                                    const QStyleOptionGraphicsItem options[]);
-
-//        virtual void dragEnterEvent(QDragEnterEvent * event);
-        virtual void dropEvent(QDropEvent *event);
-        virtual void dragMoveEvent(QDragMoveEvent *event);
-
-        virtual void resizeEvent(QResizeEvent * event);
-
-        virtual void drawBackground(QPainter *painter, const QRectF &rect);
-
-        virtual void showEvent(QShowEvent * event);
-        virtual void hideEvent(QHideEvent * event);
-
-    private:
-
-        void init();
-
-        inline bool shouldDisplayItem(QGraphicsItem *item)
-        {
-            bool ok;
-            int itemLayerType = item->data(UBGraphicsItemData::ItemLayerType).toInt(&ok);
-            return (ok && (itemLayerType >= mStartLayer && itemLayerType <= mEndLayer));
-        }
-
-        QList<QUrl> processMimeData(const QMimeData* pMimeData);
-
-        UBBoardController* mController;
-
-        int mStartLayer, mEndLayer;
-        bool mFilterZIndex;
-
-        bool mTabletStylusIsPressed;
-        bool mUsingTabletEraser;
-
-        bool mPendingStylusReleaseEvent;
-
-        bool mMouseButtonIsPressed;
-        QPointF mPreviousPoint;
-        QPoint mMouseDownPos;
-
-        bool mPenPressureSensitive;
-        bool mMarkerPressureSensitive;
-        bool mUseHighResTabletEvent;
-
-        QRubberBand *mRubberBand;
-        bool mIsCreatingTextZone;
-        bool mIsCreatingSceneGrabZone;
-
-        bool isAbsurdPoint(QPoint point);
-
-		bool mVirtualKeyboardActive;
-        bool mOkOnWidget;
-
-        bool mWidgetMoved;
-        QPointF mLastPressedMousePos;
-        QGraphicsItem *movingItem;
-        QMouseEvent *suspendedMousePressEvent;
-
-        bool moveRubberBand;
-        UBRubberBand *mUBRubberBand;
-        
-        QList<QGraphicsItem *> mRubberedItems;
-        QSet<QGraphicsItem*> mJustSelectedItems;
-
-        int mLongPressInterval;
-        QTimer mLongPressTimer;
-
-        bool mIsDragInProgress;
-        bool mMultipleSelectionIsEnabled;
-        bool bIsControl;
-        bool bIsDesktop;
-        bool mRubberBandInPlayMode;
-
-        static bool hasSelectedParents(QGraphicsItem * item);
-
-    private slots:
-
-        void settingChanged(QVariant newValue);
-
-	public slots:
-
-		void virtualKeyboardActivated(bool b);
-        void longPressEvent();
-
-};
-
-#endif /* UBBOARDVIEW_H_ */
+
+
+
+#ifndef UBBOARDVIEW_H_
+#define UBBOARDVIEW_H_
+
+#include <QtGui>
+#include "core/UB.h"
+#include "domain/UBGraphicsDelegateFrame.h"
+
+class UBBoardController;
+class UBGraphicsScene;
+class UBGraphicsWidgetItem;
+class UBRubberBand;
+
+class UBBoardView : public QGraphicsView
+{
+    Q_OBJECT
+
+    public:
+
+        UBBoardView(UBBoardController* pController, QWidget* pParent = 0, bool isControl = false, bool isDesktop = false);
+        UBBoardView(UBBoardController* pController, int pStartLayer, int pEndLayer, QWidget* pParent = 0, bool isControl = false, bool isDesktop = false);
+        virtual ~UBBoardView();
+
+        UBGraphicsScene* scene();
+
+        void forcedTabletRelease();
+
+        void setToolCursor(int tool);
+
+        void rubberItems();
+        void moveRubberedItems(QPointF movingVector);
+
+        void setMultiselection(bool enable);
+        bool isMultipleSelectionEnabled() { return mMultipleSelectionIsEnabled; }
+// work around for handling tablet events on MAC OS with Qt 4.8.0 and above
+#if defined(Q_WS_MACX)
+        bool directTabletEvent(QEvent *event);
+        QWidget *widgetForTabletEvent(QWidget *w, const QPoint &pos);
+#endif
+    signals:
+
+        void resized(QResizeEvent* event);
+        void hidden();
+        void shown();
+        void clickOnBoard();
+
+    protected:
+
+        bool itemIsLocked(QGraphicsItem *item);
+        bool isUBItem(QGraphicsItem *item); // we should to determine items who is not UB and use general scene behavior for them.
+        bool isCppTool(QGraphicsItem *item);
+        void handleItemsSelection(QGraphicsItem *item);
+        bool itemShouldReceiveMousePressEvent(QGraphicsItem *item);
+        bool itemShouldReceiveSuspendedMousePressEvent(QGraphicsItem *item);
+        bool itemHaveParentWithType(QGraphicsItem *item, int type);
+        bool itemShouldBeMoved(QGraphicsItem *item);
+        QGraphicsItem* determineItemToPress(QGraphicsItem *item);
+        QGraphicsItem* determineItemToMove(QGraphicsItem *item);
+        void handleItemMousePress(QMouseEvent *event);
+        void handleItemMouseMove(QMouseEvent *event);
+
+        virtual bool event (QEvent * e);
+
+        virtual void keyPressEvent(QKeyEvent *event);
+        virtual void keyReleaseEvent(QKeyEvent *event);
+        virtual void tabletEvent(QTabletEvent * event);
+        virtual void mouseDoubleClickEvent(QMouseEvent *event);
+        virtual void mousePressEvent(QMouseEvent *event);
+        virtual void mouseMoveEvent(QMouseEvent *event);
+        virtual void mouseReleaseEvent(QMouseEvent *event);
+        virtual void wheelEvent(QWheelEvent *event);
+        virtual void leaveEvent ( QEvent * event);
+
+        virtual void focusOutEvent ( QFocusEvent * event );
+
+        virtual void drawItems(QPainter *painter, int numItems,
+                                    QGraphicsItem *items[],
+                                    const QStyleOptionGraphicsItem options[]);
+
+//        virtual void dragEnterEvent(QDragEnterEvent * event);
+        virtual void dropEvent(QDropEvent *event);
+        virtual void dragMoveEvent(QDragMoveEvent *event);
+
+        virtual void resizeEvent(QResizeEvent * event);
+
+        virtual void drawBackground(QPainter *painter, const QRectF &rect);
+
+        virtual void showEvent(QShowEvent * event);
+        virtual void hideEvent(QHideEvent * event);
+
+    private:
+
+        void init();
+
+        inline bool shouldDisplayItem(QGraphicsItem *item)
+        {
+            bool ok;
+            int itemLayerType = item->data(UBGraphicsItemData::ItemLayerType).toInt(&ok);
+            return (ok && (itemLayerType >= mStartLayer && itemLayerType <= mEndLayer));
+        }
+
+        QList<QUrl> processMimeData(const QMimeData* pMimeData);
+
+        UBBoardController* mController;
+
+        int mStartLayer, mEndLayer;
+        bool mFilterZIndex;
+
+        bool mTabletStylusIsPressed;
+        bool mUsingTabletEraser;
+
+        bool mPendingStylusReleaseEvent;
+
+        bool mMouseButtonIsPressed;
+        QPointF mPreviousPoint;
+        QPoint mMouseDownPos;
+
+        bool mPenPressureSensitive;
+        bool mMarkerPressureSensitive;
+        bool mUseHighResTabletEvent;
+
+        QRubberBand *mRubberBand;
+        bool mIsCreatingTextZone;
+        bool mIsCreatingSceneGrabZone;
+
+        bool isAbsurdPoint(QPoint point);
+
+        bool mVirtualKeyboardActive;
+        bool mOkOnWidget;
+
+        bool mWidgetMoved;
+        QPointF mLastPressedMousePos;
+        QGraphicsItem *movingItem;
+        QMouseEvent *suspendedMousePressEvent;
+
+        bool moveRubberBand;
+        UBRubberBand *mUBRubberBand;
+
+        QList<QGraphicsItem *> mRubberedItems;
+        QSet<QGraphicsItem*> mJustSelectedItems;
+
+        int mLongPressInterval;
+        QTimer mLongPressTimer;
+
+        bool mIsDragInProgress;
+        bool mMultipleSelectionIsEnabled;
+        bool bIsControl;
+        bool bIsDesktop;
+        bool mRubberBandInPlayMode;
+
+        static bool hasSelectedParents(QGraphicsItem * item);
+
+    private slots:
+
+        void settingChanged(QVariant newValue);
+
+    public slots:
+
+        void virtualKeyboardActivated(bool b);
+        void longPressEvent();
+
+};
+
+#endif /* UBBOARDVIEW_H_ */
diff --git a/Sankore-3.1/src/board/UBDrawingController.cpp b/Sankore-3.1/src/board/UBDrawingController.cpp
index fcd03a0..b6f7448 100644
--- a/Sankore-3.1/src/board/UBDrawingController.cpp
+++ b/Sankore-3.1/src/board/UBDrawingController.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBDrawingController.h"
 
 #include "core/UBSettings.h"
diff --git a/Sankore-3.1/src/board/UBDrawingController.h b/Sankore-3.1/src/board/UBDrawingController.h
index b52c9fa..96749e4 100644
--- a/Sankore-3.1/src/board/UBDrawingController.h
+++ b/Sankore-3.1/src/board/UBDrawingController.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDRAWINGCONTROLLER_H_
 #define UBDRAWINGCONTROLLER_H_
 
diff --git a/Sankore-3.1/src/board/UBFeaturesController.cpp b/Sankore-3.1/src/board/UBFeaturesController.cpp
index 96d29b9..978adc2 100644
--- a/Sankore-3.1/src/board/UBFeaturesController.cpp
+++ b/Sankore-3.1/src/board/UBFeaturesController.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QGraphicsItem>
 #include <QPointF>
 #include <QtGui>
@@ -41,22 +42,11 @@
 
 #include "gui/UBFeaturesWidget.h"
 
-const QString UBFeaturesController::virtualRootName = "root";
-const QString UBFeaturesController::rootPath  = "/" + virtualRootName;
-
-const QString UBFeaturesController::appPath = rootPath + "/Applications";
-const QString UBFeaturesController::audiosPath = rootPath + "/Audios";
-const QString UBFeaturesController::moviesPath = rootPath + "/Movies";
-const QString UBFeaturesController::picturesPath = rootPath + "/Pictures";
-const QString UBFeaturesController::flashPath = rootPath + "/Animations";
-const QString UBFeaturesController::interactPath = rootPath + "/Interactivities";
-const QString UBFeaturesController::shapesPath = rootPath + "/Shapes";
-const QString UBFeaturesController::trashPath = rootPath + "/Trash";
-const QString UBFeaturesController::favoritePath = rootPath + "/Favorites";
-const QString UBFeaturesController::webSearchPath = rootPath + "/Web search";
-
-
-void UBFeaturesComputingThread::scanFS(const QUrl & currentPath, const QString & currVirtualPath, const QSet<QUrl> &pFavoriteSet)
+void UBFeaturesComputingThread::scanFS(const QUrl & currentPath
+                                       , const QString & currVirtualPath
+                                       , const QPair<CategoryData, QSet<QUrl> > &pfavoriteInfo
+                                       , UBFeature::Permissions pPermissions
+                                       , const QList<CategoryData> &extData)
 {
     Q_ASSERT(QFileInfo(currentPath.toLocalFile()).exists());
 
@@ -77,33 +67,70 @@ void UBFeaturesComputingThread::scanFS(const QUrl & currentPath, const QString &
         if ( fullFileName.contains(".thumbnail."))
             continue;
 
-        UBFeature testFeature(currVirtualPath + "/" + fileName, icon, fileName, QUrl::fromLocalFile(fullFileName), featureType);
+        //Testing exception permissions
+        QString testVirtualPath = currVirtualPath + "/" + fileName;
+        UBFeature::Permissions testPermissions = pPermissions;
+
+        foreach (CategoryData curException, extData) {
+            QString exceptionVirtualPath = curException.categoryFeature().getFullVirtualPath();
+            if (testVirtualPath.startsWith(exceptionVirtualPath)) {
+                qDebug() << "catched";
+                qDebug() << "ext" << exceptionVirtualPath << "test" << testVirtualPath;
+                //folder itself
+                if (exceptionVirtualPath.count() == testVirtualPath.count()) {
+                    testPermissions = curException.categoryFeature().getPermissions();
+                //subfolder
+                } else {
+                    testPermissions = curException.UserSubPermissions();
+                }
+            }
+        }
+
+        UBFeature testFeature(testVirtualPath, icon, fileName, QUrl::fromLocalFile(fullFileName), featureType, testPermissions);
 
         emit sendFeature(testFeature);
         emit featureSent();
         emit scanPath(fullFileName);
 
-        if ( pFavoriteSet.find(QUrl::fromLocalFile(fullFileName)) != pFavoriteSet.end()) {
-            //TODO send favoritePath from the controller or make favoritePath public and static
-            emit sendFeature(UBFeature( UBFeaturesController::favoritePath + "/" + fileName, icon, fileName, QUrl::fromLocalFile(fullFileName), featureType));
+        if ( pfavoriteInfo.second.find(QUrl::fromLocalFile(fullFileName)) != pfavoriteInfo.second.end()) {
+            emit sendFeature(UBFeature(pfavoriteInfo.first.categoryFeature().getFullVirtualPath() + "/" + fileName
+                                       , icon
+                                       , fileName
+                                       , QUrl::fromLocalFile(fullFileName)
+                                       , featureType
+                                       , pfavoriteInfo.first.librarySubPermissions())); //permissions for favorites subfolders
         }
 
         if (featureType == FEATURE_FOLDER) {
-            scanFS(QUrl::fromLocalFile(fullFileName), currVirtualPath + "/" + fileName, pFavoriteSet);
+            scanFS(QUrl::fromLocalFile(fullFileName), currVirtualPath + "/" + fileName, pfavoriteInfo, pPermissions, extData);
         }
     }
 }
 
-void UBFeaturesComputingThread::scanAll(QList<QPair<QUrl, UBFeature> > pScanningData, const QSet<QUrl> &pFavoriteSet)
+void UBFeaturesComputingThread::scanAll(QList<CategoryData> pScanningData
+                                        , const QPair<CategoryData, QSet<QUrl> >  &pFavoriteInfo
+                                        , const QList<CategoryData> &extData)
 {
-    for (int i = 0; i < pScanningData.count(); i++) {
-        if (abort) {
-            return;
+    for (int n = static_cast<int>(CategoryData::Library); n <= static_cast<int>(CategoryData::UserDefined); n++) {
+        for (int i = 0; i < pScanningData.count(); i++) {
+            if (abort) {
+                return;
+            }
+            CategoryData curData = pScanningData.at(i);
+
+            emit scanCategory(curData.categoryFeature().getDisplayName());
+
+            CategoryData::pathType pType = static_cast<CategoryData::pathType>(n);
+            QList<QUrl> curScanPaths = curData.pathData().values(pType);
+            foreach (QUrl curUrl, curScanPaths) {
+//                qDebug() << "location" << i << "is" << curUrl.toLocalFile();
+                scanFS(curUrl
+                       , curData.categoryFeature().getFullVirtualPath()
+                       , pFavoriteInfo
+                       , curData.subFolderPermissionsForType(pType)
+                       , extData);
+            }
         }
-        QPair<QUrl, UBFeature> curPair = pScanningData.at(i);
-
-        emit scanCategory(curPair.second.getDisplayName());
-        scanFS(curPair.first, curPair.second.getFullVirtualPath(), pFavoriteSet);
     }
 }
 
@@ -130,12 +157,16 @@ int UBFeaturesComputingThread::featuresCount(const QUrl &pPath)
     return noItems;
 }
 
-int UBFeaturesComputingThread::featuresCountAll(QList<QPair<QUrl, UBFeature> > pScanningData)
+int UBFeaturesComputingThread::featuresCountAll(QList<CategoryData> pScanningData)
 {
     int noItems = 0;
     for (int i = 0; i < pScanningData.count(); i++) {
-        QPair<QUrl, UBFeature> curPair = pScanningData.at(i);
-        noItems += featuresCount(curPair.first);
+        CategoryData curCategoryData = pScanningData.at(i);
+        QMapIterator<CategoryData::pathType, QUrl> pathIterator(curCategoryData.pathData());
+        while (pathIterator.hasNext()) {
+            pathIterator.next();
+            noItems += featuresCount(pathIterator.value());
+        }
     }
 
     return noItems;
@@ -148,12 +179,13 @@ QThread(parent)
     abort = false;
 }
 
-void UBFeaturesComputingThread::compute(const QList<QPair<QUrl, UBFeature> > &pScanningData, QSet<QUrl> *pFavoritesSet)
+void UBFeaturesComputingThread::compute(const QList<CategoryData> &pcategoryList, const QPair<CategoryData, QSet<QUrl> > &pFavoriteInfo, const QList<CategoryData> &extData)
 {
     QMutexLocker curLocker(&mMutex);
 
-    mScanningData = pScanningData;
-    mFavoriteSet = *pFavoritesSet;
+    mScanningData = pcategoryList;
+    mExceptionData = extData;
+    mFavoriteInfo = pFavoriteInfo;
 
     if (!isRunning()) {
         start(LowPriority);
@@ -169,8 +201,9 @@ void UBFeaturesComputingThread::run()
 //        qDebug() << "Custom thread started execution";
 
         mMutex.lock();
-        QList<QPair<QUrl, UBFeature> > searchData = mScanningData;
-        QSet<QUrl> favoriteSet = mFavoriteSet;
+        QList<CategoryData> searchData = mScanningData;
+        QList<CategoryData> extData = mExceptionData;
+        QPair<CategoryData, QSet<QUrl> > favoriteInfo = mFavoriteInfo;
         mMutex.unlock();
 
         if (abort) {
@@ -180,16 +213,16 @@ void UBFeaturesComputingThread::run()
             break;
         }
 
-//        QTime curTime = QTime::currentTime();
+//        QTime curTime = Q.Time::currentTime();
         int fsCnt = featuresCountAll(searchData);
 //        int msecsto = curTime.msecsTo(QTime::currentTime());
 //        qDebug() << "time on evaluation" << msecsto;
 
         emit maxFilesCountEvaluated(fsCnt);
-
         emit scanStarted();
+
 //        curTime = QTime::currentTime();
-        scanAll(searchData, favoriteSet);
+        scanAll(searchData, favoriteInfo, extData);
 //        qDebug() << "Time on finishing" << curTime.msecsTo(QTime::currentTime());
         emit scanFinished();
 
@@ -215,11 +248,25 @@ UBFeaturesComputingThread::~UBFeaturesComputingThread()
     wait();
 }
 
-UBFeature::UBFeature(const QString &url, const QImage &icon, const QString &name, const QUrl &realPath, UBFeatureElementType type)
-    : mThumbnail(icon), mDisplayName(name), mPath(realPath), elementType(type)
+UBFeature::UBFeature(const QString &url
+                     , const QImage &icon
+                     , const QString &name
+                     , const QUrl &realPath
+                     , UBFeatureElementType type
+                     , Permissions pOwnPermissions
+                     , QString pSortKey)
+    : mThumbnail(icon)
+    , mDisplayName(name)
+    , mPath(realPath)
+    , elementType(type)
+    , mOwnPermissions(pOwnPermissions)
+    , mSortKey(pSortKey)
 {
     mName = getNameFromVirtualPath(url);
     virtualDir = getVirtualDirFromVirtualPath(url);
+    if (mSortKey.isNull()) {
+        mSortKey = name;
+    }
 }
 
 UBFeature::~UBFeature()
@@ -254,12 +301,18 @@ QString UBFeature::getVirtualDirFromVirtualPath(const QString &pVirtPath)
 
 QString UBFeature::getUrl() const
 {
-	if ( elementType == FEATURE_INTERNAL )
+    if ( elementType == FEATURE_INTERNAL )
         return getFullPath().toString();
 
     return getFullPath().toLocalFile();
 }
 
+UBFeature &UBFeature::markedWithSortKey(const QString &str)
+{
+    mSortKey = str;
+    return *this;
+}
+
 bool UBFeature::operator ==( const UBFeature &f )const
 {
     return virtualDir == f.getVirtualPath() && mName == f.getName() && mPath == f.getFullPath() && elementType == f.getType();
@@ -267,12 +320,12 @@ bool UBFeature::operator ==( const UBFeature &f )const
 
 bool UBFeature::operator !=( const UBFeature &f )const
 {
-	return !(*this == f);
+    return !(*this == f);
 }
 
 bool UBFeature::isFolder() const
 {
-	return elementType == FEATURE_CATEGORY || elementType == FEATURE_TRASH || elementType == FEATURE_FAVORITE
+    return elementType == FEATURE_CATEGORY || elementType == FEATURE_TRASH || elementType == FEATURE_FAVORITE
         || elementType == FEATURE_FOLDER || elementType == FEATURE_SEARCH;
 }
 
@@ -291,6 +344,8 @@ bool UBFeature::isDeletable() const
             || elementType == FEATURE_IMAGE
             || elementType == FEATURE_FLASH
             || elementType == FEATURE_FOLDER
+            || elementType == FEATURE_BOOKMARK
+            || elementType == FEATURE_LINK
     //Ilia. Just a hotfix. Permission mechanism for UBFeatures should be reworked
             || getVirtualPath().startsWith("/root/Applications/Web");
 }
@@ -305,45 +360,17 @@ UBFeaturesController::UBFeaturesController(QWidget *pParentWidget) :
     ,featuresList(0)
     ,mLastItemOffsetIndex(0)
 {
-    //Initializing physical directories from UBSettings
-    mUserAudioDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userAudioDirectory());
-    mUserVideoDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userVideoDirectory());
-    mUserPicturesDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userImageDirectory());
-    mUserInteractiveDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userInteractiveDirectory());
-    mUserAnimationDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userAnimationDirectory());
-
-    mLibPicturesDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationImageLibraryDirectory());
-    mLibAudiosDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationAudiosLibraryDirectory());
-    mLibVideosDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationVideosLibraryDirectory());
-    mLibAnimationsDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationAnimationsLibraryDirectory());
-    mLibInteractiveDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationInteractivesDirectory());
-    mLibApplicationsDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationApplicationsLibraryDirectory());
-    mLibShapesDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationShapeLibraryDirectory());
-    mLibSearchDirectoryPath =QUrl::fromLocalFile(UBSettings::settings()->userSearchDirectory());
-    trashDirectoryPath = QUrl::fromLocalFile(UBSettings::userTrashDirPath());
-
-    rootElement = UBFeature(rootPath, QImage( ":images/libpalette/home.png" ), "root", QUrl());
-    audiosElement = UBFeature( audiosPath, QImage(":images/libpalette/AudiosCategory.svg"), tr("Audios") , mUserAudioDirectoryPath, FEATURE_CATEGORY);
-    moviesElement = UBFeature( moviesPath, QImage(":images/libpalette/MoviesCategory.svg"), tr("Movies") , mUserVideoDirectoryPath, FEATURE_CATEGORY);
-    picturesElement = UBFeature( picturesPath, QImage(":images/libpalette/PicturesCategory.svg"), tr("Pictures") , mUserPicturesDirectoryPath, FEATURE_CATEGORY);
-    flashElement = UBFeature( flashPath, QImage(":images/libpalette/FlashCategory.svg"), tr("Animations") , mUserAnimationDirectoryPath, FEATURE_CATEGORY);
-    interactElement = UBFeature( interactPath, QImage(":images/libpalette/InteractivesCategory.svg"), tr("Interactivities") ,  mLibInteractiveDirectoryPath, FEATURE_CATEGORY);
-    applicationsElement = UBFeature( appPath, QImage(":images/libpalette/ApplicationsCategory.svg"), tr("Applications") , mUserInteractiveDirectoryPath, FEATURE_CATEGORY);
-    shapesElement = UBFeature( shapesPath, QImage(":images/libpalette/ShapesCategory.svg"), tr("Shapes") , mLibShapesDirectoryPath, FEATURE_CATEGORY );
-    favoriteElement = UBFeature( favoritePath, QImage(":images/libpalette/FavoritesCategory.svg"), tr("Favorites"), QUrl("favorites"), FEATURE_FAVORITE );
-    webSearchElement = UBFeature( webSearchPath, QImage(":images/libpalette/WebSearchCategory.svg"), tr("Web search"), mLibSearchDirectoryPath, FEATURE_CATEGORY);
-
-    trashElement = UBFeature( trashPath, QImage(":images/libpalette/TrashCategory.svg"), tr("Trash"), trashDirectoryPath, FEATURE_TRASH);
+    initHardcodedData();
 
     featuresList = new QList <UBFeature>();
 
-    scanFS();
+    loadHardcodedItemsToModel();
 
     featuresModel = new UBFeaturesModel(featuresList, this);
     featuresModel->setSupportedDragActions(Qt::CopyAction | Qt::MoveAction);
 
     featuresProxyModel = new UBFeaturesProxyModel(this);
-    featuresProxyModel->setFilterFixedString(rootPath);
+    featuresProxyModel->setFilterFixedString(rootData.categoryFeature().getFullVirtualPath());
     featuresProxyModel->setSourceModel(featuresModel);
     featuresProxyModel->setFilterCaseSensitivity( Qt::CaseInsensitive );
 
@@ -352,7 +379,7 @@ UBFeaturesController::UBFeaturesController(QWidget *pParentWidget) :
     featuresSearchModel->setFilterCaseSensitivity( Qt::CaseInsensitive );
 
     featuresPathModel = new UBFeaturesPathProxyModel(this);
-    featuresPathModel->setPath(rootPath);
+    featuresPathModel->setPath(rootData.categoryFeature().getFullVirtualPath());
     featuresPathModel->setSourceModel(featuresModel);
 
     connect(featuresModel, SIGNAL(dataRestructured()), featuresProxyModel, SLOT(invalidate()));
@@ -365,31 +392,27 @@ UBFeaturesController::UBFeaturesController(QWidget *pParentWidget) :
     connect(&mCThread, SIGNAL(scanPath(QString)), this, SIGNAL(scanPath(QString)));
     connect(UBApplication::boardController, SIGNAL(npapiWidgetCreated(QString)), this, SLOT(createNpApiFeature(QString)));
 
-    QTimer::singleShot(0, this, SLOT(startThread()));
+    QTimer::singleShot(0, this, SLOT(scanFS()));
 }
 
-void UBFeaturesController::startThread()
+void UBFeaturesController::scanFS()
 {
-    QList<QPair<QUrl, UBFeature> > computingData;
-
-    computingData << QPair<QUrl, UBFeature>(mLibAudiosDirectoryPath, audiosElement)
-            <<  QPair<QUrl, UBFeature>(mLibVideosDirectoryPath, moviesElement)
-            <<  QPair<QUrl, UBFeature>(mLibAnimationsDirectoryPath, flashElement)
-            <<  QPair<QUrl, UBFeature>(mLibPicturesDirectoryPath, picturesElement)
-
-            <<  QPair<QUrl, UBFeature>(mUserInteractiveDirectoryPath, applicationsElement)
-            <<  QPair<QUrl, UBFeature>(mUserAudioDirectoryPath, audiosElement)
-            <<  QPair<QUrl, UBFeature>(mUserPicturesDirectoryPath, picturesElement)
-            <<  QPair<QUrl, UBFeature>(mUserVideoDirectoryPath, moviesElement)
-            <<  QPair<QUrl, UBFeature>(mUserAnimationDirectoryPath, flashElement)
-
-            <<  QPair<QUrl, UBFeature>(mLibApplicationsDirectoryPath, applicationsElement)
-            <<  QPair<QUrl, UBFeature>(mLibShapesDirectoryPath, shapesElement)
-            <<  QPair<QUrl, UBFeature>(mLibInteractiveDirectoryPath, interactElement)
-            <<  QPair<QUrl, UBFeature>(trashDirectoryPath, trashElement)
-            <<  QPair<QUrl, UBFeature>(mLibSearchDirectoryPath, webSearchElement);
-
-    mCThread.compute(computingData, favoriteSet);
+    QList<CategoryData> computingData;
+
+    computingData << audiosData
+                  << moviesData
+                  << flashData
+                  << picturesData
+                  << appData
+                  << shapesData
+                  << interactivityData
+                  << webSearchData
+                  << trashData
+                  << bookmarkData;
+
+    QPair<CategoryData, QSet<QUrl> > favoriteInfo(favoriteData, *favoriteSet);
+
+    mCThread.compute(computingData, favoriteInfo, extentionPermissionsCategoryData);
 }
 
 void UBFeaturesController::createNpApiFeature(const QString &str)
@@ -398,24 +421,236 @@ void UBFeaturesController::createNpApiFeature(const QString &str)
 
     QString widgetName = QFileInfo(str).fileName();
 
-    featuresModel->addItem(UBFeature(QString(appPath + "/Web/" + widgetName), QImage(UBGraphicsWidgetItem::iconFilePath(QUrl::fromLocalFile(str))), widgetName, QUrl::fromLocalFile(str), FEATURE_INTERACTIVE));
+    featuresModel->addItem(UBFeature(QString(appData.categoryFeature().getFullVirtualPath() + "/Web/" + widgetName)
+                                     , QImage(UBGraphicsWidgetItem::iconFilePath(QUrl::fromLocalFile(str)))
+                                     , widgetName
+                                     , QUrl::fromLocalFile(str)
+                                     , FEATURE_INTERACTIVE));
 }
 
-void UBFeaturesController::scanFS()
+void UBFeaturesController::initHardcodedData()
+{
+    rootData = CategoryData(CategoryData::PathData() //Static library paths for root category. Scanning data
+                            .insertr(CategoryData::Library, QUrl())
+                            //UBFeature represented root element
+                            , UBFeature("/root"                                   //Virtual Path
+                                        ,QImage(":images/libpalette/home.png")     //Icon
+                                        ,"root"                                    //Translation name
+                                        , QUrl()                                   //Main path in file system
+                                        , FEATURE_CATEGORY                         //UBFeature's type
+                                        , UBFeature::NO_P)                         //UBFeature's permissions
+                            //permissions for category subfolders. Scanning data
+                            , CategoryData::PermissionsData()
+                            .insertr(CategoryData::Library, UBFeature::NO_P)
+                            .insertr(CategoryData::UserDefined, UBFeature::NO_P));
+
+    audiosData = CategoryData(CategoryData::PathData() //Static library paths for Audios category. Scanning data
+                              .insertr(CategoryData::Library,     QUrl::fromLocalFile(UBSettings::settings()->applicationAudiosLibraryDirectory()))
+                              .insertr(CategoryData::UserDefined, QUrl::fromLocalFile(UBSettings::settings()->userAudioDirectory()))
+                              //UBFeature represented Audios element
+                              , UBFeature(rootData.categoryFeature().getFullVirtualPath() + "/Audios"   //Virtual Path
+                                          ,QImage(":images/libpalette/AudiosCategory.svg")           //Icon
+                                          , tr("Audios")                                             //Translation name
+                                          , QUrl::fromLocalFile(UBSettings::settings()->
+                                                                applicationAudiosLibraryDirectory()) //Main path in file system
+                                          , FEATURE_CATEGORY                                         //UBFeature's type
+                                          , UBFeature::WRITE_P)                                      //UBFeature's permissions
+                              //permissions for category subfolders. Scanning data
+                              , CategoryData::PermissionsData()
+                              .insertr(CategoryData::Library, UBFeature::WRITE_P | UBFeature::DELETE_P)
+                              .insertr(CategoryData::UserDefined, UBFeature::WRITE_P | UBFeature::DELETE_P));
+
+    moviesData = CategoryData(CategoryData::PathData()  //Static library paths for Videos category. Scanning data
+                              .insertr(CategoryData::Library,     QUrl::fromLocalFile(UBSettings::settings()->applicationVideosLibraryDirectory()))
+                              .insertr(CategoryData::UserDefined, QUrl::fromLocalFile(UBSettings::settings()->userVideoDirectory()))
+                              //UBFeature represented Movies element
+                              , UBFeature(rootData.categoryFeature().getFullVirtualPath() + "/Movies"   //Virtual Path
+                                          ,QImage(":images/libpalette/MoviesCategory.svg")           //Icon
+                                          , tr("Movies")                                             //Translation name
+                                          , QUrl::fromLocalFile(UBSettings::settings()->
+                                                                applicationVideosLibraryDirectory()) //Main path in file system
+                                          , FEATURE_CATEGORY                                         //UBFeature's type
+                                          , UBFeature::WRITE_P)                                      //UBFeature's permissions
+                              //permissions for category subfolders. Scanning data
+                              , CategoryData::PermissionsData()
+                              .insertr(CategoryData::Library, UBFeature::WRITE_P | UBFeature::DELETE_P)
+                              .insertr(CategoryData::UserDefined, UBFeature::WRITE_P | UBFeature::DELETE_P));
+
+    picturesData = CategoryData(CategoryData::PathData()  //Static library paths for Pictures category. Scanning data
+                                .insertr(CategoryData::Library,     QUrl::fromLocalFile(UBSettings::settings()->applicationImageLibraryDirectory()))
+                                .insertr(CategoryData::UserDefined, QUrl::fromLocalFile(UBSettings::settings()->userImageDirectory()))
+                                //UBFeature represented Pictures element
+                                , UBFeature(rootData.categoryFeature().getFullVirtualPath() + "/Pictures" //Virtual Path
+                                            ,QImage(":images/libpalette/PicturesCategory.svg")         //Icon
+                                            , tr("Pictures")                                           //Translation name
+                                            , QUrl::fromLocalFile(UBSettings::settings()->
+                                                                  applicationImageLibraryDirectory())  //Main path in file system
+                                            , FEATURE_CATEGORY                                         //UBFeature's type
+                                            , UBFeature::WRITE_P)                                      //UBFeature's permissions
+                                //permissions for category subfolders. Scanning data
+                                , CategoryData::PermissionsData()
+                                .insertr(CategoryData::Library, UBFeature::WRITE_P | UBFeature::DELETE_P)
+                                .insertr(CategoryData::UserDefined, UBFeature::WRITE_P | UBFeature::DELETE_P));
+
+    flashData = CategoryData(CategoryData::PathData() //Static library paths for Flash category. Scanning data
+                             .insertr(CategoryData::Library,     QUrl::fromLocalFile(UBSettings::settings()->applicationAnimationsLibraryDirectory()))
+                             .insertr(CategoryData::UserDefined, QUrl::fromLocalFile(UBSettings::settings()->userAnimationDirectory()))
+                             //UBFeature represented Animations element
+                             , UBFeature(rootData.categoryFeature().getFullVirtualPath() + "/Animations"   //Virtual Path
+                                         ,QImage(":images/libpalette/FlashCategory.svg")                //Icon
+                                         , tr("Animations")                                             //Translation name
+                                         , QUrl::fromLocalFile(UBSettings::settings()->
+                                                               applicationAnimationsLibraryDirectory()) //Main path in file system
+                                         , FEATURE_CATEGORY                                             //UBFeature's type
+                                         , UBFeature::NO_P)                                             //UBFeature's permissions
+                             //permissions for category subfolders. Scanning data
+                             , CategoryData::PermissionsData()
+                             .insertr(CategoryData::Library, UBFeature::NO_P)
+                             .insertr(CategoryData::UserDefined, UBFeature::NO_P));
+
+    appData = CategoryData(CategoryData::PathData()   //Static library paths for Applications category. Scanning data
+                           .insertr(CategoryData::Library,  QUrl::fromLocalFile(UBSettings::settings()->applicationApplicationsLibraryDirectory()))
+                           .insertr(CategoryData::UserDefined, QUrl::fromLocalFile(UBSettings::settings()->userApplicationDirectory()))
+                           //UBFeature represented Applications element
+                           , UBFeature(rootData.categoryFeature().getFullVirtualPath() + "/Applications"   //Virtual Path
+                                       ,QImage(":images/libpalette/ApplicationsCategory.svg")           //Icon
+                                       , tr("Applications")                                             //Translation name
+                                       , QUrl::fromLocalFile(UBSettings::settings()->
+                                                             applicationApplicationsLibraryDirectory())        //Main path in file system
+                                       , FEATURE_CATEGORY                                               //UBFeature's type
+                                       , UBFeature::NO_P)                                               //UBFeature's permissions
+                           //permissions for category subfolders. Scanning data
+                           , CategoryData::PermissionsData()
+                           .insertr(CategoryData::Library, UBFeature::NO_P)
+                           .insertr(CategoryData::UserDefined, UBFeature::WRITE_P | UBFeature::DELETE_P));
+
+    interactivityData = CategoryData(CategoryData::PathData() //Static library paths for Interactivities category. Scanning data
+                                     .insertr(CategoryData::Library,     QUrl::fromLocalFile(UBSettings::settings()->applicationInteractivesDirectory()))
+                                     .insertr(CategoryData::UserDefined, QUrl::fromLocalFile(UBSettings::settings()->userInteractiveDirectory()))
+                                     //UBFeature represented Interactivities element
+                                     , UBFeature(rootData.categoryFeature().getFullVirtualPath() + "/Interactivities"     //Virtual Path
+                                                 ,QImage(":images/libpalette/InteractivesCategory.svg")                //Icon
+                                                 , tr("Interactivities")                                               //Translation name
+                                                 , QUrl::fromLocalFile(UBSettings::settings()->
+                                                                       applicationInteractivesDirectory())             //Main path in file system
+                                                 , FEATURE_CATEGORY                                                    //UBFeature's type
+                                                 , UBFeature::NO_P)                                                    //UBFeature's permissions
+                                     //permissions for category subfolders. Scanning data
+                                     , CategoryData::PermissionsData()
+                                     .insertr(CategoryData::Library, UBFeature::NO_P)
+                                     .insertr(CategoryData::UserDefined, UBFeature::WRITE_P | UBFeature::DELETE_P));
+
+    shapesData = CategoryData(CategoryData::PathData() //Static library paths for Shapes category. Scanning data
+                              .insertr(CategoryData::Library, QUrl::fromLocalFile(UBSettings::settings()->applicationShapeLibraryDirectory()))
+                              //UBFeature represented Shapes element
+                              , UBFeature(rootData.categoryFeature().getFullVirtualPath() + "/Shapes"   //Virtual Path
+                                          ,QImage(":images/libpalette/ShapesCategory.svg")           //Icon
+                                          , tr("Shapes")                                             //Translation name
+                                          , QUrl::fromLocalFile(UBSettings::settings()->
+                                                                applicationShapeLibraryDirectory())  //Main path in file system
+                                          , FEATURE_CATEGORY                                         //UBFeature's type
+                                          , UBFeature::NO_P)                                         //UBFeature's permissions
+                              //permissions for category subfolders. Scanning data
+                              , CategoryData::PermissionsData()
+                              .insertr(CategoryData::Library, UBFeature::NO_P)
+                              .insertr(CategoryData::UserDefined, UBFeature::WRITE_P | UBFeature::DELETE_P));
+
+    favoriteData = CategoryData(CategoryData::PathData() //Static library paths for Favorites category. Scanning data
+                                //UBFeature represented Favorites element
+                                , UBFeature(rootData.categoryFeature().getFullVirtualPath() + "/Favorites"   //Virtual Path
+                                            ,QImage(":images/libpalette/FavoritesCategory.svg")           //Icon
+                                            , tr("Favorites")                                             //Translation name
+                                            , QUrl()                                                      //Main path in file system
+                                            , FEATURE_FAVORITE                                             //UBFeature's type
+                                            , UBFeature::NO_P)                                            //UBFeature's permissions
+                                //permissions for category subfolders. Scanning data
+                                , CategoryData::PermissionsData()
+                                .insertr(CategoryData::Library, UBFeature::NO_P)
+                                .insertr(CategoryData::UserDefined, UBFeature::NO_P));
+
+    webSearchData = CategoryData(CategoryData::PathData()  //Static library paths for Web search category. Scanning data
+                                 .insertr(CategoryData::Library, QUrl::fromLocalFile(UBSettings::settings()->userSearchDirectory()))
+                                 //UBFeature represented Web search element
+                                 , UBFeature(rootData.categoryFeature().getFullVirtualPath() + "/Web search"   //Virtual Path
+                                             ,QImage(":images/libpalette/WebSearchCategory.svg")            //Icon
+                                             , tr("Web search")                                             //Translation name
+                                             , QUrl::fromLocalFile(UBSettings::settings()->
+                                                                   userSearchDirectory())                   //Main path in file system
+                                             , FEATURE_CATEGORY                                             //UBFeature's type
+                                             , UBFeature::NO_P)                                             //UBFeature's permissions
+                                 //permissions for category subfolders. Scanning data
+                                 , CategoryData::PermissionsData()
+                                 .insertr(CategoryData::Library, UBFeature::WRITE_P | UBFeature::DELETE_P)
+                                 .insertr(CategoryData::UserDefined, UBFeature::WRITE_P | UBFeature::DELETE_P));
+
+
+    bookmarkData = CategoryData(CategoryData::PathData() //Path for incoming user web content.
+                                .insertr(CategoryData::Library, QUrl::fromLocalFile(UBSettings::settings()->userBookmarkDirectory()))
+                                //UBFeature represented Trash element
+                                , UBFeature(rootData.categoryFeature().getFullVirtualPath()
+                                            + "/Bookmarks"                //Virtual Path
+                                            , QImage(":images/libpalette/BookmarkCategory.svg")         //Icon
+                                            , tr("Bookmarks")                                             //Translation name
+                                            , QUrl::fromLocalFile(UBSettings::settings()->userBookmarkDirectory())  //Main path in file system
+                                            , FEATURE_CATEGORY                                      //UBFeature's type
+                                            , UBFeature::WRITE_P)                                   //UBFeature's permissions
+                                //permissions for category subfolders. Scanning data
+                                , CategoryData::PermissionsData()
+                                .insertr(CategoryData::Library, UBFeature::WRITE_P | UBFeature::DELETE_P)
+                                .insertr(CategoryData::UserDefined, UBFeature::WRITE_P | UBFeature::DELETE_P));
+
+    trashData = CategoryData(CategoryData::PathData() //Static library paths for Trash category. Scanning data
+                             .insertr(CategoryData::Library, QUrl::fromLocalFile(UBSettings::userTrashDirPath()))
+                             //UBFeature represented Trash element
+                             , UBFeature(rootData.categoryFeature().getFullVirtualPath() + "/Trash"   //Virtual Path
+                                         ,QImage(":images/libpalette/TrashCategory.svg")           //Icon
+                                         , tr("Trash")                                             //Translation name
+                                         , QUrl::fromLocalFile(UBSettings::userTrashDirPath())     //Main path in file system
+                                         , FEATURE_TRASH                                           //UBFeature's type
+                                         , UBFeature::WRITE_P)                                     //UBFeature's permissions
+                             //permissions for category subfolders. Scanning data
+                             , CategoryData::PermissionsData()
+                             .insertr(CategoryData::Library, UBFeature::WRITE_P | UBFeature::DELETE_P)
+                             .insertr(CategoryData::UserDefined, UBFeature::WRITE_P | UBFeature::DELETE_P));
+
+    webFolderData = CategoryData(CategoryData::PathData() //Path for incoming user web content.
+                                 .insertr(CategoryData::Library, QUrl::fromLocalFile(UBSettings::settings()->userWidgetPath()))
+                                 //UBFeature represented Trash element
+                                 , UBFeature(appData.categoryFeature().getFullVirtualPath()
+                                             + "/"
+                                             + UBSettings::userRelativeWidgetPath()                //Virtual Path
+                                             ,QImage(":images/libpalette/TrashCategory.svg")         //Icon
+                                             , tr("Web")                                             //Translation name
+                                             , QUrl::fromLocalFile(UBSettings::settings()->
+                                                                   userWidgetPath())                 //Main path in file system
+                                             , FEATURE_CATEGORY                                      //UBFeature's type
+                                             , UBFeature::WRITE_P)                                   //UBFeature's permissions
+                                 //permissions for category subfolders. Scanning data
+                                 , CategoryData::PermissionsData()
+                                 .insertr(CategoryData::Library, UBFeature::WRITE_P | UBFeature::DELETE_P)
+                                 .insertr(CategoryData::UserDefined, UBFeature::WRITE_P | UBFeature::DELETE_P));
+
+
+
+    extentionPermissionsCategoryData << webFolderData;
+}
+
+void UBFeaturesController::loadHardcodedItemsToModel()
 {
     featuresList->clear();
-    featuresList->append(rootElement);
-
-    *featuresList << audiosElement
-                    << moviesElement
-                    << picturesElement
-                    << flashElement
-                    << interactElement
-                    << applicationsElement
-                    << shapesElement
-                    << favoriteElement
-                    << webSearchElement
-                    << trashElement;
+    featuresList->append(rootData.categoryFeature());
+
+    *featuresList << audiosData.categoryFeature().markedWithSortKey("01")
+                    << moviesData.categoryFeature().markedWithSortKey("02")
+                    << picturesData.categoryFeature().markedWithSortKey("03")
+                    << flashData.categoryFeature().markedWithSortKey("04")
+                    << interactivityData.categoryFeature().markedWithSortKey("05")
+                    << appData.categoryFeature().markedWithSortKey("06")
+                    << shapesData.categoryFeature().markedWithSortKey("07")
+                    << favoriteData.categoryFeature().markedWithSortKey("08")
+                    << webSearchData.categoryFeature().markedWithSortKey("09")
+                    << bookmarkData.categoryFeature().markedWithSortKey("10")
+                    << trashData.categoryFeature().markedWithSortKey("11");
 
     //filling favoriteList
     loadFavoriteList();
@@ -423,97 +658,44 @@ void UBFeaturesController::scanFS()
     QList <UBToolsManager::UBToolDescriptor> tools = UBToolsManager::manager()->allTools();
 
     foreach (UBToolsManager::UBToolDescriptor tool, tools) {
-        featuresList->append(UBFeature(appPath + "/" + tool.label, tool.icon.toImage(), tool.label, QUrl(tool.id), FEATURE_INTERNAL));
+        featuresList->append(UBFeature(appData.categoryFeature().getFullVirtualPath() + "/" + tool.label, tool.icon.toImage(), tool.label, QUrl(tool.id), FEATURE_INTERNAL, UBFeature::NO_P));
         if (favoriteSet->find(QUrl(tool.id)) != favoriteSet->end()) {
-            featuresList->append(UBFeature(favoritePath + "/" + tool.label, tool.icon.toImage(), tool.label, QUrl(tool.id), FEATURE_INTERNAL));
+            featuresList->append(UBFeature(favoriteData.categoryFeature().getFullVirtualPath() + "/" + tool.label, tool.icon.toImage(), tool.label, QUrl(tool.id), FEATURE_INTERNAL, UBFeature::NO_P));
         }
     }
 }
-void UBFeaturesController::fileSystemScan(const QUrl & currentPath, const QString & currVirtualPath)
-{
-    QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(currentPath.toLocalFile());
-
-    QFileInfoList::iterator fileInfo;
-    for ( fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end(); fileInfo +=  1) {
-        QString fullFileName = fileInfo->absoluteFilePath();
-        UBFeatureElementType featureType = fileTypeFromUrl(fullFileName);
-        QString fileName = fileInfo->fileName();
-
-        QImage icon = getIcon(fullFileName, featureType);
-
-        if ( fullFileName.contains(".thumbnail."))
-            continue;
- 
-        UBFeature testFeature(currVirtualPath + "/" + fileName, icon, fileName, QUrl::fromLocalFile(fullFileName), featureType);
-
-        featuresList->append(testFeature);
-
-        if ( favoriteSet->find( QUrl::fromLocalFile( fullFileName ) ) != favoriteSet->end() ) {
-            featuresList->append( UBFeature( favoritePath + "/" + fileName, icon, fileName, QUrl::fromLocalFile( fullFileName ), featureType ) );
-		}
-
-        if (featureType == FEATURE_FOLDER) {
-            fileSystemScan(QUrl::fromLocalFile(fullFileName), currVirtualPath + "/" + fileName);
-		}
-    }
-}
-
-int UBFeaturesController::featuresCount(const QUrl &currPath)
-{
-    int noItems = 0;
-
-    QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(currPath.toLocalFile());
-
-    QFileInfoList::iterator fileInfo;
-    for ( fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end(); fileInfo +=  1) {
-        QString fullFileName = fileInfo->absoluteFilePath();
-        UBFeatureElementType featureType = fileTypeFromUrl(fullFileName);
-
-        if (featureType != FEATURE_INVALID && !fullFileName.contains(".thumbnail.")) {
-            noItems++;
-        } else {
-            continue;
-        }
-
-        if (featureType == FEATURE_FOLDER) {
-            noItems += featuresCount(QUrl::fromLocalFile(fullFileName));
-        }
-    }
-
-    return noItems;
-}
 
 void UBFeaturesController::loadFavoriteList()
 {
-	favoriteSet = new QSet<QUrl>();
-	QFile file( UBSettings::userDataDirectory() + "/favorites.dat" );
-	if ( file.exists() )
-	{
-		file.open(QIODevice::ReadOnly);
-		QDataStream in(&file);
-		int elementsNumber;
-		in >> elementsNumber;
-		for ( int i = 0; i < elementsNumber; ++i)
-		{
-			QUrl path;
-			in >> path;
+    favoriteSet = new QSet<QUrl>();
+    QFile file( UBSettings::userDataDirectory() + "/favorites.dat" );
+    if ( file.exists() )
+    {
+        file.open(QIODevice::ReadOnly);
+        QDataStream in(&file);
+        int elementsNumber;
+        in >> elementsNumber;
+        for ( int i = 0; i < elementsNumber; ++i)
+        {
+            QUrl path;
+            in >> path;
             favoriteSet->insert( path );
-		}
-	}
+        }
+    }
 }
 
 void UBFeaturesController::saveFavoriteList()
 {
-	QFile file( UBSettings::userDataDirectory() + "/favorites.dat" );
-	file.resize(0);
-	file.open(QIODevice::WriteOnly);
-	QDataStream out(&file);
-	out << favoriteSet->size();
-	for ( QSet<QUrl>::iterator it = favoriteSet->begin(); it != favoriteSet->end(); ++it )
-	{
-		out << (*it);
-	}
-	file.close();
+    QFile file( UBSettings::userDataDirectory() + "/favorites.dat" );
+    file.resize(0);
+    file.open(QIODevice::WriteOnly);
+    QDataStream out(&file);
+    out << favoriteSet->size();
+    for ( QSet<QUrl>::iterator it = favoriteSet->begin(); it != favoriteSet->end(); ++it )
+    {
+        out << (*it);
+    }
+    file.close();
 }
 
 QString UBFeaturesController::uniqNameForFeature(const UBFeature &feature, const QString &pName, const QString &pExtention) const
@@ -583,29 +765,28 @@ QString UBFeaturesController::adjustName(const QString &str)
 
 void UBFeaturesController::addToFavorite( const QUrl &path )
 {
-	QString filePath = fileNameFromUrl( path );
-	if ( favoriteSet->find( path ) == favoriteSet->end() )
-	{
-		QFileInfo fileInfo( filePath );
-		QString fileName = fileInfo.fileName();
-        UBFeatureElementType type = fileTypeFromUrl(filePath);
-        UBFeature elem(favoritePath + "/" + fileName, getIcon(filePath, type), fileName, path, fileTypeFromUrl(filePath) );
-		favoriteSet->insert( path );
-		saveFavoriteList();
+    QString filePath = fileNameFromUrl( path );
+    if ( favoriteSet->find( path ) == favoriteSet->end() )
+    {
+        QFileInfo fileInfo( filePath );
+        QString fileName = fileInfo.fileName();
+        UBFeatureElementType type = fileTypeFromUrl(fileInfo.absoluteFilePath());
+        UBFeature elem(favoriteData.categoryFeature().getFullVirtualPath() + "/" + fileName, getIcon(filePath, type), fileName, path, fileTypeFromUrl(filePath) );
+        favoriteSet->insert( path );
+        saveFavoriteList();
 
         if ( !elem.getVirtualPath().isEmpty() && !elem.getVirtualPath().isNull())
         featuresModel->addItem( elem );
-	}
+    }
 }
 
 void UBFeaturesController::removeFromFavorite( const QUrl &path, bool deleteManualy)
 {
-//	QString filePath = fileNameFromUrl( path );
-	if ( favoriteSet->find( path ) != favoriteSet->end() )
-	{
-		favoriteSet->erase( favoriteSet->find( path ) );
-		saveFavoriteList();
-	}
+    if ( favoriteSet->find( path ) != favoriteSet->end() )
+    {
+        favoriteSet->erase( favoriteSet->find( path ) );
+        saveFavoriteList();
+    }
 
     if (deleteManualy) {
         featuresModel->deleteFavoriteItem(path.toString());
@@ -614,10 +795,10 @@ void UBFeaturesController::removeFromFavorite( const QUrl &path, bool deleteManu
 
 QString UBFeaturesController::fileNameFromUrl( const QUrl &url )
 {
-	QString fileName = url.toString();
-	if ( fileName.contains( "uniboardTool://" ) )
-		return fileName;
-	return url.toLocalFile();
+    QString fileName = url.toString();
+    if ( fileName.contains( "uniboardTool://" ) )
+        return fileName;
+    return url.toLocalFile();
 }
 
 
@@ -650,13 +831,17 @@ UBFeatureElementType UBFeaturesController::fileTypeFromUrl(const QString &path)
         fileType = FEATURE_VIDEO;
     } else if (mimeString.contains("image")) {
         fileType = FEATURE_IMAGE;
+    } else if (mimeString.contains("bookmark")) {
+        fileType = FEATURE_BOOKMARK;
+    } else if (mimeString.contains("link")){
+        fileType = FEATURE_LINK;
     } else if (fileInfo.isDir()) {
         fileType = FEATURE_FOLDER;
     } else {
         fileType = FEATURE_INVALID;
     }
 
-	return fileType;
+    return fileType;
 }
 
 QImage UBFeaturesController::getIcon(const QString &path, UBFeatureElementType pFType = FEATURE_INVALID)
@@ -673,7 +858,12 @@ QImage UBFeaturesController::getIcon(const QString &path, UBFeatureElementType p
         return QImage(":images/libpalette/soundIcon.svg");
     } else if (pFType == FEATURE_VIDEO) {
         return QImage(":images/libpalette/movieIcon.svg");
-    } else if (pFType == FEATURE_IMAGE) {
+    } else if (pFType == FEATURE_BOOKMARK) {
+        return QImage(":images/libpalette/bookmarkIcon.svg");
+    } else if (pFType == FEATURE_LINK) {
+        return QImage(":images/trapFlashPalette/trappedIcon.svg");
+    }
+    else if (pFType == FEATURE_IMAGE) {
         QImage pix(path);
         if (pix.isNull()) {
             pix = QImage(":images/libpalette/notFound.png");
@@ -686,15 +876,6 @@ QImage UBFeaturesController::getIcon(const QString &path, UBFeatureElementType p
     return QImage(":images/libpalette/notFound.png");
 }
 
-bool UBFeaturesController::isDeletable( const QUrl &url )
-{
-    UBFeatureElementType type = fileTypeFromUrl(fileNameFromUrl(url));
-    return type == FEATURE_AUDIO
-            || type == FEATURE_VIDEO
-            || type == FEATURE_IMAGE
-            || type == FEATURE_ITEM;
-}
-
 QString UBFeaturesController::categoryNameForVirtualPath(const QString &str)
 {
     QString result;
@@ -710,11 +891,19 @@ QImage UBFeaturesController::createThumbnail(const QString &path)
     QString thumbnailPath = path;
     QString mimetype = UBFileSystemUtils::mimeTypeFromFileName(path);
 
-    if ( mimetype.contains("audio" )) {
+    if (mimetype.contains("audio" )) {
         thumbnailPath = ":images/libpalette/soundIcon.svg";
-    } else if ( mimetype.contains("video")) {
+    }
+    else if (mimetype.contains("video")) {
         thumbnailPath = ":images/libpalette/movieIcon.svg";
-    } else {
+    }
+    else if(mimetype.contains("bookmark")){
+        thumbnailPath = ":images/libpalette/bookmarkIcon.svg";
+    }
+    else if(mimetype.contains("link")){
+        thumbnailPath = ":images/trapFlashPalette/trappedIcon.svg";
+    }
+    else {
         QImage pix(path);
         if (!pix.isNull()) {
             pix = pix.scaledToWidth(qMin(UBSettings::maxThumbnailWidth, pix.width()), Qt::SmoothTransformation);
@@ -734,6 +923,76 @@ void UBFeaturesController::importImage(const QImage &image, const QString &fileN
     importImage(image, currentElement, fileName);
 }
 
+void UBFeaturesController::createBookmark(const QString& fileName, const QString &urlString)
+{
+	QString lFileName = UBFileSystemUtils::cleanName(fileName);
+	QString bookmarkDirectory = bookmarkData.categoryFeature().getFullPath().toLocalFile() + "/";
+    QString mFileName = bookmarkDirectory + lFileName + ".bkm";
+    int counter = 1;
+    while(QFileInfo(mFileName).exists()){
+        if(counter == 1)
+            mFileName=mFileName.replace(QString(".bkm"),"");
+        else
+            mFileName=mFileName.replace(QString("-%1.bkm").arg(counter++),"");
+        mFileName=mFileName.append(QString("-%1.bkm").arg(counter));
+    }
+
+    QFile file(mFileName);
+    file.open(QIODevice::WriteOnly | QIODevice::Text);
+    file.write(urlString.toAscii());
+    file.close();
+
+    QImage thumb = createThumbnail(mFileName);
+    UBFeature resultItem =  UBFeature(bookmarkData.categoryFeature().getFullVirtualPath() + "/" + mFileName.replace(bookmarkDirectory,""), thumb , mFileName, QUrl::fromLocalFile(mFileName), FEATURE_BOOKMARK );
+
+    featuresModel->addItem(resultItem);
+
+}
+
+void UBFeaturesController::createLink(const QString& fileName, const QString& urlString, QSize& size, QString mimeType, QString bEmbedCode)
+{
+    QString name = fileName;
+    if(name.indexOf(".") != -1)
+        name = name.left(name.indexOf("."));
+
+    CategoryData categoryData = getDestinationCategoryForMimeType((!mimeType.isNull() ? mimeType : UBFileSystemUtils::mimeTypeFromFileName(urlString)));
+    QString lFileName = categoryData.pathData().value(CategoryData::UserDefined).toLocalFile() + "/" + name + ".lnk";
+
+    int counter = 1;
+    while(QFileInfo(lFileName).exists()){
+        if(counter == 1)
+            lFileName=lFileName.replace(QString(".lnk"),"");
+        else
+            lFileName=lFileName.replace(QString("-%1.lnk").arg(counter++),"");
+        lFileName=lFileName.append(QString("-%1.lnk").arg(counter));
+    }
+
+    QFile file(lFileName);
+    file.open(QIODevice::WriteOnly | QIODevice::Text);
+
+    QXmlStreamWriter xmlWriter(&file);
+
+    xmlWriter.writeStartDocument();
+
+    xmlWriter.writeStartElement("link");
+
+    xmlWriter.writeTextElement("src", urlString);
+    xmlWriter.writeTextElement("width", QString("%1").arg(size.width()));
+    xmlWriter.writeTextElement("height", QString("%1").arg(size.height()));
+    xmlWriter.writeTextElement("html", bEmbedCode);
+
+    xmlWriter.writeEndElement();
+
+    xmlWriter.writeEndDocument();
+
+
+    file.close();
+
+    QImage thumb = createThumbnail(lFileName);
+    UBFeature resultItem =  UBFeature(categoryData.categoryFeature().getFullVirtualPath() + "/" + lFileName.replace(categoryData.pathData().value(CategoryData::UserDefined).toLocalFile() + "/",""), thumb , lFileName, QUrl::fromLocalFile(lFileName), FEATURE_LINK );
+
+    featuresModel->addItem(resultItem);
+}
 
 void UBFeaturesController::importImage( const QImage &image, const UBFeature &destination, const QString &fileName )
 {
@@ -744,24 +1003,19 @@ void UBFeaturesController::importImage( const QImage &image, const UBFeature &de
         QDateTime now = QDateTime::currentDateTime();
         static int imageCounter = 0;
         mFileName  = tr("ImportedImage") + "-" + now.toString("dd-MM-yyyy hh-mm-ss");
-        
-        filePath = dest.getFullPath().toLocalFile() + "/" + mFileName;
+
+        filePath = picturesData.pathData().value(CategoryData::UserDefined).toLocalFile() + "/" + mFileName;
 
         if (QFile::exists(filePath+".png"))
             mFileName += QString("-[%1]").arg(++imageCounter);
         else
             imageCounter = 0;
-        
-        mFileName += ".png";
-    }
-    
 
-    if ( !destination.getFullVirtualPath().startsWith( picturesElement.getFullVirtualPath(), Qt::CaseInsensitive ) )
-    {
-	    dest = picturesElement;
+        mFileName += ".png";
     }
 
-    filePath = dest.getFullPath().toLocalFile() + "/" + mFileName;
+    dest = picturesData.categoryFeature();
+    filePath = picturesData.pathData().value(CategoryData::UserDefined).toLocalFile() + "/" + mFileName;
     image.save(filePath);
 
     QImage thumb = createThumbnail( filePath );
@@ -796,6 +1050,19 @@ QStringList UBFeaturesController::getFileNamesInFolders()
 void UBFeaturesController::addNewFolder(QString name)
 {
     QString path = currentElement.getFullPath().toLocalFile() + "/" + name;
+	
+	if(currentElement.getFullVirtualPath() == audiosData.categoryFeature().getFullVirtualPath())
+		path = audiosData.pathData().value(CategoryData::UserDefined).toLocalFile() + "/" + name;
+	else if(currentElement.getFullVirtualPath() == moviesData.categoryFeature().getFullVirtualPath())
+		path = moviesData.pathData().value(CategoryData::UserDefined).toLocalFile() + "/" + name;
+	else if(currentElement.getFullVirtualPath() == picturesData.categoryFeature().getFullVirtualPath())
+		path = picturesData.pathData().value(CategoryData::UserDefined).toLocalFile() + "/" + name;
+	else if(currentElement.getFullVirtualPath() == flashData.categoryFeature().getFullVirtualPath())
+		path = flashData.pathData().value(CategoryData::UserDefined).toLocalFile() + "/" + name;
+	else if(currentElement.getFullVirtualPath() == interactivityData.categoryFeature().getFullVirtualPath())
+		path = interactivityData.pathData().value(CategoryData::UserDefined).toLocalFile() + "/" + name;
+	else if(currentElement.getFullVirtualPath() == appData.categoryFeature().getFullVirtualPath())
+		path = appData.pathData().value(CategoryData::UserDefined).toLocalFile() + "/" + name;
 
     if ("/root" == currentElement.getFullVirtualPath())
     {
@@ -804,7 +1071,7 @@ void UBFeaturesController::addNewFolder(QString name)
 
     if(!QFileInfo(path).exists()) {
         QDir().mkpath(path);
-	}
+    }
     UBFeature newFeatureFolder = UBFeature( currentElement.getFullVirtualPath() + "/" + name, QImage(":images/libpalette/folder.svg"),
                                             name, QUrl::fromLocalFile( path ), FEATURE_FOLDER );
 
@@ -822,61 +1089,92 @@ void UBFeaturesController::addItemAsBackground(const UBFeature &item)
     UBApplication::boardController->downloadURL( item.getFullPath(), QString(), QPointF(), QSize(), true );
 }
 
-UBFeature UBFeaturesController::getDestinationFeatureForUrl( const QUrl &url )
+CategoryData UBFeaturesController::getDestinationCategoryForUrl( const QUrl &url )
 {
     QString mimetype = UBFileSystemUtils::mimeTypeFromFileName( url.toString() );
-    return getDestinationFeatureForMimeType(mimetype);
+    return getDestinationCategoryForMimeType(mimetype);
 }
 
-UBFeature UBFeaturesController::getDestinationFeatureForMimeType(const QString &pMmimeType)
+CategoryData UBFeaturesController::getDestinationCategoryForMimeType(const QString &pMmimeType,const QUrl& sourceUrl)
 {
     if ( pMmimeType.contains("audio") )
-        return audiosElement;
+        return audiosData;
     if ( pMmimeType.contains("video") )
-        return moviesElement;
+        return moviesData;
     else if ( pMmimeType.contains("image") || pMmimeType.isEmpty())
-        return picturesElement;
+        return picturesData;
     else if ( pMmimeType.contains("application") )
     {
         if ( pMmimeType.contains( "x-shockwave-flash") )
-            return flashElement;
-        else
-            return interactElement;
+            return flashData;
+        else{
+            QString source = sourceUrl.toString();
+            if(source.length()){
+                if(source.contains("?type=application"))
+                    return appData;
+                else
+                    return interactivityData;
+            }
+            else
+                return webFolderData;
+        }
     }
-    return UBFeature();
+
+    return CategoryData();
+}
+
+QString UBFeaturesController::getFeaturePathByName(const QString &featureName) const
+{
+    QString videoPickerWidgetPath;
+    foreach (UBFeature curFeature, *featuresList)
+    {
+        if (curFeature.getName().contains(featureName))
+            videoPickerWidgetPath = curFeature.getFullPath().toLocalFile();
+    }
+    Q_ASSERT(!videoPickerWidgetPath.isEmpty());
+    return videoPickerWidgetPath;
 }
 
 void UBFeaturesController::addDownloadedFile(const QUrl &sourceUrl, const QByteArray &pData, const QString pContentSource, const QString pTitle)
 {
-    UBFeature dest = getDestinationFeatureForMimeType(pContentSource);
+    CategoryData destData = getDestinationCategoryForMimeType(pContentSource,sourceUrl);
+
+    if (destData.isNull()) {
+        return;
+    }
+
+    UBFeature dest = destData.categoryFeature();
 
     if (dest == UBFeature())
         return;
 
     QString fileName;
     QString filePath;
-	
-    //Audio item
-    if(dest == picturesElement) {
+
+    if(dest == picturesData.categoryFeature()) {
 
         QString UniqName = uniqNameForFeature(dest, adjustName(pTitle), ".jpg");
         fileName =  !UniqName.isNull()
                 ? UniqName
                 : tr("ImportedImage") + "-" + QDateTime::currentDateTime().toString("dd-MM-yyyy hh-mm-ss")+ ".jpg";
 
-        filePath = dest.getFullPath().toLocalFile() + "/" + fileName;
-
-        QImage::fromData(pData).save(filePath);
+        filePath = picturesData.pathData().value(CategoryData::UserDefined).toLocalFile() + "/" + fileName;
 
-        UBFeature downloadedFeature = UBFeature(dest.getFullVirtualPath() + "/" + fileName, getIcon( filePath, fileTypeFromUrl(filePath)),
-                                                 fileName, QUrl::fromLocalFile(filePath), FEATURE_ITEM);
-        if (downloadedFeature != UBFeature()) {
-            featuresModel->addItem(downloadedFeature);
+        QImage img;
+        img.loadFromData(pData);
+        importImage(img, fileName);
+    }
+    else {
+        QString url = sourceUrl.toString();
+        if(url.indexOf("?") != -1){
+            url = url.left(url.indexOf("?"));
+            fileName = pTitle.isEmpty() ? QFileInfo( url ).fileName() : pTitle;
+            filePath = QDir::tempPath() + "/" + QUuid::createUuid();
+        }
+        else{
+            fileName = pTitle.isEmpty() ? QFileInfo( url ).fileName() : pTitle;
+            filePath = destData.pathData().value(CategoryData::UserDefined).toLocalFile() + "/" + fileName;
         }
-
-    } else {
-        fileName = QFileInfo( sourceUrl.toString() ).fileName();
-        filePath = dest.getFullPath().toLocalFile() + "/" + fileName;
 
         QFile file( filePath );
         if ( file.open(QIODevice::WriteOnly ))
@@ -884,6 +1182,20 @@ void UBFeaturesController::addDownloadedFile(const QUrl &sourceUrl, const QByteA
             file.write(pData);
             file.close();
 
+            if(sourceUrl.toString().indexOf("?") != -1){
+                // this is a zipped widget extract it
+                filePath = QDir::tempPath() + "/" + fileName;
+                UBFileSystemUtils::expandZipToDir(file, QDir(filePath));
+                // check if it something like xxxx.wgt/xxx.wgt situation due to a wrong way to zip widgets
+                QStringList list = QDir(QDir::tempPath() + "/" + fileName).entryList(QDir::AllDirs | QDir::NoDotAndDotDot);
+                QString tmpWidgetDirectory = filePath;
+                if(list.count() == 1 && list.at(0).contains(".wgt"))
+                    tmpWidgetDirectory = filePath + "/" + list.at(0);
+                filePath = destData.pathData().value(CategoryData::UserDefined).toLocalFile() + "/" + fileName;
+                UBFileSystemUtils::copyDir(tmpWidgetDirectory, filePath);
+            }
+
+
             UBFeature downloadedFeature = UBFeature(dest.getFullVirtualPath() + "/" + fileName, getIcon( filePath, fileTypeFromUrl(filePath)),
                                                     fileName, QUrl::fromLocalFile(filePath), FEATURE_ITEM);
             if (downloadedFeature != UBFeature()) {
@@ -896,37 +1208,40 @@ void UBFeaturesController::addDownloadedFile(const QUrl &sourceUrl, const QByteA
 
 UBFeature UBFeaturesController::moveItemToFolder( const QUrl &url, const UBFeature &destination )
 {
-	/*UBFeature newElement = copyItemToFolder( url, destination );
-	deleteItem( url );
-	return newElement;*/
     QString sourcePath = url.toLocalFile();
 
-	Q_ASSERT( QFileInfo( sourcePath ).exists() );
+    Q_ASSERT( QFileInfo( sourcePath ).exists() );
+
+    CategoryData destData = getDestinationCategoryForUrl(url);
 
-    UBFeature possibleDest = getDestinationFeatureForUrl(url);
+    if (destData.isNull()) {
+        return UBFeature();
+    }
 
-	UBFeature dest = destination;
+    UBFeature possibleDest = destData.categoryFeature();
 
-	if ( destination != trashElement && 
-		!destination.getFullVirtualPath().startsWith( possibleDest.getFullVirtualPath(), Qt::CaseInsensitive ) )
-	{
-		dest = possibleDest;
-	}
+    UBFeature dest = destination;
 
-	QString name = QFileInfo( sourcePath ).fileName();
+    if ( destination != trashData.categoryFeature() &&
+        !destination.getFullVirtualPath().startsWith( possibleDest.getFullVirtualPath(), Qt::CaseInsensitive ) )
+    {
+        dest = possibleDest;
+    }
+
+    QString name = QFileInfo( sourcePath ).fileName();
     QString destPath = dest.getFullPath().toLocalFile();
-	QString destVirtualPath = dest.getFullVirtualPath();
-	QString newFullPath = destPath + "/" + name;
+    QString destVirtualPath = dest.getFullVirtualPath();
+    QString newFullPath = destPath + "/" + name;
     if ( sourcePath.compare( newFullPath, Qt::CaseInsensitive ) )
     {
-	    QFile( sourcePath ).copy( newFullPath );
+        QFile( sourcePath ).copy( newFullPath );
         deleteItem( url );
     }
 
     QImage thumb = getIcon( newFullPath );
-	
+
     UBFeatureElementType type = FEATURE_ITEM;
-	if ( UBFileSystemUtils::mimeTypeFromFileName( newFullPath ).contains("application") ) 
+    if ( UBFileSystemUtils::mimeTypeFromFileName( newFullPath ).contains("application") )
         type = FEATURE_INTERACTIVE;
     UBFeature newElement( destVirtualPath + "/" + name, thumb, name, QUrl::fromLocalFile( newFullPath ), type );
     return newElement;
@@ -937,7 +1252,7 @@ void UBFeaturesController::rescanModel()
     featuresModel->removeRows(0, featuresList->count());
 
     //Could implement infolder scanning for better perfomance
-    scanFS();
+    loadHardcodedItemsToModel();
     refreshModels();
 }
 
@@ -948,6 +1263,10 @@ void UBFeaturesController::siftElements(const QString &pSiftValue)
 
     featuresPathModel->setPath(pSiftValue);
     featuresPathModel->invalidate();
+
+    if (currentElement != rootData.categoryFeature()) {
+        featuresProxyModel->sort(0);
+    }
 }
 
 UBFeature UBFeaturesController::getFeature(const QModelIndex &index, const QString &listName)
@@ -1000,11 +1319,16 @@ UBFeature UBFeaturesController::copyItemToFolder( const QUrl &url, const UBFeatu
 
     Q_ASSERT( QFileInfo( sourcePath ).exists() );
 
-    UBFeature possibleDest = getDestinationFeatureForUrl( url );
+    CategoryData destData = getDestinationCategoryForUrl(url);
 
+    if (destData.isNull()) {
+        return UBFeature();
+    }
+
+    UBFeature possibleDest = destData.categoryFeature();
     UBFeature dest = destination;
 
-    if ( destination != trashElement &&
+    if ( destination != trashData.categoryFeature() &&
         !destination.getFullVirtualPath().startsWith( possibleDest.getFullVirtualPath(), Qt::CaseInsensitive ) )
     {
         dest = possibleDest;
@@ -1026,17 +1350,22 @@ UBFeature UBFeaturesController::copyItemToFolder( const QUrl &url, const UBFeatu
     return newElement;
 }
 
-void UBFeaturesController::moveExternalData(const QUrl &url, const UBFeature &destination)
+QString UBFeaturesController::moveExternalData(const QUrl &url, const UBFeature &destination)
 {
     QString sourcePath = url.toLocalFile();
 
-    Q_ASSERT( QFileInfo( sourcePath ).exists() );
+    Q_ASSERT( QFileInfo(sourcePath ).exists());
 
-    UBFeature possibleDest = getDestinationFeatureForUrl(url);
+    CategoryData destData = getDestinationCategoryForUrl(url);
 
+    if (destData.isNull()) {
+        return QString();
+    }
+
+    UBFeature possibleDest = destData.categoryFeature();
     UBFeature dest = destination;
 
-    if ( destination != trashElement && destination != UBFeature()
+    if ( destination != trashData.categoryFeature() && destination != UBFeature()
        /*&& !destination.getFullVirtualPath().startsWith( possibleDest.getFullVirtualPath(), Qt::CaseInsensitive )*/ )
     {
         dest = possibleDest;
@@ -1045,16 +1374,24 @@ void UBFeaturesController::moveExternalData(const QUrl &url, const UBFeature &de
     UBFeatureElementType type = fileTypeFromUrl(sourcePath);
 
     if (type == FEATURE_FOLDER) {
-        return;
+        return QString();
     }
 
     QString name = QFileInfo(sourcePath).fileName();
     QString destPath = dest.getFullPath().toLocalFile();
-    QString destVirtualPath = dest.getFullVirtualPath();
+    
+	if(dest == picturesData.categoryFeature())
+        destPath =  picturesData.pathData().value(CategoryData::UserDefined).toLocalFile();
+    if(dest == audiosData.categoryFeature())
+        destPath =  audiosData.pathData().value(CategoryData::UserDefined).toLocalFile();
+	if(dest == moviesData.categoryFeature())
+        destPath =  moviesData.pathData().value(CategoryData::UserDefined).toLocalFile();
+    
+	QString destVirtualPath = dest.getFullVirtualPath();
     QString newFullPath = destPath + "/" + name;
 
     if (!sourcePath.compare(newFullPath, Qt::CaseInsensitive) || !UBFileSystemUtils::copy(sourcePath, newFullPath)) {
-        return;
+        return QString();
     }
 
     Q_ASSERT(QFileInfo(newFullPath).exists());
@@ -1063,6 +1400,8 @@ void UBFeaturesController::moveExternalData(const QUrl &url, const UBFeature &de
     UBFeature newElement(destVirtualPath + "/" + name, thumb, name, QUrl::fromLocalFile(newFullPath), type);
 
     featuresModel->addItem(newElement);
+
+    return newFullPath;
 }
 
 void UBFeaturesController::deleteItem(const QUrl &url)
@@ -1070,7 +1409,7 @@ void UBFeaturesController::deleteItem(const QUrl &url)
     QString path = url.toLocalFile();
     Q_ASSERT( QFileInfo( path ).exists() );
 
-	QString thumbnailPath = UBFileSystemUtils::thumbnailPath( path );
+    QString thumbnailPath = UBFileSystemUtils::thumbnailPath( path );
     if ( thumbnailPath.length() && QFileInfo( thumbnailPath ).exists()) {
         if (QFileInfo(thumbnailPath).isFile()) {
             QFile::remove(thumbnailPath);
@@ -1097,12 +1436,12 @@ void UBFeaturesController::deleteItem(const UBFeature &pFeature)
 
 bool UBFeaturesController::isTrash( const QUrl &url )
 {
-    return url.toLocalFile().startsWith( trashDirectoryPath.toLocalFile() );
+    return url.toLocalFile().startsWith(trashData.categoryFeature().getFullPath().toLocalFile());
 }
 void UBFeaturesController::moveToTrash(UBFeature feature, bool deleteManualy)
 {
-    featuresModel->moveData(feature, trashElement, Qt::MoveAction, deleteManualy);
-    removeFromFavorite(feature.getFullPath());
+    featuresModel->moveData(feature, trashData.categoryFeature(), Qt::MoveAction, deleteManualy);
+    removeFromFavorite(feature.getFullPath(), true);
     featuresModel->deleteFavoriteItem(UBFeaturesController::fileNameFromUrl(feature.getFullPath()));
 }
 
diff --git a/Sankore-3.1/src/board/UBFeaturesController.h b/Sankore-3.1/src/board/UBFeaturesController.h
index b4fe887..4dcf89d 100644
--- a/Sankore-3.1/src/board/UBFeaturesController.h
+++ b/Sankore-3.1/src/board/UBFeaturesController.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBFEATURESCONTROLLER_H
 #define UBFEATURESCONTROLLER_H
 
@@ -49,46 +50,6 @@ class UBFeaturesListView;
 class UBFeature;
 
 
-class UBFeaturesComputingThread : public QThread
-{
-    Q_OBJECT
-public:
-    explicit UBFeaturesComputingThread(QObject *parent = 0);
-    virtual ~UBFeaturesComputingThread();
-        void compute(const QList<QPair<QUrl, UBFeature> > &pScanningData, QSet<QUrl> *pFavoritesSet);
-
-protected:
-    void run();
-
-signals:
-    void sendFeature(UBFeature pFeature);
-    void featureSent();
-    void scanStarted();
-    void scanFinished();
-    void maxFilesCountEvaluated(int max);
-    void scanCategory(const QString &str);
-    void scanPath(const QString &str);
-
-public slots:
-
-private:
-    void scanFS(const QUrl & currentPath, const QString & currVirtualPath, const QSet<QUrl> &pFavoriteSet);
-    void scanAll(QList<QPair<QUrl, UBFeature> > pScanningData, const QSet<QUrl> &pFavoriteSet);
-    int featuresCount(const QUrl &pPath);
-    int featuresCountAll(QList<QPair<QUrl, UBFeature> > pScanningData);
-
-private:
-    QMutex mMutex;
-    QWaitCondition mWaitCondition;
-    QUrl mScanningPath;
-    QString mScanningVirtualPath;
-    QList<QPair<QUrl, UBFeature> > mScanningData;
-    QSet<QUrl> mFavoriteSet;
-    bool restart;
-    bool abort;
-};
-
-
 enum UBFeatureElementType
 {
     FEATURE_CATEGORY,
@@ -104,37 +65,60 @@ enum UBFeatureElementType
     FEATURE_TRASH,
     FEATURE_FAVORITE,
     FEATURE_SEARCH,
+    FEATURE_BOOKMARK,
+    FEATURE_LINK,
     FEATURE_INVALID
 };
 
 class UBFeature
 {
 public:
+    enum Permission {
+        NO_P      = 0x0  //0000
+        ,DELETE_P = 0x1  //0001
+        , WRITE_P = 0x2  //0010
+        , ALL_P   = 0xF  //1111
+    };
+    Q_DECLARE_FLAGS(Permissions, Permission)
+
     UBFeature() {;}
 //    UBFeature(const UBFeature &f);
-    UBFeature(const QString &url, const QImage &icon, const QString &name, const QUrl &realPath, UBFeatureElementType type = FEATURE_CATEGORY);
+    UBFeature(const QString &url
+              , const QImage &icon
+              , const QString &name
+              , const QUrl &realPath
+              , UBFeatureElementType type = FEATURE_CATEGORY
+              , Permissions pOwnPermissions = ALL_P
+              , QString pSortKey = QString());
 //    UBFeature();
     virtual ~UBFeature();
     QString getName() const { return mName; }
     QString getDisplayName() const {return mDisplayName;}
     QImage getThumbnail() const {return mThumbnail;}
     QString getVirtualPath() const { return virtualDir; }
-	//QString getPath() const { return mPath; };
+    //QString getPath() const { return mPath; };
     QUrl getFullPath() const { return mPath; }
     QString getFullVirtualPath() const { return  virtualDir + "/" + mName; }
-	QString getUrl() const;
+    QString getUrl() const;
+    QString getSortKey() const {return mSortKey;}
     void setFullPath(const QUrl &newPath) {mPath = newPath;}
     void setFullVirtualPath(const QString &newVirtualPath) {virtualDir = newVirtualPath;}
     UBFeatureElementType getType() const { return elementType; }
+    UBFeature &markedWithSortKey(const QString &str);
 
-	bool isFolder() const;
+    bool isFolder() const;
     bool allowedCopy() const;
-	bool isDeletable() const;
+    bool isDeletable() const;
     bool inTrash() const;
-	bool operator ==( const UBFeature &f )const;
-	bool operator !=( const UBFeature &f )const;
-	const QMap<QString,QString> & getMetadata() const { return metadata; }
-	void setMetadata( const QMap<QString,QString> &data ) { metadata = data; }
+    Permissions getPermissions() const {return mOwnPermissions;}
+    bool testPermissions(Permissions pPermissions) const {return mOwnPermissions & pPermissions;}
+    void setPermissions(Permissions pPermissions) {mOwnPermissions = pPermissions;}
+    void addPermissions(Permissions pPermissions) {mOwnPermissions |= pPermissions;}
+    void unsetPermissions(Permissions pPermissions) {mOwnPermissions &= ~pPermissions;}
+    bool operator ==( const UBFeature &f )const;
+    bool operator !=( const UBFeature &f )const;
+    const QMap<QString,QString> & getMetadata() const { return metadata; }
+    void setMetadata( const QMap<QString,QString> &data ) { metadata = data; }
 
 
 private:
@@ -147,11 +131,132 @@ private:
     QImage mThumbnail;
     QString mName;
     QString mDisplayName;
-	QUrl mPath;
+    QUrl mPath;
     UBFeatureElementType elementType;
     QMap<QString,QString> metadata;
+    Permissions mOwnPermissions;
+    QString mSortKey;
 };
 Q_DECLARE_METATYPE( UBFeature )
+Q_DECLARE_OPERATORS_FOR_FLAGS(UBFeature::Permissions)
+
+//Describe files in virtual file system
+struct ComputingData
+{
+    ComputingData (const QUrl &pPath, UBFeature pFeature,UBFeature::Permissions pPermissions)
+        : path(pPath)
+        , feature(pFeature)
+        , permissions(pPermissions)
+    {;}
+    ComputingData() {;}
+
+    QUrl path;
+    //Permissions for all subdirectories
+    UBFeature feature;
+    UBFeature::Permissions permissions;
+};
+
+
+
+// Data class containing all the data about hardcoded items from library palette
+struct CategoryData
+{
+    enum pathType {
+        Library = 0
+        , UserDefined = 1
+    };
+    CategoryData() : mIsNull(true) {;}
+
+    struct PathData : public QMultiMap<pathType, QUrl>
+    {
+        PathData& insertr (pathType pType, QUrl pUrl) {
+            insertMulti(pType, pUrl);
+            return *this;
+        }
+    };
+
+    struct PermissionsData : public QMap<pathType, UBFeature::Permissions>
+    {
+        PermissionsData& insertr (pathType pType, UBFeature::Permissions pPermissions) {
+            insert(pType, pPermissions);
+            return *this;
+        }
+    };
+
+    CategoryData (const PathData &pPathData
+                  , UBFeature pFeature
+                  , PermissionsData psubFolderPermissions)
+        : mPathData(pPathData)
+        , mCategoryFeature(pFeature)
+        , mSubFolderPermissions(psubFolderPermissions)
+        , mIsNull(false)
+    {;}
+
+    PathData pathData() const {return mPathData;}
+    UBFeature categoryFeature() const {return mCategoryFeature;}
+//    UBFeature::Permissions subFolderPermissions() const {return mSubFolderPermissions;}
+    UBFeature::Permissions librarySubPermissions() const {return mSubFolderPermissions.value(Library, UBFeature::ALL_P);}
+    UBFeature::Permissions UserSubPermissions() const {return mSubFolderPermissions.value(UserDefined, UBFeature::ALL_P);}
+    UBFeature::Permissions subFolderPermissionsForType(pathType pType) const {return mSubFolderPermissions.value(pType, UBFeature::ALL_P);}
+    bool isNull() const {return mIsNull;}
+
+private:
+    PathData mPathData;
+    //Permissions for all subdirectories
+    UBFeature mCategoryFeature;
+//    UBFeature::Permissions mSubFolderPermissions;
+    PermissionsData mSubFolderPermissions;
+    bool mIsNull;
+};
+
+class UBFeaturesComputingThread : public QThread
+{
+    Q_OBJECT
+public:
+    explicit UBFeaturesComputingThread(QObject *parent = 0);
+    virtual ~UBFeaturesComputingThread();
+    void compute(const QList<CategoryData> &pcategoryList, const QPair<CategoryData, QSet<QUrl> > &pFavoriteInfo, const QList<CategoryData> &extData);
+
+protected:
+    void run();
+
+signals:
+    void sendFeature(UBFeature pFeature);
+    void featureSent();
+    void scanStarted();
+    void scanFinished();
+    void maxFilesCountEvaluated(int max);
+    void scanCategory(const QString &str);
+    void scanPath(const QString &str);
+
+public slots:
+
+private:
+    void scanFS(const QUrl & currentPath
+                , const QString & currVirtualPath
+                , const QPair<CategoryData, QSet<QUrl> > &pfavoriteInfo
+                , UBFeature::Permissions pPermissions
+                , const QList<CategoryData> &extData);
+    void scanAll(QList<CategoryData> pScanningData
+                 , const QPair<CategoryData
+                 , QSet<QUrl> > &pFavoriteInfo
+                 , const QList<CategoryData> &extData);
+    int featuresCount(const QUrl &pPath);
+    int featuresCountAll(QList<CategoryData> pScanningData);
+
+private:
+    QMutex mMutex;
+    QWaitCondition mWaitCondition;
+    QUrl mScanningPath;
+    QString mScanningVirtualPath;
+    QList<CategoryData> mScanningData;
+    QList<CategoryData> mExceptionData;
+    QPair<CategoryData, QSet<QUrl> > mFavoriteInfo;
+    bool restart;
+    bool abort;
+};
+
+
 
 class UBFeaturesController : public QObject
 {
@@ -160,25 +265,27 @@ friend class UBFeaturesWidget;
 Q_OBJECT
 
 public:
-	UBFeaturesController(QWidget *parentWidget);
+    UBFeaturesController(QWidget *parentWidget);
     virtual ~UBFeaturesController();
 
     QList <UBFeature>* getFeatures() const {return featuresList;}
-	
-    const QString& getRootPath()const {return rootPath;}
-    void scanFS();
+
+    void initHardcodedData();
+    void loadHardcodedItemsToModel();
 
     void addItemToPage(const UBFeature &item);
     void addItemAsBackground(const UBFeature &item);
     const UBFeature& getCurrentElement()const {return currentElement;}
     void setCurrentElement( const UBFeature &elem ) {currentElement = elem;}
-	const UBFeature & getTrashElement () const { return trashElement; }
+    UBFeature getTrashElement () const { return trashData.categoryFeature(); }
+    UBFeature getBookmarkElement() const {return bookmarkData.categoryFeature();}
+    UBFeature getRootElement() const {return rootData.categoryFeature();}
 
     void addDownloadedFile( const QUrl &sourceUrl, const QByteArray &pData, const QString pContentSource, const QString pTitle );
 
-	UBFeature moveItemToFolder( const QUrl &url, const UBFeature &destination );
-	UBFeature copyItemToFolder( const QUrl &url, const UBFeature &destination );
-    void moveExternalData(const QUrl &url, const UBFeature &destination);
+    UBFeature moveItemToFolder( const QUrl &url, const UBFeature &destination );
+    UBFeature copyItemToFolder( const QUrl &url, const UBFeature &destination );
+    QString moveExternalData(const QUrl &url, const UBFeature &destination);
 
     void rescanModel();
     void siftElements(const QString &pSiftValue);
@@ -187,23 +294,23 @@ public:
     void searchStarted(const QString &pattern, QListView *pOnView);
     void refreshModels();
 
-	void deleteItem( const QUrl &url );
+    void deleteItem( const QUrl &url );
     void deleteItem(const UBFeature &pFeature);
-	bool isTrash( const QUrl &url );
+    bool isTrash( const QUrl &url );
     void moveToTrash(UBFeature feature, bool deleteManualy = false);
     void addToFavorite( const QUrl &path );
     void removeFromFavorite(const QUrl &path, bool deleteManualy = false);
     void importImage(const QImage &image, const QString &fileName = QString());
     void importImage( const QImage &image, const UBFeature &destination, const QString &fileName = QString() );
+    void createBookmark(const QString& fileName, const QString &urlString);
+    void createLink(const QString& fileName, const QString& urlString, QSize &size, QString mimeType, QString bEmbedCode);
+    bool newFolderAllowed() const {return currentElement.isFolder() && currentElement.testPermissions(UBFeature::WRITE_P);}
     QStringList getFileNamesInFolders();
 
-    void fileSystemScan(const QUrl &currPath, const QString & currVirtualPath);
-    int featuresCount(const QUrl &currPath);
     static UBFeatureElementType fileTypeFromUrl( const QString &path );
 
-	static QString fileNameFromUrl( const QUrl &url );
+    static QString fileNameFromUrl( const QUrl &url );
     static QImage getIcon( const QString &path, UBFeatureElementType pFType );
-	static bool isDeletable( const QUrl &url );
     static char featureTypeSplitter() {return ':';}
     static QString categoryNameForVirtualPath(const QString &str);
 
@@ -213,17 +320,23 @@ public:
     void assignPathListView(UBFeaturesListView *pList);
 
 public:
-    static const QString rootPath;
-    static const QString audiosPath;
-    static const QString moviesPath;
-    static const QString picturesPath;
-    static const QString appPath;
-    static const QString flashPath;
-    static const QString shapesPath;
-    static const QString interactPath;
-    static const QString trashPath;
-    static const QString favoritePath;
-    static const QString webSearchPath;
+    //Hardcoded toplevel data
+    CategoryData rootData;
+    CategoryData audiosData;
+    CategoryData moviesData;
+    CategoryData picturesData;
+    CategoryData appData;
+    CategoryData flashData;
+    CategoryData shapesData;
+    CategoryData interactivityData;
+    CategoryData favoriteData;
+    CategoryData webSearchData;
+    CategoryData trashData;
+    CategoryData webFolderData;
+    CategoryData bookmarkData;
+
+    QList<CategoryData> topLevelCategoryData;
+    QList<CategoryData> extentionPermissionsCategoryData;
 
 signals:
     void maxFilesCountEvaluated(int pLimit);
@@ -235,7 +348,7 @@ signals:
 
 private slots:
     void addNewFolder(QString name);
-    void startThread();
+    void scanFS();
     void createNpApiFeature(const QString &str);
 
 private:
@@ -254,54 +367,23 @@ private:
 private:
 
     static QImage createThumbnail(const QString &path);
-	//void addImageToCurrentPage( const QString &path );
-	void loadFavoriteList();
-	void saveFavoriteList();
+    //void addImageToCurrentPage( const QString &path );
+    void loadFavoriteList();
+    void saveFavoriteList();
     QString uniqNameForFeature(const UBFeature &feature, const QString &pName = "Imported", const QString &pExtention = "") const;
     QString adjustName(const QString &str);
 
     QList <UBFeature> *featuresList;
 
-	QUrl mUserAudioDirectoryPath;
-    QUrl mUserVideoDirectoryPath;
-    QUrl mUserPicturesDirectoryPath;
-    QUrl mUserInteractiveDirectoryPath;
-    QUrl mUserAnimationDirectoryPath;
-
-	QString libraryPath;
-    QUrl mLibPicturesDirectoryPath;
-	QUrl mLibAudiosDirectoryPath;
-	QUrl mLibVideosDirectoryPath;
-    QUrl mLibInteractiveDirectoryPath;
-    QUrl mLibAnimationsDirectoryPath;
-	QUrl mLibApplicationsDirectoryPath;
-	QUrl mLibShapesDirectoryPath;
-
-	QUrl trashDirectoryPath;
-	QUrl mLibSearchDirectoryPath;
-
-
-
-	int mLastItemOffsetIndex;
-	UBFeature currentElement;
-
-    UBFeature rootElement;
-    UBFeature favoriteElement;
-	UBFeature audiosElement;
-	UBFeature moviesElement;
-	UBFeature picturesElement;
-	UBFeature interactElement;
-    UBFeature applicationsElement;
-	UBFeature flashElement;
-	UBFeature shapesElement;
-	UBFeature webSearchElement;
+    int mLastItemOffsetIndex;
+    UBFeature currentElement;
 
-	QSet <QUrl> *favoriteSet;
+    QSet <QUrl> *favoriteSet;
 
 public:
-    UBFeature trashElement;
-    UBFeature getDestinationFeatureForUrl( const QUrl &url );
-    UBFeature getDestinationFeatureForMimeType(const QString &pMmimeType);
+    CategoryData getDestinationCategoryForUrl( const QUrl &url );
+    CategoryData getDestinationCategoryForMimeType(const QString &pMmimeType, const QUrl &sourceUrl = QUrl());
+    QString getFeaturePathByName(const QString &featureName) const;
 
 };
 
diff --git a/Sankore-3.1/src/core/UB.h b/Sankore-3.1/src/core/UB.h
index 66ac810..97b4ed2 100644
--- a/Sankore-3.1/src/core/UB.h
+++ b/Sankore-3.1/src/core/UB.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UB_H_
 #define UB_H_
 
@@ -41,6 +42,9 @@ struct UBMimeType
         PDF,
         UniboardTool,
         Group,
+        Bookmark,
+        Link,
+        Web,
         UNKNOWN
     };
 };
@@ -49,18 +53,18 @@ struct UBStylusTool
 {
     enum Enum
     {
-        Pen = 0, 
-		Eraser, 
- 		Marker, 
-		Selector, 
+        Pen = 0,
+        Eraser,
+        Marker,
+        Selector,
         Play,
-		Hand, 
-		ZoomIn, 
-		ZoomOut, 
-		Pointer, 
-		Line, 
-		Text, 
-		Capture
+        Hand,
+        ZoomIn,
+        ZoomOut,
+        Pointer,
+        Line,
+        Text,
+        Capture
     };
 };
 
@@ -137,19 +141,19 @@ struct UBGraphicsItemType
 {
     enum Enum
     {
-        PolygonItemType = QGraphicsItem::UserType + 1, 
-		PixmapItemType,
-        SvgItemType, 
+        PolygonItemType = QGraphicsItem::UserType + 1,
+        PixmapItemType,
+        SvgItemType,
         DelegateButtonType,
-		MediaItemType, 
-		PDFItemType, 
-		TextItemType,
-		CurtainItemType,
-        RulerItemType, 
-		CompassItemType, 
-		ProtractorItemType, 
-		StrokeItemType,
-		TriangleItemType,
+        MediaItemType,
+        PDFItemType,
+        TextItemType,
+        CurtainItemType,
+        RulerItemType,
+        CompassItemType,
+        ProtractorItemType,
+        StrokeItemType,
+        TriangleItemType,
         MagnifierItemType,
         cacheItemType,
         AristoItemType,
diff --git a/Sankore-3.1/src/core/UBApplication.cpp b/Sankore-3.1/src/core/UBApplication.cpp
index 1d2f966..97c2a32 100644
--- a/Sankore-3.1/src/core/UBApplication.cpp
+++ b/Sankore-3.1/src/core/UBApplication.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBApplication.h"
 
 #include <QtGui>
@@ -227,14 +228,11 @@ void UBApplication::setupTranslators(QStringList args)
     QString forcedLanguage("");
     if(args.contains("-lang"))
         forcedLanguage=args.at(args.indexOf("-lang") + 1);
-// TODO claudio: this has been commented because some of the translation seem to be loaded at this time
-//               especially tools name. This is a workaround and we have to be able to load settings without
-//               impacting the translations
-//    else{
-//        QString setLanguage = UBSettings::settings()->appPreferredLanguage->get().toString();
-//        if(!setLanguage.isEmpty())
-//            forcedLanguage = setLanguage;
-//    }
+    else{
+        QString setLanguage = UBSettings::settings()->appPreferredLanguage->get().toString();
+        if(!setLanguage.isEmpty())
+            forcedLanguage = setLanguage;
+    }
 
     QString language("");
 
@@ -275,6 +273,8 @@ void UBApplication::setupTranslators(QStringList args)
 
     QLocale::setDefault(QLocale(language));
     qDebug() << "Running application in:" << language;
+    //Claudio: hack to avoid the lost of translations.
+    UBSettings::settings()->init();
 }
 
 int UBApplication::exec(const QString& pFileToImport)
@@ -308,9 +308,7 @@ int UBApplication::exec(const QString& pFileToImport)
 
     connect(mainWindow->actionBoard, SIGNAL(triggered()), this, SLOT(showBoard()));
     connect(mainWindow->actionWeb, SIGNAL(triggered()), this, SLOT(showInternet()));
-    connect(mainWindow->actionWeb, SIGNAL(triggered()), this, SLOT(stopScript()));
     connect(mainWindow->actionDocument, SIGNAL(triggered()), this, SLOT(showDocument()));
-    connect(mainWindow->actionDocument, SIGNAL(triggered()), this, SLOT(stopScript()));
     connect(mainWindow->actionQuit, SIGNAL(triggered()), this, SLOT(closing()));
     connect(mainWindow, SIGNAL(closeEvent_Signal(QCloseEvent*)), this, SLOT(closeEvent(QCloseEvent*)));
 
@@ -351,7 +349,6 @@ int UBApplication::exec(const QString& pFileToImport)
 
     connect(mainWindow->actionPreferences, SIGNAL(triggered()), mPreferencesController, SLOT(show()));
     connect(mainWindow->actionTutorial, SIGNAL(triggered()), applicationController, SLOT(showTutorial()));
-    connect(mainWindow->actionTutorial, SIGNAL(triggered()), this, SLOT(stopScript()));
     connect(mainWindow->actionSankoreEditor, SIGNAL(triggered()), applicationController, SLOT(showSankoreEditor()));
     connect(mainWindow->actionCheckUpdate, SIGNAL(triggered()), applicationController, SLOT(checkUpdateRequest()));
 
@@ -426,17 +423,21 @@ void UBApplication::stopScript()
 void UBApplication::showBoard()
 {
     applicationController->showBoard();
+    boardController->paletteManager()->featuresWidget()->switchToRoot();
 }
 
 void UBApplication::showInternet()
 {
     applicationController->showInternet();
     webController->showTabAtTop(true);
+    boardController->paletteManager()->featuresWidget()->switchToBookmarks();
+    stopScript();
 }
 
 void UBApplication::showDocument()
 {
     applicationController->showDocument();
+    startScript();
 }
 
 int UBApplication::toolBarHeight()
diff --git a/Sankore-3.1/src/core/UBApplication.h b/Sankore-3.1/src/core/UBApplication.h
index dc72c3a..0c9a355 100644
--- a/Sankore-3.1/src/core/UBApplication.h
+++ b/Sankore-3.1/src/core/UBApplication.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,155 +18,156 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBAPPLICATION_H_
-#define UBAPPLICATION_H_
-
-#include <QtGui>
-
-#include "qtsingleapplication.h"
-
-#include "transition/UniboardSankoreTransition.h"
-
-namespace Ui
-{
-    class MainWindow;
-}
-
-
-class UBBoardController;
-class UBWebController;
-class UBControlView;
-class UBPreferencesController;
-class UBResources;
-class UBSettings;
-class UBPersistenceManager;
-class UBApplicationController;
-class UBDocumentController;
-class UBMainWindow;
-
-class UBApplication : public QtSingleApplication
-{
-    Q_OBJECT;
-
-    public:
-
-        UBApplication(const QString &id, int &argc, char **argv);
-        virtual ~UBApplication();
-
-        int exec(const QString& pFileToImport);
-
-		void cleanup();
-
-        static QPointer<QUndoStack> undoStack;
-
-        static UBApplicationController *applicationController;
-        static UBBoardController* boardController;
-        static UBWebController* webController;
-        static UBDocumentController* documentController;
-        static UniboardSankoreTransition* mUniboardSankoreTransition;
-
-        static UBMainWindow* mainWindow;
-
-        static UBApplication* app()
-        {
-            return static_cast<UBApplication*>qApp;
-        }
-
-        static const QString mimeTypeUniboardDocument;
-        static const QString mimeTypeUniboardPage;
-        static const QString mimeTypeUniboardPageItem;
-        static const QString mimeTypeUniboardPageThumbnail;
-
-        static void showMessage(const QString& message, bool showSpinningWheel = false);
-        static void setDisabled(bool disable);
-
-        static QObject* staticMemoryCleaner;
-
-        void decorateActionMenu(QAction* action);
-        void insertSpaceToToolbarBeforeAction(QToolBar* toolbar, QAction* action, int width = -1);
-
-        int toolBarHeight();
-        bool eventFilter(QObject *obj, QEvent *event);
-
-        bool isVerbose() { return mIsVerbose;}
-        void setVerbose(bool verbose){mIsVerbose = verbose;}
-        static QString urlFromHtml(QString html);
-        static bool isFromWeb(QString url);
-
-    signals:
-
-    public slots:
-
-        void showBoard();
-        void showInternet();
-        void showDocument();
-        void startScript();
-        void stopScript();
-
-        void toolBarPositionChanged(QVariant topOrBottom);
-        void toolBarDisplayTextChanged(QVariant display);
-
-        void closeEvent(QCloseEvent *event);
-
-        /**
-         * Used on Windows platform to open file in running application. On MacOS X opening file is done through the
-         * FileOpen event that is handle in eventFilter method.
-         */
-        bool handleOpenMessage(const QString& pMessage);
-
-    private slots:
-
-        void closing();
-#ifdef Q_WS_MAC
-        void showMinimized();
-#endif
-        void importUniboardFiles();
-
-        void onScreenCountChanged(int newCount);
-
-    private:
-        void updateProtoActionsState();
-        void setupTranslators(QStringList args);
-        QList<QMenu*> mProtoMenus;
-        bool mIsVerbose;
-        QString checkLanguageAvailabilityForSankore(QString& language);
-    protected:
-
-#if defined(Q_WS_MACX) && !defined(QT_MAC_USE_COCOA)
-        bool macEventFilter(EventHandlerCallRef caller, EventRef event);
-#endif
-
-        UBPreferencesController* mPreferencesController;
-        QTranslator* mApplicationTranslator;
-        QTranslator* mQtGuiTranslator;
-
-};
-
-
-class UBStyle : public QPlastiqueStyle
-{
-    public:
-
-        UBStyle()
-            : QPlastiqueStyle()
-        {
-            // NOOP
-        }
-
-        virtual ~UBStyle()
-        {
-           // NOOP
-        }
-
-        /*
-         * redefined to be more cocoa like on texts
-         */
-        virtual void drawItemText(QPainter *painter, const QRect &rect, int alignment, const QPalette &pal,
-                                  bool enabled, const QString& text, QPalette::ColorRole textRole) const;
-
-
-};
-
-#endif /* UBAPPLICATION_H_ */
+
+
+
+#ifndef UBAPPLICATION_H_
+#define UBAPPLICATION_H_
+
+#include <QtGui>
+
+#include "qtsingleapplication.h"
+
+#include "transition/UniboardSankoreTransition.h"
+
+namespace Ui
+{
+    class MainWindow;
+}
+
+
+class UBBoardController;
+class UBWebController;
+class UBControlView;
+class UBPreferencesController;
+class UBResources;
+class UBSettings;
+class UBPersistenceManager;
+class UBApplicationController;
+class UBDocumentController;
+class UBMainWindow;
+
+class UBApplication : public QtSingleApplication
+{
+    Q_OBJECT;
+
+    public:
+
+        UBApplication(const QString &id, int &argc, char **argv);
+        virtual ~UBApplication();
+
+        int exec(const QString& pFileToImport);
+
+		void cleanup();
+
+        static QPointer<QUndoStack> undoStack;
+
+        static UBApplicationController *applicationController;
+        static UBBoardController* boardController;
+        static UBWebController* webController;
+        static UBDocumentController* documentController;
+        static UniboardSankoreTransition* mUniboardSankoreTransition;
+
+        static UBMainWindow* mainWindow;
+
+        static UBApplication* app()
+        {
+            return static_cast<UBApplication*>qApp;
+        }
+
+        static const QString mimeTypeUniboardDocument;
+        static const QString mimeTypeUniboardPage;
+        static const QString mimeTypeUniboardPageItem;
+        static const QString mimeTypeUniboardPageThumbnail;
+
+        static void showMessage(const QString& message, bool showSpinningWheel = false);
+        static void setDisabled(bool disable);
+
+        static QObject* staticMemoryCleaner;
+
+        void decorateActionMenu(QAction* action);
+        void insertSpaceToToolbarBeforeAction(QToolBar* toolbar, QAction* action, int width = -1);
+
+        int toolBarHeight();
+        bool eventFilter(QObject *obj, QEvent *event);
+
+        bool isVerbose() { return mIsVerbose;}
+        void setVerbose(bool verbose){mIsVerbose = verbose;}
+        static QString urlFromHtml(QString html);
+        static bool isFromWeb(QString url);
+
+    signals:
+
+    public slots:
+
+        void showBoard();
+        void showInternet();
+        void showDocument();
+        void startScript();
+        void stopScript();
+
+        void toolBarPositionChanged(QVariant topOrBottom);
+        void toolBarDisplayTextChanged(QVariant display);
+
+        void closeEvent(QCloseEvent *event);
+
+        /**
+         * Used on Windows platform to open file in running application. On MacOS X opening file is done through the
+         * FileOpen event that is handle in eventFilter method.
+         */
+        bool handleOpenMessage(const QString& pMessage);
+
+    private slots:
+
+        void closing();
+#ifdef Q_WS_MAC
+        void showMinimized();
+#endif
+        void importUniboardFiles();
+
+        void onScreenCountChanged(int newCount);
+
+    private:
+        void updateProtoActionsState();
+        void setupTranslators(QStringList args);
+        QList<QMenu*> mProtoMenus;
+        bool mIsVerbose;
+        QString checkLanguageAvailabilityForSankore(QString& language);
+    protected:
+
+#if defined(Q_WS_MACX) && !defined(QT_MAC_USE_COCOA)
+        bool macEventFilter(EventHandlerCallRef caller, EventRef event);
+#endif
+
+        UBPreferencesController* mPreferencesController;
+        QTranslator* mApplicationTranslator;
+        QTranslator* mQtGuiTranslator;
+
+};
+
+
+class UBStyle : public QPlastiqueStyle
+{
+    public:
+
+        UBStyle()
+            : QPlastiqueStyle()
+        {
+            // NOOP
+        }
+
+        virtual ~UBStyle()
+        {
+           // NOOP
+        }
+
+        /*
+         * redefined to be more cocoa like on texts
+         */
+        virtual void drawItemText(QPainter *painter, const QRect &rect, int alignment, const QPalette &pal,
+                                  bool enabled, const QString& text, QPalette::ColorRole textRole) const;
+
+
+};
+
+#endif /* UBAPPLICATION_H_ */
diff --git a/Sankore-3.1/src/core/UBApplicationController.cpp b/Sankore-3.1/src/core/UBApplicationController.cpp
index 7fe8c11..2b95b05 100644
--- a/Sankore-3.1/src/core/UBApplicationController.cpp
+++ b/Sankore-3.1/src/core/UBApplicationController.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,820 +18,838 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBApplicationController.h"
-
-#include "frameworks/UBPlatformUtils.h"
-#include "frameworks/UBVersion.h"
-
-#include "core/UBApplication.h"
-#include "core/UBPersistenceManager.h"
-#include "core/UBSettings.h"
-#include "core/UBSetting.h"
-#include "core/UBDocumentManager.h"
-#include "core/UBDisplayManager.h"
-
-#include "board/UBBoardView.h"
-#include "board/UBBoardController.h"
-#include "board/UBBoardPaletteManager.h"
-#include "board/UBDrawingController.h"
-
-
-#include "document/UBDocumentProxy.h"
-#include "document/UBDocumentController.h"
-
-#include "domain/UBGraphicsWidgetItem.h"
-
-#include "desktop/UBDesktopPalette.h"
-#include "desktop/UBDesktopAnnotationController.h"
-
-#include "web/UBWebController.h"
-
-#include "gui/UBScreenMirror.h"
-#include "gui/UBMainWindow.h"
-#include "gui/UBDockTeacherGuideWidget.h"
-#include "gui/UBTeacherGuideWidget.h"
-
-#include "domain/UBGraphicsPixmapItem.h"
-
-#include "podcast/UBPodcastController.h"
-
-#include "network/UBNetworkAccessManager.h"
-
-#include "ui_mainWindow.h"
-
-#ifdef Q_WS_MAC
-#include <Carbon/Carbon.h>
-#endif
-
-#include "core/memcheck.h"
-
-UBApplicationController::UBApplicationController(UBBoardView *pControlView, 
-                                                 UBBoardView *pDisplayView,
-                                                 UBMainWindow* pMainWindow, 
-                                                 QObject* parent,
-                                                 UBRightPalette* rightPalette)
-    : QObject(parent)
-    , mMainWindow(pMainWindow)
-    , mControlView(pControlView)
-    , mDisplayView(pDisplayView)
-    , mMirror(0)
-    , mMainMode(Board)
-    , mDisplayManager(0)
-    , mAutomaticCheckForUpdates(false)
-    , mCheckingForUpdates(false)
-    , mIsShowingDesktop(false)
-    , mHttp(0)
-{
-    mDisplayManager = new UBDisplayManager(this);
-
-    mUninoteController = new UBDesktopAnnotationController(this, rightPalette);
-
-    connect(mDisplayManager, SIGNAL(screenLayoutChanged()), this, SLOT(screenLayoutChanged()));
-    connect(mDisplayManager, SIGNAL(screenLayoutChanged()), mUninoteController, SLOT(screenLayoutChanged()));
-    connect(mDisplayManager, SIGNAL(screenLayoutChanged()), UBApplication::webController, SLOT(screenLayoutChanged()));
-
-    connect(mUninoteController, SIGNAL(imageCaptured(const QPixmap &, bool)), this, SLOT(addCapturedPixmap(const QPixmap &, bool)));
-    connect(mUninoteController, SIGNAL(restoreUniboard()), this, SLOT(hideDesktop()));
-
-    for(int i = 0; i < mDisplayManager->numPreviousViews(); i++)
-    {
-        UBBoardView *previousView = new UBBoardView(UBApplication::boardController, UBItemLayerType::FixedBackground, UBItemLayerType::Tool, 0);
-        previousView->setInteractive(false);
-        mPreviousViews.append(previousView);
-    }
-
-    mBlackScene = new UBGraphicsScene(0); // deleted by UBApplicationController::destructor
-    mBlackScene->setBackground(true, false);
-
-    if (mDisplayManager->numScreens() >= 2)
-    {
-        mMirror = new UBScreenMirror();
-    }
-
-    connect(UBApplication::webController, SIGNAL(imageCaptured(const QPixmap &, bool, const QUrl&))
-            , this, SLOT(addCapturedPixmap(const QPixmap &, bool, const QUrl&)));
-
-    networkAccessManager = new QNetworkAccessManager (this);
-    QTimer::singleShot (1000, this, SLOT (checkUpdateAtLaunch()));
-
-#ifdef Q_WS_X11
-    mMainWindow->setStyleSheet("QToolButton { font-size: 11px}");
-#endif
-
-}
-
-
-UBApplicationController::~UBApplicationController()
-{
-    foreach(UBBoardView* view, mPreviousViews)
-    {
-        delete view;
-    }
-
-    delete mBlackScene;
-    delete mMirror;
-    if (mHttp) delete mHttp;
-}
-
-
-void UBApplicationController::initViewState(int horizontalPosition, int verticalPostition)
-{
-    mInitialHScroll = horizontalPosition;
-    mInitialVScroll = verticalPostition;
-}
-
-
-void UBApplicationController::initScreenLayout(bool useMultiscreen)
-{
-    mDisplayManager->setControlWidget(mMainWindow);
-    mDisplayManager->setDisplayWidget(mDisplayView);
-
-    mDisplayManager->setPreviousDisplaysWidgets(mPreviousViews);
-    mDisplayManager->setDesktopWidget(mUninoteController->drawingView());
-
-    mDisplayManager->setUseMultiScreen(useMultiscreen);
-    mDisplayManager->adjustScreens(-1);
-}
-
-
-void UBApplicationController::screenLayoutChanged()
-{
-    initViewState(mControlView->horizontalScrollBar()->value(),
-            mControlView->verticalScrollBar()->value());
-
-    adaptToolBar();
-
-    adjustDisplayView();
-
-    if (mDisplayManager->hasDisplay())
-    {
-        UBApplication::boardController->setBoxing(mDisplayView->geometry());
-    }
-    else
-    {
-       UBApplication::boardController->setBoxing(QRect());
-    }
-
-    adjustPreviousViews(0, 0);
-}
-
-
-void UBApplicationController::adaptToolBar()
-{
-    bool highResolution = mMainWindow->width() > 1024;
-
-    mMainWindow->actionClearPage->setVisible(Board == mMainMode && highResolution);
-    mMainWindow->actionBoard->setVisible(Board != mMainMode || highResolution);
-    mMainWindow->actionDocument->setVisible(Document != mMainMode || highResolution);
-    mMainWindow->actionWeb->setVisible(Internet != mMainMode || highResolution);
-    mMainWindow->boardToolBar->setIconSize(QSize(highResolution ? 48 : 42, mMainWindow->boardToolBar->iconSize().height()));
-
-    mMainWindow->actionBoard->setEnabled(mMainMode != Board);
-    mMainWindow->actionWeb->setEnabled(mMainMode != Internet);
-    mMainWindow->actionDocument->setEnabled(mMainMode != Document);
-
-    if (Document == mMainMode)
-    {
-        connect(UBApplication::instance(), SIGNAL(focusChanged(QWidget *, QWidget *)), UBApplication::documentController, SLOT(focusChanged(QWidget *, QWidget *)));
-    }
-    else
-    {
-        disconnect(UBApplication::instance(), SIGNAL(focusChanged(QWidget *, QWidget *)), UBApplication::documentController, SLOT(focusChanged(QWidget *, QWidget *)));
-        if (Board == mMainMode)
-            mMainWindow->actionDuplicate->setEnabled(true);
-    }
-
-    UBApplication::boardController->setToolbarTexts();
-
-    UBApplication::webController->adaptToolBar();
-
-}
-
-
-void UBApplicationController::adjustDisplayView()
-{
-    if (mDisplayView)
-    {
-        qreal systemDisplayViewScaleFactor = 1.0;
-
-        QSize pageSize = UBApplication::boardController->activeScene()->nominalSize();
-        QSize displaySize = mDisplayView->size();
-
-        qreal hFactor = ((qreal)displaySize.width()) / ((qreal)pageSize.width());
-        qreal vFactor = ((qreal)displaySize.height()) / ((qreal)pageSize.height());
-
-        systemDisplayViewScaleFactor = qMin(hFactor, vFactor);
-
-        QTransform tr;
-        qreal scaleFactor = systemDisplayViewScaleFactor * UBApplication::boardController->currentZoom();
-
-        tr.scale(scaleFactor, scaleFactor);
-
-        QRect rect = mControlView->rect();
-        QPoint center(rect.x() + rect.width() / 2, rect.y() + rect.height() / 2);
-
-		QTransform recentTransform = mDisplayView->transform();
-
-		if (recentTransform != tr)
-			mDisplayView->setTransform(tr);
-
-        mDisplayView->centerOn(mControlView->mapToScene(center));
-    }
-}
-
-
-void UBApplicationController::adjustPreviousViews(int pActiveSceneIndex, UBDocumentProxy *pActiveDocument)
-{
-    int viewIndex = pActiveSceneIndex;
-
-    foreach(UBBoardView* previousView, mPreviousViews)
-    {
-        if (viewIndex > 0)
-        {
-            viewIndex--;
-
-            UBGraphicsScene* scene = UBPersistenceManager::persistenceManager()->loadDocumentScene(pActiveDocument, viewIndex);
-
-            if (scene)
-            {
-                previousView->setScene(scene);
-
-                qreal ratio = ((qreal)previousView->geometry().width()) / ((qreal)previousView->geometry().height());
-                QRectF sceneRect = scene->normalizedSceneRect(ratio);
-                qreal scaleRatio = previousView->geometry().width() / sceneRect.width();
-
-                previousView->resetTransform();
-
-                previousView->scale(scaleRatio, scaleRatio);
-
-                previousView->centerOn(sceneRect.center());
-            }
-        }
-        else
-        {
-            previousView->setScene(mBlackScene);
-        }
-    }
-}
-
-
-void UBApplicationController::blackout()
-{
-    mDisplayManager->blackout();
-}
-
-
-void UBApplicationController::addCapturedPixmap(const QPixmap &pPixmap, bool pageMode, const QUrl& sourceUrl)
-{
-    if (!pPixmap.isNull())
-    {
-        qreal sf = UBApplication::boardController->systemScaleFactor();
-        qreal scaledWidth = ((qreal)pPixmap.width()) / sf;
-        qreal scaledHeight = ((qreal)pPixmap.height()) / sf;
-
-        QSize pageNominalSize = UBApplication::boardController->activeScene()->nominalSize();
-
-        int newWidth = qMin((int)scaledWidth, pageNominalSize.width());
-        int newHeight = qMin((int)scaledHeight, pageNominalSize.height());
-
-        if (pageMode)
-        {
-            newHeight = pPixmap.height();
-        }
-
-        QSizeF scaledSize(scaledWidth, scaledHeight);
-        scaledSize.scale(newWidth, newHeight, Qt::KeepAspectRatio);
-
-        qreal scaleFactor = qMin(scaledSize.width() / (qreal)pPixmap.width(), scaledSize.height() / (qreal)pPixmap.height());
-
-        QPointF pos(0.0, 0.0);
-
-        if (pageMode)
-        {
-            pos.setY(pageNominalSize.height() / -2  + scaledSize.height() / 2);
-        }
-
-        UBApplication::boardController->paletteManager()->addItem(pPixmap, pos, scaleFactor, sourceUrl);
-    }
-}
-
-
-void UBApplicationController::addCapturedEmbedCode(const QString& embedCode)
-{
-    if (!embedCode.isEmpty())
-    {
-        showBoard();
-
-        const QString userWidgetPath = UBSettings::settings()->userInteractiveDirectory() + "/" + tr("Web"); // TODO UB 4.x synch with w3cWidget
-        QDir userWidgetDir(userWidgetPath);
-
-        int width = 300;
-        int height = 150;
-
-        QString widgetPath = UBGraphicsW3CWidgetItem::createHtmlWrapperInDir(embedCode, userWidgetDir,
-                QSize(width, height), UBStringUtils::toCanonicalUuid(QUuid::createUuid()));
-
-        if (widgetPath.length() > 0)
-            UBApplication::boardController->downloadURL(QUrl::fromLocalFile(widgetPath));
-    }
-}
-
-
-void UBApplicationController::showBoard()
-{
-    mMainWindow->webToolBar->hide();
-    mMainWindow->documentToolBar->hide();
-    mMainWindow->tutorialToolBar->hide();
-    mMainWindow->boardToolBar->show();
-
-    if (mMainMode == Document)
-    {
-        int selectedSceneIndex = UBApplication::documentController->getSelectedItemIndex();
-        if (selectedSceneIndex != -1)
-        {
-            UBApplication::boardController->setActiveDocumentScene(UBApplication::documentController->selectedDocument(), selectedSceneIndex, true);
-        }
-    }
-
-    mMainMode = Board;
-
-    adaptToolBar();
-
-    mirroringEnabled(false);
-
-    mMainWindow->switchToBoardWidget();
-
-    if (UBApplication::boardController)
-        UBApplication::boardController->show();
-
-    mIsShowingDesktop = false;
-    UBPlatformUtils::setDesktopMode(false);
-
-    mUninoteController->hideWindow();
-    
-    mMainWindow->show();
-
-    emit mainModeChanged(Board);
-
-    UBApplication::boardController->freezeW3CWidgets(false);
-    UBApplication::boardController->activeScene()->updateGroupButtonState();
-}
-
-
-void UBApplicationController::showInternet()
-{
-
-    if (UBApplication::boardController)
-    {
-        UBApplication::boardController->persistCurrentScene();
-        UBApplication::boardController->hide();
-    }
-
-    if (UBSettings::settings()->webUseExternalBrowser->get().toBool())
-    {
-        showDesktop(true);
-        UBApplication::webController->show(UBWebController::WebBrowser);
-        // really no have emit mainModeChanged here ? potential problem with virtual keyboard ?
-    }
-    else
-    {
-        mMainWindow->boardToolBar->hide();
-        mMainWindow->documentToolBar->hide();
-        mMainWindow->tutorialToolBar->hide();
-        mMainWindow->webToolBar->show();
-
-        mMainMode = Internet;
-
-        adaptToolBar();
-
-        mMainWindow->show();
-        mUninoteController->hideWindow();
-
-        UBApplication::webController->show(UBWebController::WebBrowser);
-
-        emit mainModeChanged(Internet);
-    }
-}
-
-
-void UBApplicationController::showDocument()
-{
-    mMainWindow->webToolBar->hide();
-    mMainWindow->boardToolBar->hide();
-    mMainWindow->tutorialToolBar->hide();
-    mMainWindow->documentToolBar->show();
-
-    mMainMode = Document;
-
-    adaptToolBar();
-
-    mirroringEnabled(false);
-
-    mMainWindow->switchToDocumentsWidget();
-
-    if (UBApplication::boardController)
-    {
-        if (UBApplication::boardController->activeScene()->isModified() || (UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()))
-            UBApplication::boardController->persistCurrentScene();
-        UBApplication::boardController->hide();
-    }
-
-    if (UBApplication::documentController)
-        UBApplication::documentController->show();
-
-    mMainWindow->show();
-
-    mUninoteController->hideWindow();
-
-    emit mainModeChanged(Document);
-}
-
-void UBApplicationController::showDesktop(bool dontSwitchFrontProcess)
-{
-    int desktopWidgetIndex = qApp->desktop()->screenNumber(mMainWindow);
-
-    if (UBApplication::boardController)
-        UBApplication::boardController->hide();
-
-    mMainWindow->hide();
-    mUninoteController->showWindow();
-
-    if (mMirror)
-    {
-        QRect rect = qApp->desktop()->screenGeometry(desktopWidgetIndex);
-        mMirror->setSourceRect(rect);
-    }
-
-    mIsShowingDesktop = true;
-    emit desktopMode(true);
-
-    if (!dontSwitchFrontProcess) {
-        UBPlatformUtils::bringPreviousProcessToFront();
-    }
-
-    UBDrawingController::drawingController()->setInDestopMode(true);
-    UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-}
-
-
-void UBApplicationController::showTutorial()
-{
-
-    if (UBApplication::boardController)
-    {
-        UBApplication::boardController->persistCurrentScene();
-        UBApplication::boardController->hide();
-    }
-
-    if (UBSettings::settings()->webUseExternalBrowser->get().toBool())
-    {
-        showDesktop(true);
-        UBApplication::webController->show(UBWebController::Tutorial);
-
-    }
-    else{
-    	mMainWindow->webToolBar->hide();
-    	mMainWindow->boardToolBar->hide();
-    	mMainWindow->documentToolBar->hide();
-    	mMainWindow->tutorialToolBar->show();
-
-
-    	mMainMode = Tutorial;
-
-    	adaptToolBar();
-
-    	mUninoteController->hideWindow();
-
-    	UBApplication::webController->show(UBWebController::Tutorial);
-
-    	mirroringEnabled(false);
-    	emit mainModeChanged(mMainMode);
-    }
-}
-
-
-void UBApplicationController::showSankoreEditor()
-{
-
-    if (UBApplication::boardController)
-    {
-        UBApplication::boardController->persistCurrentScene();
-        UBApplication::boardController->hide();
-    }
-
-// it's needed not to duplicate webbrowser search in web mode. If I've breaked smbd's code let Ivan know
-        UBApplication::webController->show(UBWebController::Paraschool);
-
-    mMainWindow->webToolBar->hide();
-    mMainWindow->boardToolBar->hide();
-    mMainWindow->documentToolBar->hide();
-    mMainWindow->tutorialToolBar->show();
-
-
-    mMainMode = ParaschoolEditor;
-
-    adaptToolBar();
-
-    mUninoteController->hideWindow();
-
-    mirroringEnabled(false);
-    emit mainModeChanged(mMainMode);
-}
-
-void UBApplicationController::checkUpdate()
-{
-	if(mHttp)
-        delete mHttp;
-    QUrl url("http://ftp.open-sankore.org/update.json");
-    mHttp = new QHttp(url.host());
-    connect(mHttp, SIGNAL(requestFinished(int,bool)), this, SLOT(updateRequestFinished(int,bool)));
-    mHttp->get(url.path());
-}
-
-void UBApplicationController::updateRequestFinished(int id, bool error)
-{
-   if (error){
-       qWarning() << "http command id" << id << "return the error: " << mHttp->errorString();
-       mHttp->close();
-   }
-   else{
-       QString responseString =  QString(mHttp->readAll());
-       if (!responseString.isEmpty() && responseString.contains("version") && responseString.contains("url")){
-           mHttp->close();
-           downloadJsonFinished(responseString);
-       }
-   }
-}
-
-
-
-void UBApplicationController::downloadJsonFinished(QString currentJson)
-{
-    QScriptValue scriptValue;
-    QScriptEngine scriptEngine;
-    scriptValue = scriptEngine.evaluate ("(" + currentJson + ")");
-
-    UBVersion installedVersion (qApp->applicationVersion().left(4));
-    UBVersion jsonVersion (scriptValue.property("version").toString().left(4));
-
-    if (installedVersion.isValid() &&  jsonVersion.isValid() && jsonVersion > installedVersion) {
-            if (UBApplication::mainWindow->yesNoQuestion(tr("Update available"), tr ("New update available, would you go to the web page ?"))){
-                    QUrl url(scriptValue.property ("url").toString());
-                    QDesktopServices::openUrl (url);
-            }
-    }
-    else {
-        if (isNoUpdateDisplayed) {
-            mMainWindow->information(tr("Update"), tr("No update available"));
-        }
-    }
-}
-
-void UBApplicationController::checkUpdateAtLaunch()
-{
-    if(UBSettings::settings()->appEnableAutomaticSoftwareUpdates->get().toBool()){
-        isNoUpdateDisplayed = false;
-        checkUpdate ();
-    }
-}
-
-void UBApplicationController::checkUpdateRequest()
-{
-    isNoUpdateDisplayed = true;
-    checkUpdate ();
-}
-
-void UBApplicationController::hideDesktop()
-{
-    if (mMainMode == Board)
-    {
-        showBoard();
-    }
-    else if (mMainMode == Internet)
-    {
-        showInternet();
-    }
-    else if (mMainMode == Document)
-    {
-        showDocument();
-    }
-    else if (mMainMode == Tutorial)
-    {
-        showTutorial();
-    }
-    else if (mMainMode == ParaschoolEditor)
-    {
-        showSankoreEditor();
-    }
-
-    mIsShowingDesktop = false;
-
-    mDisplayManager->adjustScreens(-1);
-
-    emit desktopMode(false);
-}
-
-void UBApplicationController::setMirrorSourceWidget(QWidget* pWidget)
-{
-    if (mMirror)
-    {
-        mMirror->setSourceWidget(pWidget);
-    }
-}
-
-
-void UBApplicationController::mirroringEnabled(bool enabled)
-{
-    if (mMirror)
-    {
-        if (enabled)
-        {
-            mMirror->start();
-            mDisplayManager->setDisplayWidget(mMirror);
-
-        }
-        else
-        {
-            mDisplayManager->setDisplayWidget(mDisplayView);
-            mMirror->stop();
-        }
-
-        mMirror->setVisible(enabled && mDisplayManager->numScreens() > 1);
-        mUninoteController->updateShowHideState(enabled);
-        UBApplication::mainWindow->actionWebShowHideOnDisplay->setChecked(enabled);
-    }
-    else
-    {
-        mDisplayManager->setDisplayWidget(mDisplayView);
-    }
-}
-
-
-void UBApplicationController::closing()
-{
-    if (mMirror)
-        mMirror->stop();
-
-    if (mUninoteController)
-    {
-        mUninoteController->hideWindow();
-        mUninoteController->close();
-    }
-
-    if (UBApplication::documentController)
-        UBApplication::documentController->closing();
-}
-
-
-void UBApplicationController::showMessage(const QString& message, bool showSpinningWheel)
-{
-    if (!UBApplication::closingDown())
-    {
-        if (mMainMode == Document)
-        {
-            UBApplication::boardController->hideMessage();
-            UBApplication::documentController->showMessage(message, showSpinningWheel);
-        }
-        else
-        {
-            UBApplication::documentController->hideMessage();
-            UBApplication::boardController->showMessage(message, showSpinningWheel);
-        }
-    }
-}
-
-
-void UBApplicationController::importFile(const QString& pFilePath)
-{
-    const QFile fileToOpen(pFilePath);
-
-    if (!fileToOpen.exists())
-        return;
-
-    UBDocumentProxy* document = 0;
-
-    bool success = false;
-
-    document = UBDocumentManager::documentManager()->importFile(fileToOpen, "");
-
-    success = (document != 0);
-
-    if (success && document)
-    {
-        if (mMainMode == Board || mMainMode == Internet)
-        {
-            if (UBApplication::boardController)
-            {
-                UBApplication::boardController->setActiveDocumentScene(document, 0);
-                showBoard();
-            }
-        }
-        else if (mMainMode == Document)
-        {
-            if (UBApplication::documentController)
-                UBApplication::documentController->selectDocument(document);
-        }
-    }
-}
-
-void UBApplicationController::useMultiScreen(bool use)
-{
-    mDisplayManager->setUseMultiScreen(use);
-    mDisplayManager->adjustScreens(0);
-    UBSettings::settings()->appUseMultiscreen->set(use);
-
-}
-
-
-QStringList UBApplicationController::widgetInlineJavaScripts()
-{
-    QString scriptDirPath = UBPlatformUtils::applicationResourcesDirectory() + "/widget-inline-js";
-    QDir scriptDir(scriptDirPath);
-
-    QStringList scripts;
-
-    if (scriptDir.exists())
-    {
-        QStringList files = scriptDir.entryList(QDir::Files | QDir::NoDotAndDotDot, QDir::Name);
-
-        foreach(QString file, files)
-        {
-            QFile scriptFile(scriptDirPath + "/" + file);
-            if (file.endsWith(".js") && scriptFile.open(QIODevice::ReadOnly))
-            {
-                QString s = QString::fromUtf8(scriptFile.readAll());
-
-                if (s.length() > 0)
-                    scripts << s;
-
-            }
-        }
-    }
-
-    qSort(scripts);
-
-    return scripts;
-}
-
-
-
-void UBApplicationController::actionCut()
-{
-    if (!UBApplication::closingDown())
-    {
-        if (mMainMode == Board)
-        {
-            UBApplication::boardController->cut();
-        }
-        else if(mMainMode == Document)
-        {
-            UBApplication::documentController->cut();
-        }
-        else if(mMainMode == Internet)
-        {
-            UBApplication::webController->cut();
-        }
-    }
-}
-
-
-void UBApplicationController::actionCopy()
-{
-    if (!UBApplication::closingDown())
-    {
-        if (mMainMode == Board)
-        {
-            UBApplication::boardController->copy();
-        }
-        else if(mMainMode == Document)
-        {
-            UBApplication::documentController->copy();
-        }
-        else if(mMainMode == Internet)
-        {
-            UBApplication::webController->copy();
-        }
-    }
-}
-
-
-void UBApplicationController::actionPaste()
-{
-    if (!UBApplication::closingDown())
-    {
-        if (mMainMode == Board)
-        {
-            UBApplication::boardController->paste();
-        }
-        else if (mMainMode == Document)
-        {
-            UBApplication::documentController->paste();
-        }
-        else if(mMainMode == Internet)
-        {
-            UBApplication::webController->paste();
-        }
-    }
-}
+
+
+
+#include "UBApplicationController.h"
+
+#include "frameworks/UBPlatformUtils.h"
+#include "frameworks/UBVersion.h"
+
+#include "core/UBApplication.h"
+#include "core/UBPersistenceManager.h"
+#include "core/UBSettings.h"
+#include "core/UBSetting.h"
+#include "core/UBDocumentManager.h"
+#include "core/UBDisplayManager.h"
+
+#include "board/UBBoardView.h"
+#include "board/UBBoardController.h"
+#include "board/UBBoardPaletteManager.h"
+#include "board/UBDrawingController.h"
+
+
+#include "document/UBDocumentProxy.h"
+#include "document/UBDocumentController.h"
+
+#include "domain/UBGraphicsWidgetItem.h"
+
+#include "desktop/UBDesktopPalette.h"
+#include "desktop/UBDesktopAnnotationController.h"
+
+#include "web/UBWebController.h"
+
+#include "gui/UBScreenMirror.h"
+#include "gui/UBMainWindow.h"
+#include "gui/UBDockTeacherGuideWidget.h"
+#include "gui/UBTeacherGuideWidget.h"
+
+#include "domain/UBGraphicsPixmapItem.h"
+
+#include "podcast/UBPodcastController.h"
+
+#include "network/UBNetworkAccessManager.h"
+
+#include "ui_mainWindow.h"
+
+#ifdef Q_WS_MAC
+#include <Carbon/Carbon.h>
+#endif
+
+#include "core/memcheck.h"
+
+UBApplicationController::UBApplicationController(UBBoardView *pControlView,
+                                                 UBBoardView *pDisplayView,
+                                                 UBMainWindow* pMainWindow,
+                                                 QObject* parent,
+                                                 UBRightPalette* rightPalette)
+    : QObject(parent)
+    , mMainWindow(pMainWindow)
+    , mControlView(pControlView)
+    , mDisplayView(pDisplayView)
+    , mMirror(0)
+    , mMainMode(Board)
+    , mDisplayManager(0)
+    , mAutomaticCheckForUpdates(false)
+    , mCheckingForUpdates(false)
+    , mIsShowingDesktop(false)
+    , mHttp(0)
+{
+    mDisplayManager = new UBDisplayManager(this);
+
+    mUninoteController = new UBDesktopAnnotationController(this, rightPalette);
+
+    connect(mDisplayManager, SIGNAL(screenLayoutChanged()), this, SLOT(screenLayoutChanged()));
+    connect(mDisplayManager, SIGNAL(screenLayoutChanged()), mUninoteController, SLOT(screenLayoutChanged()));
+    connect(mDisplayManager, SIGNAL(screenLayoutChanged()), UBApplication::webController, SLOT(screenLayoutChanged()));
+
+    connect(mUninoteController, SIGNAL(imageCaptured(const QPixmap &, bool)), this, SLOT(addCapturedPixmap(const QPixmap &, bool)));
+    connect(mUninoteController, SIGNAL(restoreUniboard()), this, SLOT(hideDesktop()));
+
+    for(int i = 0; i < mDisplayManager->numPreviousViews(); i++)
+    {
+        UBBoardView *previousView = new UBBoardView(UBApplication::boardController, UBItemLayerType::FixedBackground, UBItemLayerType::Tool, 0);
+        previousView->setInteractive(false);
+        mPreviousViews.append(previousView);
+    }
+
+    mBlackScene = new UBGraphicsScene(0); // deleted by UBApplicationController::destructor
+    mBlackScene->setBackground(true, false);
+
+    if (mDisplayManager->numScreens() >= 2)
+    {
+        mMirror = new UBScreenMirror();
+    }
+
+    connect(UBApplication::webController, SIGNAL(imageCaptured(const QPixmap &, bool, const QUrl&))
+            , this, SLOT(addCapturedPixmap(const QPixmap &, bool, const QUrl&)));
+
+    networkAccessManager = new QNetworkAccessManager (this);
+    QTimer::singleShot (1000, this, SLOT (checkUpdateAtLaunch()));
+
+#ifdef Q_WS_X11
+    mMainWindow->setStyleSheet("QToolButton { font-size: 11px}");
+#endif
+
+}
+
+
+UBApplicationController::~UBApplicationController()
+{
+    foreach(UBBoardView* view, mPreviousViews)
+    {
+        delete view;
+    }
+
+    delete mBlackScene;
+    delete mMirror;
+    if (mHttp) delete mHttp;
+}
+
+
+void UBApplicationController::initViewState(int horizontalPosition, int verticalPostition)
+{
+    mInitialHScroll = horizontalPosition;
+    mInitialVScroll = verticalPostition;
+}
+
+
+void UBApplicationController::initScreenLayout(bool useMultiscreen)
+{
+    mDisplayManager->setControlWidget(mMainWindow);
+    mDisplayManager->setDisplayWidget(mDisplayView);
+
+    mDisplayManager->setPreviousDisplaysWidgets(mPreviousViews);
+    mDisplayManager->setDesktopWidget(mUninoteController->drawingView());
+
+    mDisplayManager->setUseMultiScreen(useMultiscreen);
+    mDisplayManager->adjustScreens(-1);
+}
+
+
+void UBApplicationController::screenLayoutChanged()
+{
+    initViewState(mControlView->horizontalScrollBar()->value(),
+            mControlView->verticalScrollBar()->value());
+
+    adaptToolBar();
+
+    adjustDisplayView();
+
+    if (mDisplayManager->hasDisplay())
+    {
+        UBApplication::boardController->setBoxing(mDisplayView->geometry());
+    }
+    else
+    {
+       UBApplication::boardController->setBoxing(QRect());
+    }
+
+    adjustPreviousViews(0, 0);
+}
+
+
+void UBApplicationController::adaptToolBar()
+{
+    bool highResolution = mMainWindow->width() > 1024;
+
+    mMainWindow->actionClearPage->setVisible(Board == mMainMode && highResolution);
+    mMainWindow->actionBoard->setVisible(Board != mMainMode || highResolution);
+    mMainWindow->actionDocument->setVisible(Document != mMainMode || highResolution);
+    mMainWindow->actionWeb->setVisible(Internet != mMainMode || highResolution);
+    mMainWindow->boardToolBar->setIconSize(QSize(highResolution ? 48 : 42, mMainWindow->boardToolBar->iconSize().height()));
+
+    mMainWindow->actionBoard->setEnabled(mMainMode != Board);
+    mMainWindow->actionWeb->setEnabled(mMainMode != Internet);
+    mMainWindow->actionDocument->setEnabled(mMainMode != Document);
+
+    if (Document == mMainMode)
+    {
+        connect(UBApplication::instance(), SIGNAL(focusChanged(QWidget *, QWidget *)), UBApplication::documentController, SLOT(focusChanged(QWidget *, QWidget *)));
+    }
+    else
+    {
+        disconnect(UBApplication::instance(), SIGNAL(focusChanged(QWidget *, QWidget *)), UBApplication::documentController, SLOT(focusChanged(QWidget *, QWidget *)));
+        if (Board == mMainMode)
+            mMainWindow->actionDuplicate->setEnabled(true);
+    }
+
+    UBApplication::boardController->setToolbarTexts();
+
+    UBApplication::webController->adaptToolBar();
+
+}
+
+
+void UBApplicationController::adjustDisplayView()
+{
+    if (mDisplayView)
+    {
+        qreal systemDisplayViewScaleFactor = 1.0;
+
+        QSize pageSize = UBApplication::boardController->activeScene()->nominalSize();
+        QSize displaySize = mDisplayView->size();
+
+        qreal hFactor = ((qreal)displaySize.width()) / ((qreal)pageSize.width());
+        qreal vFactor = ((qreal)displaySize.height()) / ((qreal)pageSize.height());
+
+        systemDisplayViewScaleFactor = qMin(hFactor, vFactor);
+
+        QTransform tr;
+        qreal scaleFactor = systemDisplayViewScaleFactor * UBApplication::boardController->currentZoom();
+
+        tr.scale(scaleFactor, scaleFactor);
+
+        QRect rect = mControlView->rect();
+        QPoint center(rect.x() + rect.width() / 2, rect.y() + rect.height() / 2);
+
+        QTransform recentTransform = mDisplayView->transform();
+
+        if (recentTransform != tr)
+            mDisplayView->setTransform(tr);
+
+        mDisplayView->centerOn(mControlView->mapToScene(center));
+    }
+}
+
+
+void UBApplicationController::adjustPreviousViews(int pActiveSceneIndex, UBDocumentProxy *pActiveDocument)
+{
+    int viewIndex = pActiveSceneIndex;
+
+    foreach(UBBoardView* previousView, mPreviousViews)
+    {
+        if (viewIndex > 0)
+        {
+            viewIndex--;
+
+            UBGraphicsScene* scene = UBPersistenceManager::persistenceManager()->loadDocumentScene(pActiveDocument, viewIndex);
+
+            if (scene)
+            {
+                previousView->setScene(scene);
+
+                qreal ratio = ((qreal)previousView->geometry().width()) / ((qreal)previousView->geometry().height());
+                QRectF sceneRect = scene->normalizedSceneRect(ratio);
+                qreal scaleRatio = previousView->geometry().width() / sceneRect.width();
+
+                previousView->resetTransform();
+
+                previousView->scale(scaleRatio, scaleRatio);
+
+                previousView->centerOn(sceneRect.center());
+            }
+        }
+        else
+        {
+            previousView->setScene(mBlackScene);
+        }
+    }
+}
+
+
+void UBApplicationController::blackout()
+{
+    mDisplayManager->blackout();
+}
+
+
+void UBApplicationController::addCapturedPixmap(const QPixmap &pPixmap, bool pageMode, const QUrl& sourceUrl)
+{
+    if (!pPixmap.isNull())
+    {
+        qreal sf = UBApplication::boardController->systemScaleFactor();
+        qreal scaledWidth = ((qreal)pPixmap.width()) / sf;
+        qreal scaledHeight = ((qreal)pPixmap.height()) / sf;
+
+        QSize pageNominalSize = UBApplication::boardController->activeScene()->nominalSize();
+
+        int newWidth = qMin((int)scaledWidth, pageNominalSize.width());
+        int newHeight = qMin((int)scaledHeight, pageNominalSize.height());
+
+        if (pageMode)
+        {
+            newHeight = pPixmap.height();
+        }
+
+        QSizeF scaledSize(scaledWidth, scaledHeight);
+        scaledSize.scale(newWidth, newHeight, Qt::KeepAspectRatio);
+
+        qreal scaleFactor = qMin(scaledSize.width() / (qreal)pPixmap.width(), scaledSize.height() / (qreal)pPixmap.height());
+
+        QPointF pos(0.0, 0.0);
+
+        if (pageMode)
+        {
+            pos.setY(pageNominalSize.height() / -2  + scaledSize.height() / 2);
+        }
+
+        UBApplication::boardController->paletteManager()->addItem(pPixmap, pos, scaleFactor, sourceUrl);
+    }
+}
+
+
+void UBApplicationController::addCapturedEmbedCode(const QString& embedCode)
+{
+    if (!embedCode.isEmpty())
+    {
+        showBoard();
+
+        const QString userWidgetPath = UBSettings::settings()->userInteractiveDirectory() + "/" + tr("Web"); // TODO UB 4.x synch with w3cWidget
+        QDir userWidgetDir(userWidgetPath);
+
+        int width = 300;
+        int height = 150;
+
+        QString widgetPath = UBGraphicsW3CWidgetItem::createHtmlWrapperInDir(embedCode, userWidgetDir,
+                QSize(width, height), UBStringUtils::toCanonicalUuid(QUuid::createUuid()));
+
+        if (widgetPath.length() > 0)
+            UBApplication::boardController->downloadURL(QUrl::fromLocalFile(widgetPath));
+    }
+}
+
+
+void UBApplicationController::showBoard()
+{
+    mMainWindow->webToolBar->hide();
+    mMainWindow->documentToolBar->hide();
+    mMainWindow->tutorialToolBar->hide();
+    mMainWindow->boardToolBar->show();
+
+//    if (mMainMode == Document)
+//    {
+//        int selectedSceneIndex = UBApplication::documentController->getSelectedItemIndex();
+//        if (selectedSceneIndex != -1)
+//        {
+//            UBApplication::boardController->setActiveDocumentScene(UBApplication::documentController->selectedDocument(), selectedSceneIndex, true);
+//        }
+//    }
+
+    mMainMode = Board;
+
+    adaptToolBar();
+
+    mirroringEnabled(false);
+
+    mMainWindow->switchToBoardWidget();
+
+    if (UBApplication::boardController)
+    {
+        UBApplication::boardController->activeScene()->setRenderingContext(UBGraphicsScene::Screen);
+        UBApplication::boardController->show();
+    }
+
+    mIsShowingDesktop = false;
+    UBPlatformUtils::setDesktopMode(false);
+
+    mUninoteController->hideWindow();
+
+    mMainWindow->show();
+
+    emit mainModeChanged(Board);
+
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController()->stylusTool();
+    if (UBStylusTool::Selector != currentTool)
+        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+
+    UBApplication::boardController->freezeW3CWidgets(false);
+    UBApplication::boardController->activeScene()->updateGroupButtonState();
+}
+
+
+void UBApplicationController::showInternet()
+{
+
+    if (UBApplication::boardController)
+    {
+        UBApplication::boardController->activeScene()->setRenderingContext(UBGraphicsScene::NonScreen);
+        UBApplication::boardController->persistCurrentScene();
+        UBApplication::boardController->hide();
+    }
+
+    if (UBSettings::settings()->webUseExternalBrowser->get().toBool())
+    {
+        showDesktop(true);
+        UBApplication::webController->show(UBWebController::WebBrowser);
+        // really no have emit mainModeChanged here ? potential problem with virtual keyboard ?
+    }
+    else
+    {
+        mMainWindow->boardToolBar->hide();
+        mMainWindow->documentToolBar->hide();
+        mMainWindow->tutorialToolBar->hide();
+        mMainWindow->webToolBar->show();
+
+        mMainMode = Internet;
+
+        adaptToolBar();
+
+        mMainWindow->show();
+        mUninoteController->hideWindow();
+
+        UBApplication::webController->show(UBWebController::WebBrowser);
+
+        emit mainModeChanged(Internet);
+    }
+}
+
+
+void UBApplicationController::showDocument()
+{
+    mMainWindow->webToolBar->hide();
+    mMainWindow->boardToolBar->hide();
+    mMainWindow->tutorialToolBar->hide();
+    mMainWindow->documentToolBar->show();
+
+    mMainMode = Document;
+
+    adaptToolBar();
+
+    mirroringEnabled(false);
+
+    mMainWindow->switchToDocumentsWidget();
+
+    if (UBApplication::boardController)
+    {
+        if (UBApplication::boardController->activeScene()->isModified() || (UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()))
+        {
+            UBApplication::boardController->activeScene()->setRenderingContext(UBGraphicsScene::NonScreen);
+            UBApplication::boardController->persistCurrentScene();
+        }
+        UBApplication::boardController->hide();
+    }
+
+    UBDocumentController *docCtrl = UBApplication::documentController;
+    if (docCtrl) {
+        docCtrl->show();
+        if (docCtrl->firstSelectedTreeProxy()) {
+            docCtrl->setDocument(docCtrl->firstSelectedTreeProxy(), true);
+        }
+    }
+
+    mMainWindow->show();
+
+    mUninoteController->hideWindow();
+
+    emit mainModeChanged(Document);
+}
+
+void UBApplicationController::showDesktop(bool dontSwitchFrontProcess)
+{
+    int desktopWidgetIndex = qApp->desktop()->screenNumber(mMainWindow);
+
+    if (UBApplication::boardController)
+        UBApplication::boardController->hide();
+
+    mMainWindow->hide();
+    mUninoteController->showWindow();
+
+    if (mMirror)
+    {
+        QRect rect = qApp->desktop()->screenGeometry(desktopWidgetIndex);
+        mMirror->setSourceRect(rect);
+    }
+
+    mIsShowingDesktop = true;
+    emit desktopMode(true);
+
+    if (!dontSwitchFrontProcess) {
+        UBPlatformUtils::bringPreviousProcessToFront();
+    }
+
+    UBDrawingController::drawingController()->setInDestopMode(true);
+    UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+}
+
+
+void UBApplicationController::showTutorial()
+{
+
+    if (UBApplication::boardController)
+    {
+        UBApplication::boardController->persistCurrentScene();
+        UBApplication::boardController->hide();
+    }
+
+    if (UBSettings::settings()->webUseExternalBrowser->get().toBool())
+    {
+        showDesktop(true);
+        UBApplication::webController->show(UBWebController::Tutorial);
+        UBApplication::boardController->activeScene()->setRenderingContext(UBGraphicsScene::NonScreen);
+    }
+    else{
+        mMainWindow->webToolBar->hide();
+        mMainWindow->boardToolBar->hide();
+        mMainWindow->documentToolBar->hide();
+        mMainWindow->tutorialToolBar->show();
+
+
+        mMainMode = Tutorial;
+
+        adaptToolBar();
+
+        mUninoteController->hideWindow();
+
+        UBApplication::webController->show(UBWebController::Tutorial);
+
+        mirroringEnabled(false);
+        emit mainModeChanged(mMainMode);
+    }
+}
+
+
+void UBApplicationController::showSankoreEditor()
+{
+
+    if (UBApplication::boardController)
+    {
+        UBApplication::boardController->activeScene()->setRenderingContext(UBGraphicsScene::NonScreen);
+        UBApplication::boardController->persistCurrentScene();
+        UBApplication::boardController->hide();
+    }
+
+// it's needed not to duplicate webbrowser search in web mode. If I've breaked smbd's code let Ivan know
+        UBApplication::webController->show(UBWebController::Paraschool);
+
+    mMainWindow->webToolBar->hide();
+    mMainWindow->boardToolBar->hide();
+    mMainWindow->documentToolBar->hide();
+    mMainWindow->tutorialToolBar->show();
+
+
+    mMainMode = ParaschoolEditor;
+
+    adaptToolBar();
+
+    mUninoteController->hideWindow();
+
+    mirroringEnabled(false);
+    emit mainModeChanged(mMainMode);
+}
+
+void UBApplicationController::checkUpdate()
+{
+    if(mHttp)
+        delete mHttp;
+    QUrl url("http://ftp.open-sankore.org/update.json");
+    mHttp = new QHttp(url.host());
+    connect(mHttp, SIGNAL(requestFinished(int,bool)), this, SLOT(updateRequestFinished(int,bool)));
+    mHttp->get(url.path());
+}
+
+void UBApplicationController::updateRequestFinished(int id, bool error)
+{
+   if (error){
+       qWarning() << "http command id" << id << "return the error: " << mHttp->errorString();
+       mHttp->close();
+   }
+   else{
+       QString responseString =  QString(mHttp->readAll());
+       if (!responseString.isEmpty() && responseString.contains("version") && responseString.contains("url")){
+           mHttp->close();
+           downloadJsonFinished(responseString);
+       }
+   }
+}
+
+
+
+void UBApplicationController::downloadJsonFinished(QString currentJson)
+{
+    QScriptValue scriptValue;
+    QScriptEngine scriptEngine;
+    scriptValue = scriptEngine.evaluate ("(" + currentJson + ")");
+
+    UBVersion installedVersion (qApp->applicationVersion().left(4));
+    UBVersion jsonVersion (scriptValue.property("version").toString().left(4));
+
+    if (installedVersion.isValid() &&  jsonVersion.isValid() && jsonVersion > installedVersion) {
+            if (UBApplication::mainWindow->yesNoQuestion(tr("Update available"), tr ("New update available, would you go to the web page ?"))){
+                    QUrl url(scriptValue.property ("url").toString());
+                    QDesktopServices::openUrl (url);
+            }
+    }
+    else {
+        if (isNoUpdateDisplayed) {
+            mMainWindow->information(tr("Update"), tr("No update available"));
+        }
+    }
+}
+
+void UBApplicationController::checkUpdateAtLaunch()
+{
+    if(UBSettings::settings()->appEnableAutomaticSoftwareUpdates->get().toBool()){
+        isNoUpdateDisplayed = false;
+        checkUpdate ();
+    }
+}
+
+void UBApplicationController::checkUpdateRequest()
+{
+    isNoUpdateDisplayed = true;
+    checkUpdate ();
+}
+
+void UBApplicationController::hideDesktop()
+{
+    if (mMainMode == Board)
+    {
+        showBoard();
+    }
+    else if (mMainMode == Internet)
+    {
+        showInternet();
+    }
+    else if (mMainMode == Document)
+    {
+        showDocument();
+    }
+    else if (mMainMode == Tutorial)
+    {
+        showTutorial();
+    }
+    else if (mMainMode == ParaschoolEditor)
+    {
+        showSankoreEditor();
+    }
+
+    mIsShowingDesktop = false;
+
+    mDisplayManager->adjustScreens(-1);
+
+    emit desktopMode(false);
+}
+
+void UBApplicationController::setMirrorSourceWidget(QWidget* pWidget)
+{
+    if (mMirror)
+    {
+        mMirror->setSourceWidget(pWidget);
+    }
+}
+
+
+void UBApplicationController::mirroringEnabled(bool enabled)
+{
+    if (mMirror)
+    {
+        if (enabled)
+        {
+            mMirror->start();
+            mDisplayManager->setDisplayWidget(mMirror);
+
+        }
+        else
+        {
+            mDisplayManager->setDisplayWidget(mDisplayView);
+            mMirror->stop();
+        }
+
+        mMirror->setVisible(enabled && mDisplayManager->numScreens() > 1);
+        mUninoteController->updateShowHideState(enabled);
+        UBApplication::mainWindow->actionWebShowHideOnDisplay->setChecked(enabled);
+    }
+    else
+    {
+        mDisplayManager->setDisplayWidget(mDisplayView);
+    }
+}
+
+
+void UBApplicationController::closing()
+{
+    if (mMirror)
+        mMirror->stop();
+
+    if (mUninoteController)
+    {
+        mUninoteController->hideWindow();
+        mUninoteController->close();
+    }
+
+    if (UBApplication::documentController)
+        UBApplication::documentController->closing();
+}
+
+
+void UBApplicationController::showMessage(const QString& message, bool showSpinningWheel)
+{
+    if (!UBApplication::closingDown())
+    {
+        if (mMainMode == Document)
+        {
+            UBApplication::boardController->hideMessage();
+            UBApplication::documentController->showMessage(message, showSpinningWheel);
+        }
+        else
+        {
+            UBApplication::documentController->hideMessage();
+            UBApplication::boardController->showMessage(message, showSpinningWheel);
+        }
+    }
+}
+
+
+void UBApplicationController::importFile(const QString& pFilePath)
+{
+    const QFile fileToOpen(pFilePath);
+
+    if (!fileToOpen.exists())
+        return;
+
+    UBDocumentProxy* document = 0;
+
+    bool success = false;
+
+    document = UBDocumentManager::documentManager()->importFile(fileToOpen, "");
+
+    success = (document != 0);
+
+    if (success && document)
+    {
+        if (mMainMode == Board || mMainMode == Internet)
+        {
+            if (UBApplication::boardController)
+            {
+                UBApplication::boardController->setActiveDocumentScene(document, 0);
+                showBoard();
+            }
+        }
+        else if (mMainMode == Document)
+        {
+            if (UBApplication::documentController)
+                UBApplication::documentController->selectDocument(document);
+        }
+    }
+}
+
+void UBApplicationController::useMultiScreen(bool use)
+{
+    mDisplayManager->setUseMultiScreen(use);
+    mDisplayManager->adjustScreens(0);
+    UBSettings::settings()->appUseMultiscreen->set(use);
+
+}
+
+
+QStringList UBApplicationController::widgetInlineJavaScripts()
+{
+    QString scriptDirPath = UBPlatformUtils::applicationResourcesDirectory() + "/widget-inline-js";
+    QDir scriptDir(scriptDirPath);
+
+    QStringList scripts;
+
+    if (scriptDir.exists())
+    {
+        QStringList files = scriptDir.entryList(QDir::Files | QDir::NoDotAndDotDot, QDir::Name);
+
+        foreach(QString file, files)
+        {
+            QFile scriptFile(scriptDirPath + "/" + file);
+            if (file.endsWith(".js") && scriptFile.open(QIODevice::ReadOnly))
+            {
+                QString s = QString::fromUtf8(scriptFile.readAll());
+
+                if (s.length() > 0)
+                    scripts << s;
+
+            }
+        }
+    }
+
+    qSort(scripts);
+
+    return scripts;
+}
+
+
+
+void UBApplicationController::actionCut()
+{
+    if (!UBApplication::closingDown())
+    {
+        if (mMainMode == Board)
+        {
+            UBApplication::boardController->cut();
+        }
+        else if(mMainMode == Document)
+        {
+            UBApplication::documentController->cut();
+        }
+        else if(mMainMode == Internet)
+        {
+            UBApplication::webController->cut();
+        }
+    }
+}
+
+
+void UBApplicationController::actionCopy()
+{
+    if (!UBApplication::closingDown())
+    {
+        if (mMainMode == Board)
+        {
+            UBApplication::boardController->copy();
+        }
+        else if(mMainMode == Document)
+        {
+            UBApplication::documentController->copy();
+        }
+        else if(mMainMode == Internet)
+        {
+            UBApplication::webController->copy();
+        }
+    }
+}
+
+
+void UBApplicationController::actionPaste()
+{
+    if (!UBApplication::closingDown())
+    {
+        if (mMainMode == Board)
+        {
+            UBApplication::boardController->paste();
+        }
+        else if (mMainMode == Document)
+        {
+            UBApplication::documentController->paste();
+        }
+        else if(mMainMode == Internet)
+        {
+            UBApplication::webController->paste();
+        }
+    }
+}
diff --git a/Sankore-3.1/src/core/UBApplicationController.h b/Sankore-3.1/src/core/UBApplicationController.h
index 54b65db..66eb03e 100644
--- a/Sankore-3.1/src/core/UBApplicationController.h
+++ b/Sankore-3.1/src/core/UBApplicationController.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBAPPLICATIONCONTROLLER_H_
 #define UBAPPLICATIONCONTROLLER_H_
 
diff --git a/Sankore-3.1/src/core/UBDisplayManager.cpp b/Sankore-3.1/src/core/UBDisplayManager.cpp
index 315cdd9..72a977b 100644
--- a/Sankore-3.1/src/core/UBDisplayManager.cpp
+++ b/Sankore-3.1/src/core/UBDisplayManager.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBDisplayManager.h"
 
 #include "frameworks/UBPlatformUtils.h"
diff --git a/Sankore-3.1/src/core/UBDisplayManager.h b/Sankore-3.1/src/core/UBDisplayManager.h
index 3f8e2d5..9f5283a 100644
--- a/Sankore-3.1/src/core/UBDisplayManager.h
+++ b/Sankore-3.1/src/core/UBDisplayManager.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDISPLAYMANAGER_H_
 #define UBDISPLAYMANAGER_H_
 
diff --git a/Sankore-3.1/src/core/UBDocumentManager.cpp b/Sankore-3.1/src/core/UBDocumentManager.cpp
index f78ebd6..89afe30 100644
--- a/Sankore-3.1/src/core/UBDocumentManager.cpp
+++ b/Sankore-3.1/src/core/UBDocumentManager.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,297 +20,324 @@
  */
 
 
-#include "UBDocumentManager.h"
-
-#include "frameworks/UBStringUtils.h"
-
-#include "adaptors/UBExportFullPDF.h"
-#include "adaptors/UBExportDocument.h"
-#include "adaptors/UBExportWeb.h"
-#include "adaptors/UBExportCFF.h"
-#include "adaptors/UBWebPublisher.h"
-#include "adaptors/UBImportDocument.h"
-#include "adaptors/UBImportPDF.h"
-#include "adaptors/UBImportImage.h"
-#include "adaptors/UBImportCFF.h"
-
-#include "domain/UBGraphicsScene.h"
-#include "domain/UBGraphicsSvgItem.h"
-#include "domain/UBGraphicsPixmapItem.h"
-
-#include "document/UBDocumentProxy.h"
-#include "document/UBDocumentController.h"
-#include "board/UBBoardController.h"
-
-#include "UBApplication.h"
-#include "UBSettings.h"
-#include "UBPersistenceManager.h"
-
-#include "../adaptors/UBExportWeb.h"
-
-#include "core/memcheck.h"
-
-UBDocumentManager* UBDocumentManager::sDocumentManager = 0;
-
-UBDocumentManager* UBDocumentManager::documentManager()
-{
-    if (!sDocumentManager)
-    {
-        sDocumentManager = new UBDocumentManager(qApp);
-    }
-    return sDocumentManager;
-}
-
-
-UBDocumentManager::UBDocumentManager(QObject *parent)
-    :QObject(parent)
-{
-    // TODO UB 4.7 string used in document persistence (folder names)
-    QString dummyImages = tr("images");
-    QString dummyVideos = tr("videos");
-    QString dummyObjects = tr("objects");
-    QString dummyWidgets = tr("widgets");
-
-    UBExportCFF* cffExporter = new UBExportCFF(this);
-    UBExportFullPDF* exportFullPdf = new UBExportFullPDF(this);
-    UBExportDocument* exportDocument = new UBExportDocument(this);
-    UBWebPublisher* webPublished = new UBWebPublisher(this);
-    mExportAdaptors.append(exportDocument);
-    mExportAdaptors.append(webPublished);
-    mExportAdaptors.append(exportFullPdf);
-    mExportAdaptors.append(cffExporter);
-//     UBExportWeb* exportWeb = new UBExportWeb(this);
-//     mExportAdaptors.append(exportWeb);
-
-    UBImportDocument* documentImport = new UBImportDocument(this);
-    mImportAdaptors.append(documentImport);
-    UBImportPDF* pdfImport = new UBImportPDF(this);
-    mImportAdaptors.append(pdfImport);
-    UBImportImage* imageImport = new UBImportImage(this);
-    mImportAdaptors.append(imageImport);
-    UBImportCFF* cffImport = new UBImportCFF(this);
-    mImportAdaptors.append(cffImport);
-}
-
-
-UBDocumentManager::~UBDocumentManager()
-{
-    // NOOP
-}
-
-
-QStringList UBDocumentManager::importFileExtensions()
-{
-    QStringList result;
-
-    foreach (UBImportAdaptor *importAdaptor, mImportAdaptors)
-    {
-        result << importAdaptor->supportedExtentions();
-    }
-    return result;
-}
-
-
-QString UBDocumentManager::importFileFilter()
-{
-    QString result;
-
-    result += tr("All supported files (*.%1)").arg(importFileExtensions().join(" *."));
-    foreach (UBImportAdaptor *importAdaptor, mImportAdaptors)
-    {
-        if (importAdaptor->importFileFilter().length() > 0)
-        {
-            if (result.length())
-            {
-                result += ";;";
-            }
-            result += importAdaptor->importFileFilter();
-        }
-    }
-    qDebug() << "import file filter" << result;
-    return result;
-}
-
-
-UBDocumentProxy* UBDocumentManager::importFile(const QFile& pFile, const QString& pGroup)
-{
-    QFileInfo fileInfo(pFile);
-
-    foreach (UBImportAdaptor *adaptor, mImportAdaptors)
-    {
-        if (adaptor->supportedExtentions().lastIndexOf(fileInfo.suffix().toLower()) != -1)
-        {
-            UBDocumentProxy* document;
-            UBApplication::setDisabled(true);
-
-            if (adaptor->isDocumentBased())
-            {
-                UBDocumentBasedImportAdaptor* importAdaptor = (UBDocumentBasedImportAdaptor*)adaptor;
-
-                document = importAdaptor->importFile(pFile, pGroup);
-            
-            }
-            else
-            {
-                UBPageBasedImportAdaptor* importAdaptor = (UBPageBasedImportAdaptor*)adaptor;
-
-                // Document import procedure.....
-                QString documentName = QFileInfo(pFile.fileName()).completeBaseName();
-                document = UBPersistenceManager::persistenceManager()->createDocument(pGroup, documentName);
-
-                QUuid uuid = QUuid::createUuid();
-                QString filepath = pFile.fileName();
-                if (importAdaptor->folderToCopy() != "")
-                {
-                    bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(document, pFile.fileName(), importAdaptor->folderToCopy() , uuid, filepath);
-                    if (!b)
-                    {
-                        UBPersistenceManager::persistenceManager()->deleteDocument(document);
-                        UBApplication::setDisabled(false);
-                        return NULL;
-                    }
-                }
-
-                QList<UBGraphicsItem*> pages = importAdaptor->import(uuid, filepath);
-                int nPage = 0;
-                foreach(UBGraphicsItem* page, pages)
-                {
-                    UBApplication::showMessage(tr("Inserting page %1 of %2").arg(++nPage).arg(pages.size()), true);
-#ifdef Q_WS_MACX
-                    //Workaround for issue 912
-                    QApplication::processEvents();
-#endif
-                    int pageIndex = document->pageCount();
-                    UBGraphicsScene* scene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(document, pageIndex);
-                    importAdaptor->placeImportedItemToScene(scene, page);
-                    UBPersistenceManager::persistenceManager()->persistDocumentScene(document, scene, pageIndex);
-                }
-
-                UBPersistenceManager::persistenceManager()->persistDocumentMetadata(document);
-                UBApplication::showMessage(tr("Import successful."));
-            }
-
-            UBApplication::setDisabled(false);
-            return document;
-        }
-
-    }
-    return NULL;
-}
-
-
-int UBDocumentManager::addFilesToDocument(UBDocumentProxy* document, QStringList fileNames)
-{
-    int nImportedDocuments = 0;
-    foreach(const QString& fileName, fileNames)
-    {
-        UBApplication::showMessage(tr("Importing file %1").arg(fileName));
-
-        QFile file(fileName);
-        QFileInfo fileInfo(file);
-
-        foreach (UBImportAdaptor *adaptor, mImportAdaptors)
-        {
-            if (adaptor->supportedExtentions().lastIndexOf(fileInfo.suffix().toLower()) != -1)
-            {
-                UBApplication::setDisabled(true);
-
-                if (adaptor->isDocumentBased())
-                {
-                    UBDocumentBasedImportAdaptor* importAdaptor = (UBDocumentBasedImportAdaptor*)adaptor;
-
-                    if (importAdaptor->addFileToDocument(document, file))
-                        nImportedDocuments++;
-                }
-                else
-                {
-                    UBPageBasedImportAdaptor* importAdaptor = (UBPageBasedImportAdaptor*)adaptor;
-
-                    QUuid uuid = QUuid::createUuid();
-                    QString filepath = file.fileName();
-                    if (importAdaptor->folderToCopy() != "")
-                    {
-                        bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(document, file.fileName(), importAdaptor->folderToCopy() , uuid, filepath);
-                        if (!b)
-                        {
-                            continue;
-                        }
-                    }
-
-                    QList<UBGraphicsItem*> pages = importAdaptor->import(uuid, filepath);
-                    int nPage = 0;
-                    foreach(UBGraphicsItem* page, pages)
-                    {
-                        UBApplication::showMessage(tr("Inserting page %1 of %2").arg(++nPage).arg(pages.size()), true);
-                        int pageIndex = document->pageCount();
-                        UBGraphicsScene* scene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(document, pageIndex);
-                        importAdaptor->placeImportedItemToScene(scene, page);
-                        UBPersistenceManager::persistenceManager()->persistDocumentScene(document, scene, pageIndex);
-                        UBApplication::boardController->addEmptyThumbPage();
-                    }
-
-                    UBPersistenceManager::persistenceManager()->persistDocumentMetadata(document);
-                    UBApplication::showMessage(tr("Import of file %1 successful.").arg(file.fileName()));
-                    nImportedDocuments++;
-                }
-
-                UBApplication::setDisabled(false);
-            }
-        }
-    }
-    return nImportedDocuments;
-}
-
-
-int UBDocumentManager::addImageDirToDocument(const QDir& pDir, UBDocumentProxy* pDocument)
-{
-    QStringList filenames = pDir.entryList(QDir::Files | QDir::NoDotAndDotDot);
-
-    filenames = UBStringUtils::sortByLastDigit(filenames);
-
-    QStringList fileNames;
-
-    foreach(QString f, filenames)
-    {
-        fileNames << pDir.absolutePath() + "/" + f;
-    }
-
-    return addFilesToDocument(pDocument, fileNames);
-
-}
-
-
-UBDocumentProxy* UBDocumentManager::importDir(const QDir& pDir, const QString& pGroup)
-{
-    UBDocumentProxy* doc = UBPersistenceManager::persistenceManager()->createDocument(pGroup, pDir.dirName());
-
-    int result = addImageDirToDocument(pDir, doc);
-
-    if (result > 0)
-    {
-        doc->setMetaData(UBSettings::documentGroupName, pGroup);
-        doc->setMetaData(UBSettings::documentName, pDir.dirName());
-
-        UBPersistenceManager::persistenceManager()->persistDocumentMetadata(doc);
-
-        UBApplication::showMessage(tr("File %1 saved").arg(pDir.dirName()));
-
-    }
-    else
-    {
-        UBPersistenceManager::persistenceManager()->deleteDocument(doc);
-    }
-
-    return doc;
-}
-
-
-QList<UBExportAdaptor*> UBDocumentManager::supportedExportAdaptors()
-{
-    return mExportAdaptors;
-}
-
-void UBDocumentManager::emitDocumentUpdated(UBDocumentProxy* pDocument)
-{
-    emit documentUpdated(pDocument);
-}
+
+#include "UBDocumentManager.h"
+
+#include "frameworks/UBStringUtils.h"
+
+#include "adaptors/UBExportFullPDF.h"
+#include "adaptors/UBExportDocument.h"
+#include "adaptors/UBExportWeb.h"
+#include "adaptors/UBExportCFF.h"
+#include "adaptors/UBExportDocumentSetAdaptor.h"
+#include "adaptors/UBWebPublisher.h"
+#include "adaptors/UBImportDocument.h"
+#include "adaptors/UBImportPDF.h"
+#include "adaptors/UBImportImage.h"
+#include "adaptors/UBImportCFF.h"
+#include "adaptors/UBImportDocumentSetAdaptor.h"
+
+#include "domain/UBGraphicsScene.h"
+#include "domain/UBGraphicsSvgItem.h"
+#include "domain/UBGraphicsPixmapItem.h"
+
+#include "document/UBDocumentProxy.h"
+#include "document/UBDocumentController.h"
+#include "board/UBBoardController.h"
+
+#include "UBApplication.h"
+#include "UBSettings.h"
+#include "UBPersistenceManager.h"
+
+#include "../adaptors/UBExportWeb.h"
+
+#include "core/memcheck.h"
+
+UBDocumentManager* UBDocumentManager::sDocumentManager = 0;
+
+UBDocumentManager* UBDocumentManager::documentManager()
+{
+    if (!sDocumentManager)
+    {
+        sDocumentManager = new UBDocumentManager(qApp);
+    }
+    return sDocumentManager;
+}
+
+
+UBDocumentManager::UBDocumentManager(QObject *parent)
+    :QObject(parent)
+{
+    // TODO UB 4.7 string used in document persistence (folder names)
+    QString dummyImages = tr("images");
+    QString dummyVideos = tr("videos");
+    QString dummyObjects = tr("objects");
+    QString dummyWidgets = tr("widgets");
+
+    UBExportCFF* cffExporter = new UBExportCFF(this);
+    UBExportFullPDF* exportFullPdf = new UBExportFullPDF(this);
+    UBExportDocument* exportDocument = new UBExportDocument(this);
+    UBWebPublisher* webPublished = new UBWebPublisher(this);
+    UBExportDocumentSetAdaptor *exportDocumentSet = new UBExportDocumentSetAdaptor(this);
+    mExportAdaptors.append(exportDocument);
+    mExportAdaptors.append(exportDocumentSet);
+    mExportAdaptors.append(webPublished);
+    mExportAdaptors.append(exportFullPdf);
+    mExportAdaptors.append(cffExporter);
+
+//     UBExportWeb* exportWeb = new UBExportWeb(this);
+//     mExportAdaptors.append(exportWeb);
+
+    UBImportDocument* documentImport = new UBImportDocument(this);
+    mImportAdaptors.append(documentImport);
+    UBImportDocumentSetAdaptor *documentSetImport = new UBImportDocumentSetAdaptor(this);
+    mImportAdaptors.append(documentSetImport);
+    UBImportPDF* pdfImport = new UBImportPDF(this);
+    mImportAdaptors.append(pdfImport);
+    UBImportImage* imageImport = new UBImportImage(this);
+    mImportAdaptors.append(imageImport);
+    UBImportCFF* cffImport = new UBImportCFF(this);
+    mImportAdaptors.append(cffImport);
+}
+
+
+UBDocumentManager::~UBDocumentManager()
+{
+    // NOOP
+}
+
+
+QStringList UBDocumentManager::importFileExtensions()
+{
+    QStringList result;
+
+    foreach (UBImportAdaptor *importAdaptor, mImportAdaptors)
+    {
+        result << importAdaptor->supportedExtentions();
+    }
+    return result;
+}
+
+
+QString UBDocumentManager::importFileFilter()
+{
+    QString result;
+
+    result += tr("All supported files (*.%1)").arg(importFileExtensions().join(" *."));
+    foreach (UBImportAdaptor *importAdaptor, mImportAdaptors)
+    {
+        if (importAdaptor->importFileFilter().length() > 0)
+        {
+            if (result.length())
+            {
+                result += ";;";
+            }
+            result += importAdaptor->importFileFilter();
+        }
+    }
+    qDebug() << "import file filter" << result;
+    return result;
+}
+
+QFileInfoList UBDocumentManager::importUbx(const QString &Incomingfile, const QString &destination)
+{
+    UBImportDocumentSetAdaptor *docSetAdaptor;
+    foreach (UBImportAdaptor *curAdaptor, mImportAdaptors) {
+        docSetAdaptor = qobject_cast<UBImportDocumentSetAdaptor*>(curAdaptor);
+        if (docSetAdaptor) {
+            break;
+        }
+    }
+    if (!docSetAdaptor) {
+        return QFileInfoList();
+    }
+
+    return docSetAdaptor->importData(Incomingfile, destination);
+}
+
+UBDocumentProxy* UBDocumentManager::importFile(const QFile& pFile, const QString& pGroup)
+{
+    QFileInfo fileInfo(pFile);
+
+    foreach (UBImportAdaptor *adaptor, mImportAdaptors)
+    {
+        if (adaptor->supportedExtentions().lastIndexOf(fileInfo.suffix().toLower()) != -1)
+        {
+            UBDocumentProxy* document;
+            UBApplication::setDisabled(true);
+
+            if (adaptor->isDocumentBased())
+            {
+                UBDocumentBasedImportAdaptor* importAdaptor = (UBDocumentBasedImportAdaptor*)adaptor;
+
+                document = importAdaptor->importFile(pFile, pGroup);
+            
+            }
+            else
+            {
+                UBPageBasedImportAdaptor* importAdaptor = (UBPageBasedImportAdaptor*)adaptor;
+
+                // Document import procedure.....
+                QString documentName = QFileInfo(pFile.fileName()).completeBaseName();
+                document = UBPersistenceManager::persistenceManager()->createDocument(pGroup
+                                                                                      ,documentName
+                                                                                      , true
+                                                                                      , QString()
+                                                                                      , 0
+                                                                                      , true);
+
+                QUuid uuid = QUuid::createUuid();
+                QString filepath = pFile.fileName();
+                if (importAdaptor->folderToCopy() != "")
+                {
+                    bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(document, pFile.fileName(), importAdaptor->folderToCopy() , uuid, filepath);
+                    if (!b)
+                    {
+                        UBApplication::setDisabled(false);
+                        return NULL;
+                    }
+                }
+
+                QList<UBGraphicsItem*> pages = importAdaptor->import(uuid, filepath);
+                int nPage = 0;
+                foreach(UBGraphicsItem* page, pages)
+                {
+                    UBApplication::showMessage(tr("Inserting page %1 of %2").arg(++nPage).arg(pages.size()), true);
+#ifdef Q_WS_MACX
+                    //Workaround for issue 912
+                    QApplication::processEvents();
+#endif
+                    int pageIndex = document->pageCount();
+                    UBGraphicsScene* scene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(document, pageIndex);
+                    importAdaptor->placeImportedItemToScene(scene, page);
+                    UBPersistenceManager::persistenceManager()->persistDocumentScene(document, scene, pageIndex);
+                }
+
+                UBPersistenceManager::persistenceManager()->persistDocumentMetadata(document);
+                UBApplication::showMessage(tr("Import successful."));
+            }
+
+            UBApplication::setDisabled(false);
+            return document;
+        }
+
+    }
+    return NULL;
+}
+
+
+int UBDocumentManager::addFilesToDocument(UBDocumentProxy* document, QStringList fileNames)
+{
+    int nImportedDocuments = 0;
+    foreach(const QString& fileName, fileNames)
+    {
+        UBApplication::showMessage(tr("Importing file %1").arg(fileName));
+
+        QFile file(fileName);
+        QFileInfo fileInfo(file);
+
+        foreach (UBImportAdaptor *adaptor, mImportAdaptors)
+        {
+            if (adaptor->supportedExtentions().lastIndexOf(fileInfo.suffix().toLower()) != -1)
+            {
+                UBApplication::setDisabled(true);
+
+                if (adaptor->isDocumentBased())
+                {
+                    UBDocumentBasedImportAdaptor* importAdaptor = (UBDocumentBasedImportAdaptor*)adaptor;
+
+                    if (importAdaptor->addFileToDocument(document, file))
+                        nImportedDocuments++;
+                }
+                else
+                {
+                    UBPageBasedImportAdaptor* importAdaptor = (UBPageBasedImportAdaptor*)adaptor;
+
+                    QUuid uuid = QUuid::createUuid();
+                    QString filepath = file.fileName();
+                    if (importAdaptor->folderToCopy() != "")
+                    {
+                        bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(document, file.fileName(), importAdaptor->folderToCopy() , uuid, filepath);
+                        if (!b)
+                        {
+                            continue;
+                        }
+                    }
+
+                    QList<UBGraphicsItem*> pages = importAdaptor->import(uuid, filepath);
+                    int nPage = 0;
+                    foreach(UBGraphicsItem* page, pages)
+                    {
+                        UBApplication::showMessage(tr("Inserting page %1 of %2").arg(++nPage).arg(pages.size()), true);
+                        int pageIndex = document->pageCount();
+                        UBGraphicsScene* scene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(document, pageIndex);
+                        importAdaptor->placeImportedItemToScene(scene, page);
+                        UBPersistenceManager::persistenceManager()->persistDocumentScene(document, scene, pageIndex);
+                        UBApplication::boardController->addEmptyThumbPage();
+                    }
+
+                    UBPersistenceManager::persistenceManager()->persistDocumentMetadata(document);
+                    UBApplication::showMessage(tr("Import of file %1 successful.").arg(file.fileName()));
+                    nImportedDocuments++;
+                }
+
+                UBApplication::setDisabled(false);
+            }
+        }
+    }
+    return nImportedDocuments;
+}
+
+
+int UBDocumentManager::addImageDirToDocument(const QDir& pDir, UBDocumentProxy* pDocument)
+{
+    QStringList filenames = pDir.entryList(QDir::Files | QDir::NoDotAndDotDot);
+
+    filenames = UBStringUtils::sortByLastDigit(filenames);
+
+    QStringList fileNames;
+
+    foreach(QString f, filenames)
+    {
+        fileNames << pDir.absolutePath() + "/" + f;
+    }
+
+    return addFilesToDocument(pDocument, fileNames);
+
+}
+
+
+UBDocumentProxy* UBDocumentManager::importDir(const QDir& pDir, const QString& pGroup)
+{
+    UBDocumentProxy* doc = UBPersistenceManager::persistenceManager()->createDocument(pGroup, pDir.dirName());
+
+    int result = addImageDirToDocument(pDir, doc);
+
+    if (result > 0)
+    {
+        doc->setMetaData(UBSettings::documentGroupName, pGroup);
+        doc->setMetaData(UBSettings::documentName, pDir.dirName());
+
+        UBPersistenceManager::persistenceManager()->persistDocumentMetadata(doc);
+
+        UBApplication::showMessage(tr("File %1 saved").arg(pDir.dirName()));
+
+    }
+    else
+    {
+        UBPersistenceManager::persistenceManager()->deleteDocument(doc);
+    }
+
+    return doc;
+}
+
+
+QList<UBExportAdaptor*> UBDocumentManager::supportedExportAdaptors()
+{
+    return mExportAdaptors;
+}
+
+void UBDocumentManager::emitDocumentUpdated(UBDocumentProxy* pDocument)
+{
+    emit documentUpdated(pDocument);
+}
diff --git a/Sankore-3.1/src/core/UBDocumentManager.h b/Sankore-3.1/src/core/UBDocumentManager.h
index 4fec25f..30970e5 100644
--- a/Sankore-3.1/src/core/UBDocumentManager.h
+++ b/Sankore-3.1/src/core/UBDocumentManager.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDOCUMENTMANAGER_H_
 #define UBDOCUMENTMANAGER_H_
 
@@ -29,10 +30,9 @@ class UBExportAdaptor;
 class UBImportAdaptor;
 class UBDocumentProxy;
 
-
 class UBDocumentManager : public QObject
 {
-    Q_OBJECT;
+    Q_OBJECT
 
     public:
         static UBDocumentManager* documentManager();
@@ -41,6 +41,7 @@ class UBDocumentManager : public QObject
         QString importFileFilter();
         QStringList importFileExtensions();
 
+        QFileInfoList importUbx(const QString &Incomingfile, const QString &destination);
         UBDocumentProxy* importFile(const QFile& pFile, const QString& pGroup);
 
         int addFilesToDocument(UBDocumentProxy* pDocument, QStringList fileNames);
diff --git a/Sankore-3.1/src/core/UBDownloadManager.cpp b/Sankore-3.1/src/core/UBDownloadManager.cpp
index f56a254..f04f186 100644
--- a/Sankore-3.1/src/core/UBDownloadManager.cpp
+++ b/Sankore-3.1/src/core/UBDownloadManager.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBDownloadManager.h"
 #include "core/UBApplication.h"
 #include "core/UBPersistenceManager.h"
@@ -31,9 +32,10 @@
 #include "core/memcheck.h"
 
 
-UBAsyncLocalFileDownloader::UBAsyncLocalFileDownloader(sDownloadFileDesc desc, QObject *parent)
+UBAsyncLocalFileDownloader::UBAsyncLocalFileDownloader(sDownloadFileDesc desc, QByteArray data, QObject *parent)
 : QThread(parent)
 , mDesc(desc)
+, mData(data)
 , m_bAborting(false)
 {
 
@@ -47,13 +49,13 @@ UBAsyncLocalFileDownloader *UBAsyncLocalFileDownloader::download()
 
 void UBAsyncLocalFileDownloader::run()
 {
+    mMutex.lock();
+    sDownloadFileDesc descriptor = mDesc;
+    mMutex.unlock();
 
-    if(mDesc.srcUrl.startsWith("file://"))
-        mDesc.srcUrl = QUrl(mDesc.srcUrl).toLocalFile();
-    else
-        mDesc.srcUrl = QUrl::fromLocalFile(mDesc.srcUrl).toLocalFile();
+    descriptor.srcUrl = QUrl::fromUserInput(descriptor.srcUrl).toLocalFile();
 
-    QString mimeType = UBFileSystemUtils::mimeTypeFromFileName(mDesc.srcUrl);
+    QString mimeType = UBFileSystemUtils::mimeTypeFromFileName(descriptor.srcUrl);
 
     int position=mimeType.indexOf(";");
     if(position != -1)
@@ -65,20 +67,20 @@ void UBAsyncLocalFileDownloader::run()
     QString destDirectory;
     if (UBMimeType::Video == itemMimeType)
         destDirectory = UBPersistenceManager::videoDirectory;
-    else 
+    else
         if (UBMimeType::Audio == itemMimeType)
             destDirectory = UBPersistenceManager::audioDirectory;
 
-    if (mDesc.originalSrcUrl.isEmpty())
-        mDesc.originalSrcUrl = mDesc.srcUrl;
+    if (descriptor.originalSrcUrl.isEmpty())
+        descriptor.originalSrcUrl = descriptor.srcUrl;
 
     QString uuid = QUuid::createUuid();
-    UBPersistenceManager::persistenceManager()->addFileToDocument(UBApplication::boardController->selectedDocument(), 
-        mDesc.srcUrl,
-        destDirectory,
-        uuid,
-        mTo,
-        NULL);
+    UBPersistenceManager::persistenceManager()->addFileToDocument(UBApplication::boardController->selectedDocument(),
+                                                                  descriptor.srcUrl,
+                                                                  destDirectory,
+                                                                  uuid,
+                                                                  mTo,
+                                                                  NULL);
 
     if (m_bAborting)
     {
@@ -86,7 +88,7 @@ void UBAsyncLocalFileDownloader::run()
             QFile::remove(mTo);
     }
     else
-        emit signal_asyncCopyFinished(mDesc.id, !mTo.isEmpty(), QUrl::fromLocalFile(mTo), QUrl(mDesc.originalSrcUrl), "", NULL, mDesc.pos, mDesc.size, mDesc.isBackground);
+        emit signal_asyncCopyFinished(descriptor.id, !mTo.isEmpty(), QUrl::fromLocalFile(mTo), QUrl(descriptor.originalSrcUrl), "", NULL, descriptor.pos, descriptor.size, descriptor.isBackground);
 }
 
 void UBAsyncLocalFileDownloader::abort()
@@ -284,11 +286,12 @@ void UBDownloadManager::onDownloadFinished(int id, bool pSuccess, QUrl sourceUrl
                 desc.contentTypeHeader = pContentTypeHeader;
                 emit downloadFinished(pSuccess, desc, pData);
 
-            } else if(desc.dest == sDownloadFileDesc::board) {
+            }
+            else if(desc.dest == sDownloadFileDesc::board) {
                 // The downloaded file is modal so we must put it on the board
-                emit addDownloadedFileToBoard(pSuccess, sourceUrl, contentUrl, pContentTypeHeader, pData, pPos, pSize, isBackground);
+                emit addDownloadedFileToBoard(pSuccess, sourceUrl, contentUrl, pContentTypeHeader, pData, pPos, pSize, false, isBackground);
             }
-            else
+            else if(desc.dest == sDownloadFileDesc::library)
             {
                 emit addDownloadedFileToLibrary(pSuccess, sourceUrl, pContentTypeHeader, pData, desc.name);
             }
@@ -379,7 +382,7 @@ void UBDownloadManager::startFileDownload(sDownloadFileDesc desc)
 {
     if (desc.srcUrl.startsWith("file://") || desc.srcUrl.startsWith("/"))
     {
-        UBAsyncLocalFileDownloader * cpHelper = new UBAsyncLocalFileDownloader(desc, this);
+        UBAsyncLocalFileDownloader * cpHelper = new UBAsyncLocalFileDownloader(desc, QByteArray(), this);
         connect(cpHelper, SIGNAL(signal_asyncCopyFinished(int, bool, QUrl, QUrl, QString, QByteArray, QPointF, QSize, bool)), this, SLOT(onDownloadFinished(int, bool, QUrl, QUrl,QString, QByteArray, QPointF, QSize, bool)));
         QObject *res = dynamic_cast<QObject *>(cpHelper->download());
         if (!res)
@@ -388,17 +391,18 @@ void UBDownloadManager::startFileDownload(sDownloadFileDesc desc)
             mDownloads[desc.id] = res;
     }
     else
-    {    
+    {
         UBDownloadHttpFile* http = new UBDownloadHttpFile(desc.id, this);
         connect(http, SIGNAL(downloadProgress(int, qint64,qint64)), this, SLOT(onDownloadProgress(int,qint64,qint64)));
         connect(http, SIGNAL(downloadFinished(int, bool, QUrl, QUrl, QString, QByteArray, QPointF, QSize, bool)), this, SLOT(onDownloadFinished(int, bool, QUrl, QUrl, QString, QByteArray, QPointF, QSize, bool)));
-    
+        connect(http, SIGNAL(downloadError(int)), this, SLOT(onDownloadError(int)));
+
         //the desc.srcUrl is encoded. So we have to decode it before.
         QUrl url;
         url.setEncodedUrl(desc.srcUrl.toUtf8());
         // We send here the request and store its reply in order to be able to cancel it if needed
         mDownloads[desc.id] = dynamic_cast<QObject *>(http->get(url, desc.pos, desc.size, desc.isBackground));
-    } 
+    }
 }
 
 /**
@@ -451,7 +455,7 @@ void UBDownloadManager::cancelDownloads()
         if (netReply)
             netReply->abort();
         else
-        {        
+        {
             UBAsyncLocalFileDownloader *localDownload = dynamic_cast<UBAsyncLocalFileDownloader *>(it.value());
             if (localDownload)
                 localDownload->abort();
@@ -469,20 +473,88 @@ void UBDownloadManager::cancelDownloads()
 void UBDownloadManager::onDownloadError(int id)
 {
     QNetworkReply *pReply = dynamic_cast<QNetworkReply *>(mDownloads.value(id));
-    
+
     if(NULL != pReply)
     {
+        QString errorString = tr("Download failed.");
         // Check which error occured:
         switch(pReply->error())
         {
+            case QNetworkReply::ConnectionRefusedError:
+                errorString += " " + (tr("the remote server refused the connection (the server is not accepting requests)"));
+                break;
+            case QNetworkReply::RemoteHostClosedError:
+                errorString += " " + (tr("the remote server closed the connection prematurely, before the entire reply was received and processed"));
+                break;
+            case QNetworkReply::HostNotFoundError:
+                errorString += " " + (tr("the remote host name was not found (invalid hostname)"));
+                break;
+            case QNetworkReply::TimeoutError:
+                errorString += " " + (tr("the connection to the remote server timed out"));
+                break;
             case QNetworkReply::OperationCanceledError:
-                // For futur developments: do something in case of download aborting (message? remove the download?)
-            break;
-
+                errorString += " " + (tr("the operation was canceled via calls to abort() or close() before it was finished."));
+                break;
+            case QNetworkReply::SslHandshakeFailedError:
+                errorString += " " + (tr("the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() signal should have been emitted."));
+                break;
+            case QNetworkReply::TemporaryNetworkFailureError:
+                errorString += " " + (tr("the connection was broken due to disconnection from the network, however the system has initiated roaming to another access point. The request should be resubmitted and will be processed as soon as the connection is re-established."));
+                break;
+            case QNetworkReply::ProxyConnectionRefusedError:
+                errorString += " " + (tr("the connection to the proxy server was refused (the proxy server is not accepting requests)"));
+                break;
+            case QNetworkReply::ProxyConnectionClosedError:
+                errorString += " " + (tr("the proxy server closed the connection prematurely, before the entire reply was received and processed"));
+                break;
+            case QNetworkReply::ProxyNotFoundError:
+                errorString += " " + (tr("the proxy host name was not found (invalid proxy hostname)"));
+                break;
+            case QNetworkReply::ProxyTimeoutError:
+                errorString += " " + (tr("the connection to the proxy timed out or the proxy did not reply in time to the request sent"));
+                break;
+            case QNetworkReply::ProxyAuthenticationRequiredError:
+                errorString += " " + (tr("the proxy requires authentication in order to honour the request but did not accept any credentials offered (if any)"));
+                break;
+            case QNetworkReply::ContentAccessDenied:
+                errorString += " " + (tr("the access to the remote content was denied (similar to HTTP error 401)"));
+                break;
+            case QNetworkReply::ContentOperationNotPermittedError:
+                errorString += " " + (tr("the operation requested on the remote content is not permitted"));
+                break;
+            case QNetworkReply::ContentNotFoundError:
+                errorString += " " + (tr("the remote content was not found at the server (similar to HTTP error 404)"));
+                break;
+            case QNetworkReply::AuthenticationRequiredError:
+                errorString += " " + (tr("the remote server requires authentication to serve the content but the credentials provided were not accepted (if any)"));
+                break;
+            case QNetworkReply::ContentReSendError:
+                errorString += " " + (tr("the request needed to be sent again, but this failed for example because the upload data could not be read a second time."));
+                break;
+            case QNetworkReply::ProtocolUnknownError:
+                errorString += " " + (tr("the Network Access API cannot honor the request because the protocol is not known"));
+                break;
+            case QNetworkReply::ProtocolInvalidOperationError:
+                errorString += " " + (tr("the requested operation is invalid for this protocol"));
+                break;
+            case QNetworkReply::UnknownNetworkError:
+                errorString += " " + (tr("an unknown network-related error was detected"));
+                break;
+            case QNetworkReply::UnknownProxyError:
+                errorString += " " + (tr("an unknown proxy-related error was detected"));
+                break;
+            case QNetworkReply::UnknownContentError:
+                errorString += " " + (tr("an unknown error related to the remote content was detected"));
+                break;
+            case QNetworkReply::ProtocolFailure:
+                errorString += " " + (tr("a breakdown in protocol was detected (parsing error, invalid or unexpected responses, etc.)"));
+                break;
             default:
                 // Check the documentation of QNetworkReply in Qt Assistant for the different error cases
             break;
         }
+        UBApplication::showMessage(errorString);
+        cancelDownload(id);
     }
 }
 
@@ -501,7 +573,7 @@ void UBDownloadManager::cancelDownload(int id)
 {
     if (!mDownloads.size())
         return;
-   
+
     // Stop the download
 
     QNetworkReply *pNetworkDownload = dynamic_cast<QNetworkReply *>(mDownloads[id]);
@@ -513,7 +585,7 @@ void UBDownloadManager::cancelDownload(int id)
         if (pLocalDownload)
         {
             if (pLocalDownload->isRunning())
-                pLocalDownload->abort();                          
+                pLocalDownload->abort();
         }
     }
 
diff --git a/Sankore-3.1/src/core/UBDownloadManager.h b/Sankore-3.1/src/core/UBDownloadManager.h
index 22861c1..8e940ca 100644
--- a/Sankore-3.1/src/core/UBDownloadManager.h
+++ b/Sankore-3.1/src/core/UBDownloadManager.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDOWNLOADMANAGER_H
 #define UBDOWNLOADMANAGER_H
 
@@ -99,9 +100,9 @@ class UBAsyncLocalFileDownloader : public QThread
 {
     Q_OBJECT
 public:
-    UBAsyncLocalFileDownloader(sDownloadFileDesc desc, QObject *parent = 0);
+    UBAsyncLocalFileDownloader(sDownloadFileDesc desc, QByteArray data = QByteArray(), QObject *parent = 0);
 
-    UBAsyncLocalFileDownloader *download();    
+    UBAsyncLocalFileDownloader *download();
     void run();
     void abort();
 
@@ -111,7 +112,9 @@ signals:
 
 
 private:
+    QMutex mMutex;
     sDownloadFileDesc mDesc;
+    QByteArray mData;
     bool m_bAborting;
     QString mFrom;
     QString mTo;
@@ -139,7 +142,7 @@ signals:
     void downloadFinished(bool pSuccess, int id, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData);
     void downloadFinished(bool pSuccess, sDownloadFileDesc desc, QByteArray pData);
     void downloadModalFinished();
-    void addDownloadedFileToBoard(bool pSuccess, QUrl sourceUrl, QUrl contentUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground);
+    void addDownloadedFileToBoard(bool pSuccess, QUrl sourceUrl, QUrl contentUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isSyncOperation, bool isBackground);
     void addDownloadedFileToLibrary(bool pSuccess, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData, QString pTitle);
     void cancelAllDownloads();
     void allDownloadsFinished();
diff --git a/Sankore-3.1/src/core/UBDownloadThread.cpp b/Sankore-3.1/src/core/UBDownloadThread.cpp
index 2563ea3..48e158b 100644
--- a/Sankore-3.1/src/core/UBDownloadThread.cpp
+++ b/Sankore-3.1/src/core/UBDownloadThread.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QDebug>
 #include <QNetworkProxy>
 #include <QNetworkDiskCache>
diff --git a/Sankore-3.1/src/core/UBDownloadThread.h b/Sankore-3.1/src/core/UBDownloadThread.h
index fbfb27c..a9b3863 100644
--- a/Sankore-3.1/src/core/UBDownloadThread.h
+++ b/Sankore-3.1/src/core/UBDownloadThread.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDOWNLOADTHREAD_H
 #define UBDOWNLOADTHREAD_H
 
diff --git a/Sankore-3.1/src/core/UBIdleTimer.cpp b/Sankore-3.1/src/core/UBIdleTimer.cpp
index f874c7e..cc214d4 100644
--- a/Sankore-3.1/src/core/UBIdleTimer.cpp
+++ b/Sankore-3.1/src/core/UBIdleTimer.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBIdleTimer.h"
 
 #include <QApplication>
diff --git a/Sankore-3.1/src/core/UBIdleTimer.h b/Sankore-3.1/src/core/UBIdleTimer.h
index c4ec233..e0963f6 100644
--- a/Sankore-3.1/src/core/UBIdleTimer.h
+++ b/Sankore-3.1/src/core/UBIdleTimer.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBIDLETIMER_H_
 #define UBIDLETIMER_H_
 
diff --git a/Sankore-3.1/src/core/UBMimeData.cpp b/Sankore-3.1/src/core/UBMimeData.cpp
index b0c4a07..dc30098 100644
--- a/Sankore-3.1/src/core/UBMimeData.cpp
+++ b/Sankore-3.1/src/core/UBMimeData.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBMimeData.h"
 
 #include <QtGui>
@@ -60,6 +61,4 @@ UBMimeDataGraphicsItem::UBMimeDataGraphicsItem(QList<UBItem*> pItems)
 
 UBMimeDataGraphicsItem::~UBMimeDataGraphicsItem()
 {
-        foreach(UBItem* item, mItems)
-            delete item;
 }
diff --git a/Sankore-3.1/src/core/UBMimeData.h b/Sankore-3.1/src/core/UBMimeData.h
index 59b0432..2e01d32 100644
--- a/Sankore-3.1/src/core/UBMimeData.h
+++ b/Sankore-3.1/src/core/UBMimeData.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBMIMEDATA_H_
 #define UBMIMEDATA_H_
 
diff --git a/Sankore-3.1/src/core/UBPersistenceManager.cpp b/Sankore-3.1/src/core/UBPersistenceManager.cpp
index 62da1ff..e822f72 100644
--- a/Sankore-3.1/src/core/UBPersistenceManager.cpp
+++ b/Sankore-3.1/src/core/UBPersistenceManager.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,10 +20,15 @@
  */
 
 
+
 #include "UBPersistenceManager.h"
 #include "gui/UBMainWindow.h"
 
 #include <QtXml>
+#include <QVariant>
+#include <QDomDocument>
+#include <QXmlStreamWriter>
+#include <QModelIndex>
 
 #include "frameworks/UBPlatformUtils.h"
 #include "frameworks/UBFileSystemUtils.h"
@@ -47,6 +52,8 @@
 
 #include "interfaces/IDataStorage.h"
 
+#include "document/UBDocumentController.h"
+
 #include "core/memcheck.h"
 
 const QString UBPersistenceManager::imageDirectory = "images"; // added to UBPersistenceManager::mAllDirectories
@@ -56,6 +63,13 @@ const QString UBPersistenceManager::videoDirectory = "videos"; // added to UBPer
 const QString UBPersistenceManager::audioDirectory = "audios"; // added to
 const QString UBPersistenceManager::teacherGuideDirectory = "teacherGuideObjects";
 
+const QString UBPersistenceManager::myDocumentsName = "MyDocuments";
+const QString UBPersistenceManager::modelsName = "Models";
+const QString UBPersistenceManager::untitledDocumentsName = "UntitledDocuments";
+const QString UBPersistenceManager::fFolders = "folders.xml";
+const QString UBPersistenceManager::tFolder = "folder";
+const QString UBPersistenceManager::aName = "name";
+
 UBPersistenceManager * UBPersistenceManager::sSingleton = 0;
 
 UBPersistenceManager::UBPersistenceManager(QObject *pParent)
@@ -63,6 +77,8 @@ UBPersistenceManager::UBPersistenceManager(QObject *pParent)
     , mHasPurgedDocuments(false)
 {
 
+    xmlFolderStructureFilename = "model";
+
     mDocumentSubDirectories << imageDirectory;
     mDocumentSubDirectories << objectDirectory;
     mDocumentSubDirectories << widgetDirectory;
@@ -70,7 +86,13 @@ UBPersistenceManager::UBPersistenceManager(QObject *pParent)
     mDocumentSubDirectories << audioDirectory;
     mDocumentSubDirectories << teacherGuideDirectory;
 
-    documentProxies = allDocumentProxies();
+    mDocumentRepositoryPath = UBSettings::userDocumentDirectory();
+    mFoldersXmlStorageName =  mDocumentRepositoryPath + "/" + fFolders;
+
+    mDocumentTreeStructureModel = new UBDocumentTreeModel(this);
+    createDocumentProxiesStructure();
+
+
     emit proxyListChanged();
 }
 
@@ -93,56 +115,189 @@ void UBPersistenceManager::destroy()
 
 UBPersistenceManager::~UBPersistenceManager()
 {
-    foreach(QPointer<UBDocumentProxy> proxyGuard, documentProxies)
-    {
-        if (!proxyGuard.isNull())
-            delete proxyGuard.data();
-    }
 }
 
-QList<QPointer<UBDocumentProxy> > UBPersistenceManager::allDocumentProxies()
+void UBPersistenceManager::createDocumentProxiesStructure(bool interactive)
 {
     mDocumentRepositoryPath = UBSettings::userDocumentDirectory();
 
     QDir rootDir(mDocumentRepositoryPath);
     rootDir.mkpath(rootDir.path());
 
+    QFileInfoList contentList = rootDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Time | QDir::Reversed);
+    createDocumentProxiesStructure(contentList, interactive);
+
+    if (QFileInfo(mFoldersXmlStorageName).exists()) {
+        QDomDocument xmlDom;
+        QFile inFile(mFoldersXmlStorageName);
+        if (inFile.open(QIODevice::ReadOnly)) {
+            QString domString(inFile.readAll());
+
+            int errorLine = 0; int errorColumn = 0;
+            QString errorStr;
+
+            if (xmlDom.setContent(domString, &errorStr, &errorLine, &errorColumn)) {
+                loadFolderTreeFromXml("", xmlDom.firstChildElement());
+            } else {
+                qDebug() << "Error reading content of " << mFoldersXmlStorageName << endl
+                         << "Error:" << inFile.errorString()
+                         << "Line:" << errorLine
+                         << "Column:" << errorColumn;
+            }
+            inFile.close();
+        } else {
+            qDebug() << "Error reading" << mFoldersXmlStorageName << endl
+                     << "Error:" << inFile.errorString();
+        }
+    }
+}
 
-    QFileSystemWatcher* watcher = new QFileSystemWatcher(this);
-    watcher->addPath(mDocumentRepositoryPath);
-
-    connect(watcher, SIGNAL(directoryChanged(const QString&)), this, SLOT(documentRepositoryChanged(const QString&)));
-
-    QList<QPointer<UBDocumentProxy> > proxies;
-
-    foreach(QString path, rootDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot,
-            QDir::Time | QDir::Reversed))
+void UBPersistenceManager::createDocumentProxiesStructure(const QFileInfoList &contentInfo, bool interactive)
+{
+    foreach(QFileInfo path, contentInfo)
     {
-        QString fullPath = rootDir.path() + "/" + path;
+        QString fullPath = path.absoluteFilePath();
 
         QDir dir(fullPath);
 
         if (dir.entryList(QDir::Files | QDir::NoDotAndDotDot).size() > 0)
         {
-            UBDocumentProxy* proxy = new UBDocumentProxy(fullPath); // deleted in UBPersistenceManager::destructor
-
             QMap<QString, QVariant> metadatas = UBMetadataDcSubsetAdaptor::load(fullPath);
+            QString docGroupName = metadatas.value(UBSettings::documentGroupName, QString()).toString();
+            QString docName = metadatas.value(UBSettings::documentName, QString()).toString();
 
-            foreach(QString key, metadatas.keys())
-            {
-                proxy->setMetaData(key, metadatas.value(key));
+            if (docName.isEmpty()) {
+                qDebug() << "Group name and document name are empty in UBPersistenceManager::createDocumentProxiesStructure()";
+                continue;
             }
 
-            proxy->setPageCount(sceneCount(proxy));
+            QModelIndex parentIndex = mDocumentTreeStructureModel->goTo(docGroupName);
+            if (!parentIndex.isValid()) {
+                return;
+            }
 
-            proxies << QPointer<UBDocumentProxy>(proxy);
+            UBDocumentProxy* docProxy = new UBDocumentProxy(fullPath); // managed in UBDocumentTreeNode
+            foreach(QString key, metadatas.keys()) {
+                docProxy->setMetaData(key, metadatas.value(key));
+            }
 
+            docProxy->setPageCount(sceneCount(docProxy));
+            bool addDoc = false;
+            if (!interactive) {
+                addDoc = true;
+            } else if (processInteractiveReplacementDialog(docProxy) == QDialog::Accepted) {
+                addDoc = true;
+            }
+            if (addDoc) {
+                mDocumentTreeStructureModel->addDocument(docProxy, parentIndex);
+            }
         }
     }
+}
 
-    return proxies;
+QDialog::DialogCode UBPersistenceManager::processInteractiveReplacementDialog(UBDocumentProxy *pProxy)
+{
+    //TODO claudio remove this hack necessary on double click on ubz file
+    Qt::CursorShape saveShape;
+    if(UBApplication::overrideCursor()){
+        saveShape = UBApplication::overrideCursor()->shape();
+        UBApplication::overrideCursor()->setShape(Qt::ArrowCursor);
+    }
+    else
+        saveShape = Qt::ArrowCursor;
+
+    QDialog::DialogCode result = QDialog::Rejected;
+
+    if (UBApplication::documentController
+            && UBApplication::documentController->mainWidget()) {
+        QString docGroupName = pProxy->metaData(UBSettings::documentGroupName).toString();
+        QModelIndex parentIndex = mDocumentTreeStructureModel->goTo(docGroupName);
+        if (!parentIndex.isValid()) {
+            UBApplication::overrideCursor()->setShape(saveShape);
+            return QDialog::Rejected;
+        }
+
+        QStringList docList = mDocumentTreeStructureModel->nodeNameList(parentIndex);
+        QString docName = pProxy->metaData(UBSettings::documentName).toString();
+
+        if (docList.contains(docName)) {
+            UBDocumentReplaceDialog *replaceDialog = new UBDocumentReplaceDialog(docName
+                                                                                 , docList
+                                                                                 , /*UBApplication::documentController->mainWidget()*/0
+                                                                                 , Qt::Widget);
+            if (replaceDialog->exec() == QDialog::Accepted) {
+                result = QDialog::Accepted;
+                QString resultName = replaceDialog->lineEditText();
+                int i = docList.indexOf(resultName);
+                if (i != -1) { //replace
+                    QModelIndex replaceIndex = mDocumentTreeStructureModel->index(i, 0, parentIndex);
+                    UBDocumentProxy *replaceProxy = mDocumentTreeStructureModel->proxyData(replaceIndex);
+                    if (replaceProxy) {
+                        deleteDocument(replaceProxy);
+                    }
+                    if (replaceIndex.isValid()) {
+                        mDocumentTreeStructureModel->removeRow(i, parentIndex);
+                    }
+                }
+                pProxy->setMetaData(UBSettings::documentName, resultName);
+            }
+            replaceDialog->setParent(0);
+            delete replaceDialog;
+        } else {
+            result = QDialog::Accepted;
+        }
+    }
+    //TODO claudio the if is an hack
+    if(UBApplication::overrideCursor())
+        UBApplication::overrideCursor()->setShape(saveShape);
+
+    return result;
+}
+
+QString UBPersistenceManager::adjustDocumentVirtualPath(const QString &str)
+{
+    QStringList pathList = str.split("/", QString::SkipEmptyParts);
+
+    if (pathList.isEmpty()) {
+        pathList.append(myDocumentsName);
+        pathList.append(untitledDocumentsName);
+    }
+
+    if (pathList.first() != myDocumentsName
+            && pathList.first() != UBSettings::trashedDocumentGroupNamePrefix
+            && pathList.first() != modelsName) {
+        pathList.prepend(myDocumentsName);
+    }
+
+    return pathList.join("/");
 }
 
+void UBPersistenceManager::closing()
+{
+    QDir rootDir(mDocumentRepositoryPath);
+    rootDir.mkpath(rootDir.path());
+
+    QFile outFile(mFoldersXmlStorageName);
+    if (outFile.open(QIODevice::WriteOnly)) {
+        QXmlStreamWriter writer(&outFile);
+        writer.setAutoFormatting(true);
+        writer.writeStartDocument();
+        writer.writeStartElement("content");
+        saveFoldersTreeToXml(writer, QModelIndex());
+        writer.writeEndElement();
+        writer.writeEndDocument();
+
+        outFile.close();
+    } else {
+        qDebug() << "failed to open document" <<  mFoldersXmlStorageName << "for writing" << endl
+                 << "Error string:" << outFile.errorString();
+    }
+}
+
+bool UBPersistenceManager::isSceneInCached(UBDocumentProxy *proxy, int index) const
+{
+    return mSceneCache.contains(proxy, index);
+}
 
 QStringList UBPersistenceManager::allShapes()
 {
@@ -238,11 +393,22 @@ QStringList UBPersistenceManager::allWidgets(const QDir& dir)
 }
 
 
-UBDocumentProxy* UBPersistenceManager::createDocument(const QString& pGroupName, const QString& pName, bool withEmptyPage)
+UBDocumentProxy* UBPersistenceManager::createDocument(const QString& pGroupName
+                                                      , const QString& pName
+                                                      , bool withEmptyPage
+                                                      , QString directory
+                                                      , int pageCount
+                                                      , bool promptDialogIfExists)
 {
-    checkIfDocumentRepositoryExists();
-
-    UBDocumentProxy *doc = new UBDocumentProxy(); // deleted in UBPersistenceManager::destructor
+    UBDocumentProxy *doc;
+    if(directory.length() != 0 ){
+        doc = new UBDocumentProxy(directory); // deleted in UBPersistenceManager::destructor
+        doc->setPageCount(pageCount);
+    }
+    else{
+        checkIfDocumentRepositoryExists();
+        doc = new UBDocumentProxy();
+    }
 
     if (pGroupName.length() > 0)
     {
@@ -261,18 +427,44 @@ UBDocumentProxy* UBPersistenceManager::createDocument(const QString& pGroupName,
 
     if (withEmptyPage) createDocumentSceneAt(doc, 0);
 
-    documentProxies.insert(0, QPointer<UBDocumentProxy>(doc));
-
-    emit proxyListChanged();
+    bool addDoc = false;
+    if (!promptDialogIfExists) {
+        addDoc = true;
+    } else if (processInteractiveReplacementDialog(doc) == QDialog::Accepted) {
+        addDoc = true;
+    }
+    if (addDoc) {
+        mDocumentTreeStructureModel->addDocument(doc);
+        emit proxyListChanged();
+    } else {
+        deleteDocument(doc);
+        doc = 0;
+    }
 
-    emit documentCreated(doc);
+    return doc;
+}
 
-    mDocumentCreatedDuringSession << doc;
+UBDocumentProxy* UBPersistenceManager::createNewDocument(const QString& pGroupName
+                                                      , const QString& pName
+                                                      , bool withEmptyPage
+                                                      , QString directory
+                                                      , int pageCount
+                                                      , bool promptDialogIfExists)
+{
+    UBDocumentProxy *resultDoc = createDocument(pGroupName, pName, withEmptyPage, directory, pageCount, promptDialogIfExists);
+    if (resultDoc) {
+        mDocumentTreeStructureModel->markDocumentAsNew(resultDoc);
+    }
 
-    return doc;
+    return resultDoc;
 }
 
-UBDocumentProxy* UBPersistenceManager::createDocumentFromDir(const QString& pDocumentDirectory, const QString& pGroupName, const QString& pName, bool withEmptyPage, bool addTitlePage)
+UBDocumentProxy* UBPersistenceManager::createDocumentFromDir(const QString& pDocumentDirectory
+                                                             , const QString& pGroupName
+                                                             , const QString& pName
+                                                             , bool withEmptyPage
+                                                             , bool addTitlePage
+                                                             , bool promptDialogIfExists)
 {
     checkIfDocumentRepositoryExists();
 
@@ -307,11 +499,21 @@ UBDocumentProxy* UBPersistenceManager::createDocumentFromDir(const QString& pDoc
         UBSvgSubsetAdaptor::setSceneUuid(doc, i, QUuid::createUuid());
     }
 
-    documentProxies << QPointer<UBDocumentProxy>(doc);
-
-    emit proxyListChanged();
-
-    emit documentCreated(doc);
+    //work around the
+    bool addDoc = false;
+    if (!promptDialogIfExists) {
+        addDoc = true;
+    } else if (processInteractiveReplacementDialog(doc) == QDialog::Accepted) {
+        addDoc = true;
+    }
+    if (addDoc) {
+        mDocumentTreeStructureModel->addDocument(doc);
+        emit proxyListChanged();
+        emit documentCreated(doc);
+    } else {
+        deleteDocument(doc);
+        doc = 0;
+    }
 
     return doc;
 }
@@ -323,20 +525,14 @@ void UBPersistenceManager::deleteDocument(UBDocumentProxy* pDocumentProxy)
 
     emit documentWillBeDeleted(pDocumentProxy);
 
+    Q_ASSERT(QFileInfo(pDocumentProxy->persistencePath()).exists());
     UBFileSystemUtils::deleteDir(pDocumentProxy->persistencePath());
 
-    documentProxies.removeAll(QPointer<UBDocumentProxy>(pDocumentProxy));
-    mDocumentCreatedDuringSession.removeAll(pDocumentProxy);
-
     mSceneCache.removeAllScenes(pDocumentProxy);
 
     pDocumentProxy->deleteLater();
-
-    emit proxyListChanged();
-
 }
 
-
 UBDocumentProxy* UBPersistenceManager::duplicateDocument(UBDocumentProxy* pDocumentProxy)
 {
     checkIfDocumentRepositoryExists();
@@ -367,8 +563,6 @@ UBDocumentProxy* UBPersistenceManager::duplicateDocument(UBDocumentProxy* pDocum
 
     copy->setPageCount(sceneCount(copy));
 
-    documentProxies << QPointer<UBDocumentProxy>(copy);
-
     emit proxyListChanged();
 
     emit documentCreated(copy);
@@ -408,7 +602,7 @@ void UBPersistenceManager::deleteDocumentScenes(UBDocumentProxy* proxy, const QL
 
     QString sourceGroupName = proxy->metaData(UBSettings::documentGroupName).toString();
     QString sourceName = proxy->metaData(UBSettings::documentName).toString();
-    UBDocumentProxy *trashDocProxy = createDocument(UBSettings::trashedDocumentGroupNamePrefix + sourceGroupName, sourceName, false);
+    UBDocumentProxy *trashDocProxy = createDocument(UBSettings::trashedDocumentGroupNamePrefix/* + sourceGroupName*/, sourceName, false);
 
     foreach(int index, compactedIndexes)
     {
@@ -600,6 +794,11 @@ UBGraphicsScene* UBPersistenceManager::loadDocumentScene(UBDocumentProxy* proxy,
     }
 }
 
+void UBPersistenceManager::reassignDocProxy(UBDocumentProxy *newDocument, UBDocumentProxy *oldDocument)
+{
+    return mSceneCache.reassignDocProxy(newDocument, oldDocument);
+}
+
 void UBPersistenceManager::persistDocumentScene(UBDocumentProxy* pDocumentProxy, UBGraphicsScene* pScene, const int pSceneIndex)
 {
     checkIfDocumentRepositoryExists();
@@ -614,7 +813,7 @@ void UBPersistenceManager::persistDocumentScene(UBDocumentProxy* pDocumentProxy,
     UBBoardPaletteManager* paletteManager = UBApplication::boardController->paletteManager();
     bool teacherGuideModified = false;
     if(UBApplication::app()->boardController->currentPage() == pSceneIndex &&  paletteManager->teacherGuideDockWidget())
-    	teacherGuideModified = paletteManager->teacherGuideDockWidget()->teacherGuideWidget()->isModified();
+        teacherGuideModified = paletteManager->teacherGuideDockWidget()->teacherGuideWidget()->isModified();
 
     if (pDocumentProxy->isModified() || teacherGuideModified)
         UBMetadataDcSubsetAdaptor::persist(pDocumentProxy);
@@ -760,7 +959,7 @@ bool UBPersistenceManager::addDirectoryContentToDocument(const QString& document
     foreach(QString dir, mDocumentSubDirectories)
     {
         qDebug() << "copying " << documentRootFolder << "/" << dir << " to " << pDocument->persistencePath() << "/" + dir;
-        
+
         QDir srcDir(documentRootFolder + "/" + dir);
         if (srcDir.exists())
             if (!UBFileSystemUtils::copyDir(documentRootFolder + "/" + dir, pDocument->persistencePath() + "/" + dir))
@@ -773,48 +972,6 @@ bool UBPersistenceManager::addDirectoryContentToDocument(const QString& document
 }
 
 
-void UBPersistenceManager::upgradeDocumentIfNeeded(UBDocumentProxy* pDocumentProxy)
-{
-    int pageCount = pDocumentProxy->pageCount();
-
-    for(int index = 0 ; index < pageCount; index++)
-    {
-        UBSvgSubsetAdaptor::upgradeScene(pDocumentProxy, index);
-    }
-
-    pDocumentProxy->setMetaData(UBSettings::documentVersion, UBSettings::currentFileVersion);
-
-    UBMetadataDcSubsetAdaptor::persist(pDocumentProxy);
-}
-
-
-void UBPersistenceManager::upgradeAllDocumentsIfNeeded()
-{
-    foreach(QPointer<UBDocumentProxy> proxy, documentProxies)
-    {
-        upgradeDocumentIfNeeded(proxy);
-    }
-}
-
-
-
-UBDocumentProxy* UBPersistenceManager::documentByUuid(const QUuid& pUuid)
-{
-    for(int i = 0 ; i < documentProxies.length(); i++)
-    {
-        UBDocumentProxy* proxy = documentProxies.at(i);
-
-        if (proxy && proxy->uuid() == pUuid)
-        {
-            return proxy;
-        }
-    }
-
-    return 0;
-
-}
-
-
 bool UBPersistenceManager::isEmpty(UBDocumentProxy* pDocumentProxy)
 {
     if(!pDocumentProxy)
@@ -843,24 +1000,27 @@ bool UBPersistenceManager::isEmpty(UBDocumentProxy* pDocumentProxy)
 
 void UBPersistenceManager::purgeEmptyDocuments()
 {
-    if(!mHasPurgedDocuments) // hack to workaround the fact that app closing is called twice :-(
-    {
-        QList<UBDocumentProxy*> toBeDeleted;
+    QList<UBDocumentProxy*> toBeDeleted;
 
-        foreach(UBDocumentProxy* docProxy, mDocumentCreatedDuringSession)
-        {
-            if (isEmpty(docProxy))
-            {
-                toBeDeleted << docProxy;
-            }
-        }
-
-        foreach(UBDocumentProxy* docProxy, toBeDeleted)
+    foreach(UBDocumentProxy* docProxy, mDocumentTreeStructureModel->newDocuments())
+    {
+        if (isEmpty(docProxy)
+            && !docProxy->metaData("sessionTitle").toString().size()
+            && !docProxy->metaData("sessionAuthors").toString().size()
+            && !docProxy->metaData("sessionObjectives").toString().size()
+            && !docProxy->metaData("sessionKeywords").toString().size()
+            && !docProxy->metaData("sessionGradeLevel").toString().size()
+            && !docProxy->metaData("sessionSubjects").toString().size()
+            && !docProxy->metaData("sessionType").toString().size()
+            )
         {
-            deleteDocument(docProxy);
+            toBeDeleted << docProxy;
         }
+    }
 
-        mHasPurgedDocuments = true;
+    foreach(UBDocumentProxy* docProxy, toBeDeleted)
+    {
+        deleteDocument(docProxy);
     }
 }
 
@@ -872,7 +1032,7 @@ QString UBPersistenceManager::teacherGuideAbsoluteObjectPath(UBDocumentProxy* pD
 QString UBPersistenceManager::addObjectToTeacherGuideDirectory(UBDocumentProxy* pDocumentProxy, QString pPath)
 {
     QString path = UBFileSystemUtils::removeLocalFilePrefix(pPath);
-	QFileInfo fi(path);
+    QFileInfo fi(path);
     QString uuid = QUuid::createUuid();
 
     if (!fi.exists() || !pDocumentProxy)
@@ -922,8 +1082,8 @@ QString UBPersistenceManager::addWidgetToTeacherGuideDirectory(UBDocumentProxy*
     return destPath;
 }
 
-bool UBPersistenceManager::addFileToDocument(UBDocumentProxy* pDocumentProxy, 
-                                                     QString path, 
+bool UBPersistenceManager::addFileToDocument(UBDocumentProxy* pDocumentProxy,
+                                                     QString path,
                                                      const QString& subdir,
                                                      QUuid objectUuid,
                                                      QString& destinationPath,
@@ -974,12 +1134,12 @@ bool UBPersistenceManager::addFileToDocument(UBDocumentProxy* pDocumentProxy,
     }
     else
     {
-        return false;    
+        return false;
     }
 }
 
-bool UBPersistenceManager::addGraphicsWidgteToDocument(UBDocumentProxy *pDocumentProxy, 
-                                                       QString path, 
+bool UBPersistenceManager::addGraphicsWidgetToDocument(UBDocumentProxy *pDocumentProxy,
+                                                       QString path,
                                                        QUuid objectUuid,
                                                        QString& destinationPath)
 {
@@ -1028,6 +1188,42 @@ void UBPersistenceManager::checkIfDocumentRepositoryExists()
     }
 }
 
+void UBPersistenceManager::saveFoldersTreeToXml(QXmlStreamWriter &writer, const QModelIndex &parentIndex)
+{
+    for (int i = 0; i < mDocumentTreeStructureModel->rowCount(parentIndex); i++)
+    {
+        QModelIndex currentIndex = mDocumentTreeStructureModel->index(i, 0, parentIndex);
+        if (mDocumentTreeStructureModel->isCatalog(currentIndex))
+        {
+            writer.writeStartElement(tFolder);
+            writer.writeAttribute(aName, mDocumentTreeStructureModel->nodeFromIndex(currentIndex)->nodeName());
+            saveFoldersTreeToXml(writer, currentIndex);
+            writer.writeEndElement();
+        }
+    }
+}
+
+void UBPersistenceManager::loadFolderTreeFromXml(const QString &path, const QDomElement &element)
+{
+
+    QDomElement iterElement = element.firstChildElement();
+    while(!iterElement.isNull())
+    {
+        QString leafPath;
+        if (tFolder == iterElement.tagName())
+        {
+            leafPath = iterElement.attribute(aName);
+
+            if (!leafPath.isEmpty())
+            {
+                mDocumentTreeStructureModel->goTo(path + "/" + leafPath);
+                if (!iterElement.firstChildElement().isNull())
+                    loadFolderTreeFromXml(path + "/" +  leafPath, iterElement);
+            }
+        }
+        iterElement = iterElement.nextSiblingElement();
+    }
+}
 
 bool UBPersistenceManager::mayHaveVideo(UBDocumentProxy* pDocumentProxy)
 {
diff --git a/Sankore-3.1/src/core/UBPersistenceManager.h b/Sankore-3.1/src/core/UBPersistenceManager.h
index b306bc8..5f4e763 100644
--- a/Sankore-3.1/src/core/UBPersistenceManager.h
+++ b/Sankore-3.1/src/core/UBPersistenceManager.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBPERSISTENCEMANAGER_H_
 #define UBPERSISTENCEMANAGER_H_
 
@@ -27,9 +28,13 @@
 
 #include "UBSceneCache.h"
 
+class QDomNode;
+class QDomElement;
 class UBDocument;
 class UBDocumentProxy;
 class UBGraphicsScene;
+class UBDocumentTreeNode;
+class UBDocumentTreeModel;
 
 class UBPersistenceManager : public QObject
 {
@@ -50,11 +55,36 @@ class UBPersistenceManager : public QObject
         static const QString widgetDirectory;
         static const QString teacherGuideDirectory;
 
+        static const QString myDocumentsName;
+        static const QString modelsName;
+        static const QString untitledDocumentsName;
+        static const QString fFolders;
+        static const QString tFolder;
+        static const QString aName;
+
         static UBPersistenceManager* persistenceManager();
         static void destroy();
 
-        virtual UBDocumentProxy* createDocument(const QString& pGroupName = "", const QString& pName = "", bool withEmptyPage = true);
-        virtual UBDocumentProxy* createDocumentFromDir(const QString& pDocumentDirectory, const QString& pGroupName = "", const QString& pName = "", bool withEmptyPage = false, bool addTitlePage = false);
+        virtual UBDocumentProxy* createDocument(const QString& pGroupName = ""
+                , const QString& pName = ""
+                , bool withEmptyPage = true
+                , QString directory =QString()
+                , int pageCount = 0
+                , bool promptDialogIfExists = false);
+
+        virtual UBDocumentProxy *createNewDocument(const QString& pGroupName = ""
+                , const QString& pName = ""
+                , bool withEmptyPage = true
+                , QString directory =QString()
+                , int pageCount = 0
+                , bool promptDialogIfExists = false);
+
+        virtual UBDocumentProxy* createDocumentFromDir(const QString& pDocumentDirectory
+                                                       , const QString& pGroupName = ""
+                , const QString& pName = ""
+                , bool withEmptyPage = false
+                , bool addTitlePage = false
+                , bool promptDialogIfExists = false);
 
         virtual UBDocumentProxy* persistDocumentMetadata(UBDocumentProxy* pDocumentProxy);
 
@@ -77,8 +107,11 @@ class UBPersistenceManager : public QObject
 
         virtual UBGraphicsScene* loadDocumentScene(UBDocumentProxy* pDocumentProxy, int sceneIndex);
         UBGraphicsScene *getDocumentScene(UBDocumentProxy* pDocumentProxy, int sceneIndex) {return mSceneCache.value(pDocumentProxy, sceneIndex);}
+        void reassignDocProxy(UBDocumentProxy *newDocument, UBDocumentProxy *oldDocument);
 
-        QList<QPointer<UBDocumentProxy> > documentProxies;
+//        QList<QPointer<UBDocumentProxy> > documentProxies;
+        UBDocumentTreeNode *mDocumentTreeStructure;
+        UBDocumentTreeModel *mDocumentTreeStructureModel;
 
         virtual QStringList allShapes();
         virtual QStringList allGips();
@@ -95,11 +128,9 @@ class UBPersistenceManager : public QObject
 
         bool addDirectoryContentToDocument(const QString& documentRootFolder, UBDocumentProxy* pDocument);
 
-        virtual void upgradeDocumentIfNeeded(UBDocumentProxy* pDocumentProxy);
-
-        virtual void upgradeAllDocumentsIfNeeded();
-
-        virtual UBDocumentProxy* documentByUuid(const QUuid& pUuid);
+        void createDocumentProxiesStructure(bool interactive = false);
+        void createDocumentProxiesStructure(const QFileInfoList &contentInfo, bool interactive = false);
+        QDialog::DialogCode processInteractiveReplacementDialog(UBDocumentProxy *pProxy);
 
         QStringList documentSubDirectories()
         {
@@ -109,7 +140,7 @@ class UBPersistenceManager : public QObject
         virtual bool isEmpty(UBDocumentProxy* pDocumentProxy);
         virtual void purgeEmptyDocuments();
 
-        bool addGraphicsWidgteToDocument(UBDocumentProxy *mDocumentProxy, QString path, QUuid objectUuid, QString& destinationPath);
+        bool addGraphicsWidgetToDocument(UBDocumentProxy *mDocumentProxy, QString path, QUuid objectUuid, QString& destinationPath);
         bool addFileToDocument(UBDocumentProxy* pDocumentProxy, QString path, const QString& subdir,  QUuid objectUuid, QString& destinationPath, QByteArray* data = NULL);
 
         bool mayHaveVideo(UBDocumentProxy* pDocumentProxy);
@@ -118,6 +149,11 @@ class UBPersistenceManager : public QObject
         bool mayHaveSVGImages(UBDocumentProxy* pDocumentProxy);
         bool mayHaveWidget(UBDocumentProxy* pDocumentProxy);
 
+        QString adjustDocumentVirtualPath(const QString &str);
+
+        void closing();
+        bool isSceneInCached(UBDocumentProxy *proxy, int index) const;
+
     signals:
 
         void proxyListChanged();
@@ -129,37 +165,28 @@ class UBPersistenceManager : public QObject
         void documentSceneCreated(UBDocumentProxy* pDocumentProxy, int pIndex);
         void documentSceneWillBeDeleted(UBDocumentProxy* pDocumentProxy, int pIndex);
 
-    private:
-
+private:
         int sceneCount(const UBDocumentProxy* pDocumentProxy);
-
         static QStringList getSceneFileNames(const QString& folder);
-
-        QList<QPointer<UBDocumentProxy> > allDocumentProxies();
-
         void renamePage(UBDocumentProxy* pDocumentProxy,
-                const int sourceIndex, const int targetIndex);
-
+                        const int sourceIndex, const int targetIndex);
         void copyPage(UBDocumentProxy* pDocumentProxy,
-                const int sourceIndex, const int targetIndex);
-
+                      const int sourceIndex, const int targetIndex);
         void generatePathIfNeeded(UBDocumentProxy* pDocumentProxy);
-
         void checkIfDocumentRepositoryExists();
 
-        UBSceneCache mSceneCache;
+        void saveFoldersTreeToXml(QXmlStreamWriter &writer, const QModelIndex &parentIndex);
+        void loadFolderTreeFromXml(const QString &path, const QDomElement &element);
 
-        QStringList mDocumentSubDirectories;
+        QString xmlFolderStructureFilename;
 
+        UBSceneCache mSceneCache;
+        QStringList mDocumentSubDirectories;
         QMutex mDeletedListMutex;
-
         bool mHasPurgedDocuments;
-
-        QList<UBDocumentProxy*> mDocumentCreatedDuringSession;
-
         QString mDocumentRepositoryPath;
-
         QHash<int,QString>teacherBarNodeString;
+        QString mFoldersXmlStorageName;
 
     private slots:
         void documentRepositoryChanged(const QString& path);
diff --git a/Sankore-3.1/src/core/UBPreferencesController.cpp b/Sankore-3.1/src/core/UBPreferencesController.cpp
index 15fd16e..ac51948 100644
--- a/Sankore-3.1/src/core/UBPreferencesController.cpp
+++ b/Sankore-3.1/src/core/UBPreferencesController.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBPreferencesController.h"
 
 #include "UBSettings.h"
@@ -118,6 +119,8 @@ void UBPreferencesController::wire()
     connect(mPreferencesUI->closeButton, SIGNAL(released()), this, SLOT(close()));
     connect(mPreferencesUI->defaultSettingsButton, SIGNAL(released()), this, SLOT(defaultSettings()));
 
+    connect(mPreferencesUI->startupTipsCheckBox,SIGNAL(clicked(bool)),this,SLOT(onStartupTipsClicked(bool)));
+
 
     // OSK preferences
 
@@ -199,6 +202,8 @@ void UBPreferencesController::init()
             break;
         }
 
+    mPreferencesUI->startupTipsCheckBox->setChecked(settings->appStartupHintsEnabled->get().toBool());
+
     mPreferencesUI->startModeComboBox->setCurrentIndex(settings->appStartMode->get().toInt());
 
     mPreferencesUI->useExternalBrowserCheckBox->setChecked(settings->webUseExternalBrowser->get().toBool());
@@ -236,6 +241,72 @@ void UBPreferencesController::init()
     mPreferencesUI->PSCredentialsPersistenceCheckBox->setChecked(settings->getCommunityDataPersistence());
     persistanceCheckboxUpdate();
 
+    mIsoCodeAndLanguage.insert(tr("Default"),"NO_VALUE");
+    mIsoCodeAndLanguage.insert(tr("Arabic"),"ar");
+    mIsoCodeAndLanguage.insert(tr("Basque"),"eu");
+    mIsoCodeAndLanguage.insert(tr("Bulgarian"),"bg");
+    mIsoCodeAndLanguage.insert(tr("Catalan"),"ca");
+    mIsoCodeAndLanguage.insert(tr("Corsican"),"co");
+    mIsoCodeAndLanguage.insert(tr("Czech"),"cs");
+    mIsoCodeAndLanguage.insert(tr("Danish"),"da");
+    mIsoCodeAndLanguage.insert(tr("German"),"de");
+    mIsoCodeAndLanguage.insert(tr("Greek"),"el");
+    mIsoCodeAndLanguage.insert(tr("English"),"en");
+    mIsoCodeAndLanguage.insert(tr("English UK"),"en_UK");
+    mIsoCodeAndLanguage.insert(tr("Spanish"),"es");
+    mIsoCodeAndLanguage.insert(tr("French"),"fr");
+    mIsoCodeAndLanguage.insert(tr("Swiss French"),"fr_CH");
+    mIsoCodeAndLanguage.insert(tr("Hindi"),"hi");
+    mIsoCodeAndLanguage.insert(tr("Italian"),"it");
+    mIsoCodeAndLanguage.insert(tr("Hebrew"),"iw");
+    mIsoCodeAndLanguage.insert(tr("Japanese"),"ja");
+    mIsoCodeAndLanguage.insert(tr("Korean"),"ko");
+    mIsoCodeAndLanguage.insert(tr("Malagasy"),"mg");
+    mIsoCodeAndLanguage.insert(tr("Norwegian"),"nb");
+    mIsoCodeAndLanguage.insert(tr("Dutch"),"nl");
+    mIsoCodeAndLanguage.insert(tr("Polish"),"pl");
+    mIsoCodeAndLanguage.insert(tr("Portuguese"),"pt");
+    mIsoCodeAndLanguage.insert(tr("Romansh"),"rm");
+    mIsoCodeAndLanguage.insert(tr("Romanian"),"ro");
+    mIsoCodeAndLanguage.insert(tr("Russian"),"ru");
+    mIsoCodeAndLanguage.insert(tr("Slovak"),"sk");
+    mIsoCodeAndLanguage.insert(tr("Swedish"),"sv");
+    mIsoCodeAndLanguage.insert(tr("Turkish"),"tr");
+    mIsoCodeAndLanguage.insert(tr("Chinese"),"zh");
+    mIsoCodeAndLanguage.insert(tr("Chinese Simplified"),"zh_CN");
+    mIsoCodeAndLanguage.insert(tr("Chinese Traditional"),"zh_TW");
+
+    QStringList list;
+    list << mIsoCodeAndLanguage.keys();
+    list.sort();
+    mPreferencesUI->languageComboBox->addItems(list);
+    QString currentIsoLanguage = UBSettings::settings()->appPreferredLanguage->get().toString();
+    if(currentIsoLanguage.length()){
+        QString language;
+        foreach(QString eachKey, mIsoCodeAndLanguage.keys())
+            if(mIsoCodeAndLanguage[eachKey] == currentIsoLanguage)
+                language = eachKey;
+        mPreferencesUI->languageComboBox->setCurrentIndex(list.indexOf(language));
+    }
+    else
+        mPreferencesUI->languageComboBox->setCurrentIndex(list.indexOf("Default"));
+
+    connect(mPreferencesUI->languageComboBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(onLanguageChanged(QString)));
+    connect(mPreferencesUI->quitOpenSankorePushButton,SIGNAL(clicked()),UBApplication::app(),SLOT(closing()));
+    mPreferencesUI->quitOpenSankorePushButton->setDisabled(true);
+
+}
+
+void UBPreferencesController::onStartupTipsClicked(bool clicked)
+{
+    UBSettings::settings()->appStartupHintsEnabled->setBool(clicked);
+}
+
+void UBPreferencesController::onLanguageChanged(QString currentItem)
+{
+    QString isoCode = mIsoCodeAndLanguage[currentItem] == "NO_VALUE" ? "" : mIsoCodeAndLanguage[currentItem];
+    UBSettings::settings()->appPreferredLanguage->setString(isoCode);
+    mPreferencesUI->quitOpenSankorePushButton->setEnabled(true);
 }
 
 void UBPreferencesController::onCommunityUsernameChanged()
@@ -325,6 +396,7 @@ void UBPreferencesController::defaultSettings()
         mPreferencesUI->verticalChoice->setChecked(settings->appToolBarOrientationVertical->reset().toBool());
         mPreferencesUI->horizontalChoice->setChecked(!settings->appToolBarOrientationVertical->reset().toBool());
         mPreferencesUI->startModeComboBox->setCurrentIndex(0);
+        onLanguageChanged("Default");
     }
     else if (mPreferencesUI->mainTabWidget->currentWidget() == mPreferencesUI->penTab)
     {
diff --git a/Sankore-3.1/src/core/UBPreferencesController.h b/Sankore-3.1/src/core/UBPreferencesController.h
index b82b00c..aa3212d 100644
--- a/Sankore-3.1/src/core/UBPreferencesController.h
+++ b/Sankore-3.1/src/core/UBPreferencesController.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBPREFERENCESCONTROLLER_H_
 #define UBPREFERENCESCONTROLLER_H_
 
@@ -73,6 +74,8 @@ class UBPreferencesController : public QObject
         void wire();
         void init();
 
+        QMap<QString,QString>mIsoCodeAndLanguage;
+
         UBPreferencesDialog* mPreferencesWindow;
         Ui::preferencesDialog* mPreferencesUI;
         UBBrushPropertiesFrame* mPenProperties;
@@ -91,6 +94,8 @@ class UBPreferencesController : public QObject
         void onCommunityUsernameChanged();
         void onCommunityPasswordChanged();
         void onCommunityPersistenceChanged();
+        void onLanguageChanged(QString currentItem);
+        void onStartupTipsClicked(bool clicked);
 
     private slots:
         void adjustScreens(int screen);
diff --git a/Sankore-3.1/src/core/UBSceneCache.cpp b/Sankore-3.1/src/core/UBSceneCache.cpp
index 11dc8b8..4cbe661 100644
--- a/Sankore-3.1/src/core/UBSceneCache.cpp
+++ b/Sankore-3.1/src/core/UBSceneCache.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBSceneCache.h"
 
 #include "domain/UBGraphicsScene.h"
@@ -142,11 +143,10 @@ void UBSceneCache::removeAllScenes(UBDocumentProxy* proxy)
 {
     for(int i = 0 ; i < proxy->pageCount(); i++)
     {
-        removeScene(proxy, i);
+         removeScene(proxy, i);
     }
 }
 
-
 void UBSceneCache::moveScene(UBDocumentProxy* proxy, int sourceIndex, int targetIndex)
 {
     UBSceneCacheID keySource(proxy, sourceIndex);
@@ -189,7 +189,6 @@ void UBSceneCache::moveScene(UBDocumentProxy* proxy, int sourceIndex, int target
 
 }
 
-
 void UBSceneCache::shiftUpScenes(UBDocumentProxy* proxy, int startIncIndex, int endIncIndex)
 {
     for(int i = endIncIndex; i >= startIncIndex; i--)
@@ -198,6 +197,32 @@ void UBSceneCache::shiftUpScenes(UBDocumentProxy* proxy, int startIncIndex, int
     }
 }
 
+void UBSceneCache::reassignDocProxy(UBDocumentProxy *newDocument, UBDocumentProxy *oldDocument)
+{
+    if (!newDocument || !oldDocument) {
+        return;
+    }
+    if (newDocument->pageCount() != oldDocument->pageCount()) {
+        return;
+    }
+    if (!QFileInfo(oldDocument->persistencePath()).exists()) {
+        return;
+    }
+    for (int i = 0; i < oldDocument->pageCount(); i++) {
+
+        UBSceneCacheID sourceKey(oldDocument, i);
+        UBGraphicsScene *currentScene = value(sourceKey);
+        if (currentScene) {
+            currentScene->setDocument(newDocument);
+        }
+        mCachedKeyFIFO.removeAll(sourceKey);
+        int count = QHash<UBSceneCacheID, UBGraphicsScene*>::remove(sourceKey);
+        mCachedSceneCount -= count;
+
+        insert(newDocument, i, currentScene);
+    }
+
+}
 
 void UBSceneCache::internalMoveScene(UBDocumentProxy* proxy, int sourceIndex, int targetIndex)
 {
diff --git a/Sankore-3.1/src/core/UBSceneCache.h b/Sankore-3.1/src/core/UBSceneCache.h
index 210b8c2..83b3fa4 100644
--- a/Sankore-3.1/src/core/UBSceneCache.h
+++ b/Sankore-3.1/src/core/UBSceneCache.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBSCENECACHE_H
 #define UBSCENECACHE_H
 
@@ -93,6 +94,7 @@ class UBSceneCache : public QHash<UBSceneCacheID, UBGraphicsScene*>
 
         void shiftUpScenes(UBDocumentProxy* proxy, int startIncIndex, int endIncIndex);
 
+        void reassignDocProxy(UBDocumentProxy *newDocument, UBDocumentProxy *oldDocument);
 
     private:
 
diff --git a/Sankore-3.1/src/core/UBSetting.cpp b/Sankore-3.1/src/core/UBSetting.cpp
index 3e87194..23f12fe 100644
--- a/Sankore-3.1/src/core/UBSetting.cpp
+++ b/Sankore-3.1/src/core/UBSetting.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBSetting.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/core/UBSetting.h b/Sankore-3.1/src/core/UBSetting.h
index 56c6a71..d40e873 100644
--- a/Sankore-3.1/src/core/UBSetting.h
+++ b/Sankore-3.1/src/core/UBSetting.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBSETTING_H_
 #define UBSETTING_H_
 
diff --git a/Sankore-3.1/src/core/UBSettings.cpp b/Sankore-3.1/src/core/UBSettings.cpp
index ad4cfa2..03764b7 100644
--- a/Sankore-3.1/src/core/UBSettings.cpp
+++ b/Sankore-3.1/src/core/UBSettings.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBSettings.h"
 
 #include <QtGui>
@@ -164,7 +165,10 @@ UBSettings::UBSettings(QObject *parent)
 
     mUserSettings = new QSettings(userSettingsFile, QSettings::IniFormat, parent);
 
-    init();
+    appPreferredLanguage = new UBSetting(this,"App","PreferredLanguage", "");
+
+
+//    init();
 }
 
 
@@ -218,22 +222,42 @@ void UBSettings::init()
     appEnableAutomaticSoftwareUpdates = new UBSetting(this, "App", "EnableAutomaticSoftwareUpdates", true);
     appEnableSoftwareUpdates = new UBSetting(this, "App", "EnableSoftwareUpdates", true);
     appToolBarOrientationVertical = new UBSetting(this, "App", "ToolBarOrientationVertical", false);
-    appPreferredLanguage = new UBSetting(this,"App","PreferredLanguage", "");
 
     rightLibPaletteBoardModeWidth = new UBSetting(this, "Board", "RightLibPaletteBoardModeWidth", 270);
     rightLibPaletteBoardModeIsCollapsed = new UBSetting(this,"Board", "RightLibPaletteBoardModeIsCollapsed",false);
     rightLibPaletteDesktopModeWidth = new UBSetting(this, "Board", "RightLibPaletteDesktopModeWidth", 270);
     rightLibPaletteDesktopModeIsCollapsed = new UBSetting(this,"Board", "RightLibPaletteDesktopModeIsCollapsed",false);
+    rightLibPaletteWebModeWidth = new UBSetting(this, "Board", "RightLibPaletteWebModeWidth", 270);
+    rightLibPaletteWebModeIsCollapsed = new UBSetting(this,"Board", "RightLibPaletteWebModeIsCollapsed",false);
     leftLibPaletteBoardModeWidth = new UBSetting(this, "Board", "LeftLibPaletteBoardModeWidth",270);
     leftLibPaletteBoardModeIsCollapsed = new UBSetting(this,"Board","LeftLibPaletteBoardModeIsCollapsed",false);
     leftLibPaletteDesktopModeWidth = new UBSetting(this, "Board", "LeftLibPaletteDesktopModeWidth",270);
     leftLibPaletteDesktopModeIsCollapsed = new UBSetting(this,"Board","LeftLibPaletteDesktopModeIsCollapsed",false);
 
+    userCrossDarkBackground = new UBColorListSetting(this, "Board", "crossDarkBackgroundColor", "127 127 127", 0.75);
+    userCrossLightBackground = new UBColorListSetting(this, "Board", "crossLightBackgroundColor", "83 173 173", 1);
+
+    QColor bgCrossColor;
+    QStringList colors;
+    colors = userCrossDarkBackground->get().toString().split(" ", QString::SkipEmptyParts);
+    if (3 == colors.count())
+        crossDarkBackground = QColor(colors[0].toInt(),colors[1].toInt(),colors[2].toInt());
+    if (4 == colors.count())
+        crossDarkBackground = QColor(colors[0].toInt(),colors[1].toInt(),colors[2].toInt(), colors[3].toInt());
+
+    colors = userCrossLightBackground->get().toString().split(" ", QString::SkipEmptyParts);
+    if (3 == colors.count())
+        crossLightBackground = QColor(colors[0].toInt(),colors[1].toInt(),colors[2].toInt());
+    if (4 == colors.count())
+        crossLightBackground = QColor(colors[0].toInt(),colors[1].toInt(),colors[2].toInt(), colors[3].toInt());
+
     appIsInSoftwareUpdateProcess = new UBSetting(this, "App", "IsInSoftwareUpdateProcess", false);
     appLastSessionDocumentUUID = new UBSetting(this, "App", "LastSessionDocumentUUID", "");
     appLastSessionPageIndex = new UBSetting(this, "App", "LastSessionPageIndex", 0);
     appUseMultiscreen = new UBSetting(this, "App", "UseMusliscreenMode", true);
 
+    appStartupHintsEnabled = new UBSetting(this,"App","EnableStartupHints",true);
+
     appStartMode = new UBSetting(this, "App", "StartMode", "");
 
     featureSliderPosition = new UBSetting(this, "Board", "FeatureSliderPosition", 40);
@@ -252,6 +276,13 @@ void UBSettings::init()
     boardUseHighResTabletEvent = new UBSetting(this, "Board", "UseHighResTabletEvent", true);
 
     boardKeyboardPaletteKeyBtnSize = new UBSetting(this, "Board", "KeyboardPaletteKeyBtnSize", "16x16");
+
+
+    cacheKeepAspectRatio = new UBSetting(this, "Cache", "KeepAspectRatio", true);
+    cacheMode = new UBSetting(this, "Cache", "CasheMode", 0);
+    casheLastHoleSize = new UBSetting(this, "Cache", "LastHoleSize", QSize(20,20));
+    cacheColor = new UBColorListSetting(this, "Cache", "Color", "0 0 0", 0.75);
+
     ValidateKeyboardPaletteKeyBtnSize();
 
     pageSize = new UBSetting(this, "Board", "DefaultPageSize", documentSizes.value(DocumentSizeRatio::Ratio4_3));
@@ -348,6 +379,7 @@ void UBSettings::init()
     appOnlineUserName = new UBSetting(this, "App", "OnlineUserName", "");
 
     boardShowToolsPalette = new UBSetting(this, "Board", "ShowToolsPalette", "false");
+    magnifierDrawingMode = new UBSetting(this, "Board", "MagnifierDrawingMode", "0");
 
     svgViewBoxMargin = new UBSetting(this, "SVG", "ViewBoxMargin", "50");
 
@@ -888,6 +920,16 @@ QString UBSettings::userDocumentDirectory()
     return documentDirectory;
 }
 
+QString UBSettings::userBookmarkDirectory()
+{
+    static QString bookmarkDirectory = "";
+    if(bookmarkDirectory.isEmpty()){
+        bookmarkDirectory = userDataDirectory() + "/bookmark";
+        checkDirectory(bookmarkDirectory);
+    }
+    return bookmarkDirectory;
+}
+
 QString UBSettings::userFavoriteListFilePath()
 {
     static QString filePath = "";
@@ -1000,6 +1042,34 @@ QString UBSettings::userInteractiveDirectory()
     return interactiveDirectory;
 }
 
+QString UBSettings::userApplicationDirectory()
+{
+    static QString applicationDirectory = "";
+    if(applicationDirectory.isEmpty()){
+        if (sAppSettings && getAppSettings()->contains("App/UserApplicationDirectory")) {
+            applicationDirectory = getAppSettings()->value("App/UserApplicationDirectory").toString();
+            applicationDirectory = replaceWildcard(applicationDirectory);
+            if(checkDirectory(applicationDirectory))
+                return applicationDirectory;
+            else
+                qCritical() << "failed to create directory " << applicationDirectory;
+        }
+        applicationDirectory = userDataDirectory() + "/application";
+        checkDirectory(applicationDirectory);
+    }
+    return applicationDirectory;
+}
+
+QString UBSettings::userWidgetPath()
+{
+    return userInteractiveDirectory() + tr("/Web");
+}
+
+QString UBSettings::userRelativeWidgetPath()
+{
+    QString result = userWidgetPath().replace(userInteractiveDirectory(), "");
+    return result.startsWith("/") ? result.right(result.count() - 1) : result;
+}
 
 QString UBSettings::applicationInteractivesDirectory()
 {
@@ -1072,6 +1142,19 @@ QString UBSettings::applicationAnimationsLibraryDirectory()
     }
 }
 
+QString UBSettings::applicationStartupHintsDirectory()
+{
+    QString defaultRelativePath = QString("./startupHints");
+
+    QString configPath = value("StartupHintsDirectory", QVariant(defaultRelativePath)).toString();
+
+    if (configPath.startsWith(".")) {
+        return UBPlatformUtils::applicationResourcesDirectory() + configPath.right(configPath.size() - 1);
+    }
+    else
+        return configPath;
+}
+
 QString UBSettings::userInteractiveFavoritesDirectory()
 {
     static QString dirPath = "";
diff --git a/Sankore-3.1/src/core/UBSettings.h b/Sankore-3.1/src/core/UBSettings.h
index 3871289..0e65e8f 100644
--- a/Sankore-3.1/src/core/UBSettings.h
+++ b/Sankore-3.1/src/core/UBSettings.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBSETTINGS_H_
 #define UBSETTINGS_H_
 
@@ -39,6 +40,7 @@ class UBSettings : public QObject
 
         static UBSettings* settings();
         static void destroy();
+        void init();
 
     private:
 
@@ -117,11 +119,10 @@ class UBSettings : public QObject
         int libraryIconSize();
         void setLibraryIconsize(const int& size);
 
-        void init();
-
         //user directories
         static QString userDataDirectory();
         static QString userDocumentDirectory();
+        static QString userBookmarkDirectory();
         static QString userFavoriteListFilePath();
         static QString userTrashDirPath();
         static QString userImageDirectory();
@@ -130,6 +131,9 @@ class UBSettings : public QObject
         static QString userSearchDirectory();
         static QString userAnimationDirectory();
         static QString userInteractiveDirectory();
+        static QString userApplicationDirectory();
+        static QString userWidgetPath();
+        static QString userRelativeWidgetPath();
         static QString userInteractiveFavoritesDirectory();
         static QString userPodcastRecordingDirectory();
 
@@ -145,6 +149,7 @@ class UBSettings : public QObject
         QString applicationAudiosLibraryDirectory();
         QString applicationVideosLibraryDirectory();
         QString applicationAnimationsLibraryDirectory();
+        QString applicationStartupHintsDirectory();
 
         QNetworkProxy* httpProxy();
 
@@ -242,6 +247,8 @@ class UBSettings : public QObject
 
         UBSetting* appUseMultiscreen;
 
+        UBSetting* appStartupHintsEnabled;
+
         UBSetting* boardPenFineWidth;
         UBSetting* boardPenMediumWidth;
         UBSetting* boardPenStrongWidth;
@@ -267,6 +274,9 @@ class UBSettings : public QObject
         UBColorListSetting* boardPenDarkBackgroundColors;
         UBColorListSetting* boardPenDarkBackgroundSelectedColors;
 
+        UBSetting* userCrossDarkBackground;
+        UBSetting* userCrossLightBackground;
+
         UBSetting* boardMarkerAlpha;
 
         UBColorListSetting* boardMarkerLightBackgroundColors;
@@ -349,6 +359,8 @@ class UBSettings : public QObject
         UBSetting* rightLibPaletteBoardModeIsCollapsed;
         UBSetting* rightLibPaletteDesktopModeWidth;
         UBSetting* rightLibPaletteDesktopModeIsCollapsed;
+        UBSetting* rightLibPaletteWebModeWidth;
+        UBSetting* rightLibPaletteWebModeIsCollapsed;
         UBSetting* leftLibPaletteBoardModeWidth;
         UBSetting* leftLibPaletteBoardModeIsCollapsed;
         UBSetting* leftLibPaletteDesktopModeWidth;
@@ -371,6 +383,13 @@ class UBSettings : public QObject
 
         UBSetting* libIconSize;
 
+        UBSetting* magnifierDrawingMode;
+
+        UBSetting *cacheKeepAspectRatio;
+        UBSetting *cacheMode;
+        UBSetting *casheLastHoleSize;
+        UBSetting *cacheColor;
+
     public slots:
 
         void setPenWidthIndex(int index);
diff --git a/Sankore-3.1/src/core/main.cpp b/Sankore-3.1/src/core/main.cpp
index e965109..af7c60e 100644
--- a/Sankore-3.1/src/core/main.cpp
+++ b/Sankore-3.1/src/core/main.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 #include <QTextCodec>
 
diff --git a/Sankore-3.1/src/core/memcheck.h b/Sankore-3.1/src/core/memcheck.h
index 8d0a107..2c90405 100644
--- a/Sankore-3.1/src/core/memcheck.h
+++ b/Sankore-3.1/src/core/memcheck.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if defined(WIN32) && defined(_DEBUG)
    #include <cstdlib>
    #define DEBUG_NEW new( _NORMAL_BLOCK, __FILE__, __LINE__ )
diff --git a/Sankore-3.1/src/customWidgets/UBActionableWidget.cpp b/Sankore-3.1/src/customWidgets/UBActionableWidget.cpp
index d1d055f..ba334ac 100644
--- a/Sankore-3.1/src/customWidgets/UBActionableWidget.cpp
+++ b/Sankore-3.1/src/customWidgets/UBActionableWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QPainter>
 #include <QDebug>
 
diff --git a/Sankore-3.1/src/customWidgets/UBActionableWidget.h b/Sankore-3.1/src/customWidgets/UBActionableWidget.h
index 7a477b1..cdc8e76 100644
--- a/Sankore-3.1/src/customWidgets/UBActionableWidget.h
+++ b/Sankore-3.1/src/customWidgets/UBActionableWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBACTIONABLEWIDGET_H
 #define UBACTIONABLEWIDGET_H
 
diff --git a/Sankore-3.1/src/customWidgets/UBGraphicsItemAction.cpp b/Sankore-3.1/src/customWidgets/UBGraphicsItemAction.cpp
new file mode 100644
index 0000000..323577b
--- /dev/null
+++ b/Sankore-3.1/src/customWidgets/UBGraphicsItemAction.cpp
@@ -0,0 +1,188 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+
+#include "UBGraphicsItemAction.h"
+#include "core/UBApplication.h"
+#include "core/UBPersistenceManager.h"
+#include "board/UBBoardController.h"
+#include "web/UBWebController.h"
+#include "document/UBDocumentController.h"
+#include "document/UBDocumentProxy.h"
+#include "document/UBDocumentContainer.h"
+
+#include "board/UBBoardController.h"
+
+
+UBGraphicsItemAction::UBGraphicsItemAction(eUBGraphicsItemLinkType linkType, QObject *parent) :
+    QObject(parent)
+{
+    mLinkType = linkType;
+}
+
+ void UBGraphicsItemAction::actionRemoved()
+ {
+    //NOOP
+ }
+
+
+UBGraphicsItemPlayAudioAction::UBGraphicsItemPlayAudioAction(QString audioFile, bool isNewAction, QObject *parent) :
+    UBGraphicsItemAction(eLinkToAudio,parent)
+  , mMediaObject(0)
+  , mIsLoading(true)
+{
+    Q_ASSERT(audioFile.length() > 0);
+    if(isNewAction){
+        QString extension = QFileInfo(audioFile).completeSuffix();
+        QString destDir = UBApplication::boardController->selectedDocument()->persistencePath() + "/" + UBPersistenceManager::audioDirectory;
+        QString destFile = destDir + "/" + QUuid::createUuid().toString() + "." + extension;
+        if(!QDir(destDir).exists())
+            QDir(UBApplication::boardController->selectedDocument()->persistencePath()).mkdir(destDir);
+        QFile(audioFile).copy(destFile);
+        mAudioPath = destFile;
+    }
+    else{
+        //another hack
+        if(UBApplication::documentController && UBApplication::documentController->selectedDocument())
+            mAudioPath = UBApplication::documentController->selectedDocument()->persistencePath() + "/" + audioFile;
+        else return;
+    }
+    mAudioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
+    mMediaObject = new Phonon::MediaObject(this);
+    Phonon::createPath(mMediaObject, mAudioOutput);
+    mMediaObject->setCurrentSource(Phonon::MediaSource(mAudioPath));
+}
+
+
+UBGraphicsItemPlayAudioAction::UBGraphicsItemPlayAudioAction() :
+    UBGraphicsItemAction(eLinkToAudio,NULL)
+  , mMediaObject(0)
+  , mIsLoading(true)
+{
+}
+
+
+void UBGraphicsItemPlayAudioAction::setPath(QString audioPath)
+{
+    Q_ASSERT(audioPath.length() > 0);
+    mAudioPath = audioPath;
+    mAudioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
+    mMediaObject = new Phonon::MediaObject(this);
+    Phonon::createPath(mMediaObject, mAudioOutput);
+    mMediaObject->setCurrentSource(Phonon::MediaSource(mAudioPath));
+}
+
+UBGraphicsItemPlayAudioAction::~UBGraphicsItemPlayAudioAction()
+{
+    if(!mMediaObject && mMediaObject->state() == Phonon::PlayingState)
+        mMediaObject->stop();
+}
+
+void UBGraphicsItemPlayAudioAction::play()
+{
+    if(mMediaObject->state() == Phonon::PlayingState){
+        mMediaObject->stop();
+    }
+    mMediaObject->seek(0);
+    mMediaObject->play();
+}
+
+
+QStringList UBGraphicsItemPlayAudioAction::save()
+{
+    //Another hack
+    if(UBApplication::documentController && UBApplication::documentController->selectedDocument()){
+        QString documentPath = UBApplication::documentController->selectedDocument()->persistencePath() + "/";
+        return QStringList() << QString("%1").arg(eLinkToAudio) <<  mAudioPath.replace(documentPath,"");
+    }
+    else{
+        int index = mAudioPath.indexOf("/audios/");
+        QString relativePath = mAudioPath.remove(0,index + 1);
+        return QStringList() << QString("%1").arg(eLinkToAudio) <<  relativePath;
+    }
+}
+
+void UBGraphicsItemPlayAudioAction::actionRemoved()
+{
+    QFile(mAudioPath).remove();
+}
+
+
+UBGraphicsItemMoveToPageAction::UBGraphicsItemMoveToPageAction(eUBGraphicsItemMovePageAction actionType, int page, QObject* parent) :
+    UBGraphicsItemAction(eLinkToPage,parent)
+{
+    mActionType = actionType;
+    mPage = page;
+}
+
+void UBGraphicsItemMoveToPageAction::play()
+{
+    UBBoardController* boardController = UBApplication::boardController;
+
+    switch (mActionType) {
+    case eMoveToFirstPage:
+        boardController->firstScene();
+        break;
+    case eMoveToLastPage:
+        boardController->lastScene();
+        break;
+    case eMoveToPreviousPage:
+        boardController->previousScene();
+        break;
+    case eMoveToNextPage:
+        boardController->nextScene();
+        break;
+    case eMoveToPage:
+        if(mPage > 0 && mPage < boardController->pageCount())
+            boardController->setActiveDocumentScene(mPage);
+        else
+            qWarning() << "scene number " << mPage << "ins't accessible anymore";
+        break;
+    default:
+        break;
+    }
+}
+
+QStringList UBGraphicsItemMoveToPageAction::save()
+{
+    return QStringList() << QString("%1").arg(eLinkToPage) << QString("%1").arg(mActionType) << QString("%1").arg(mPage);
+}
+
+
+UBGraphicsItemLinkToWebPageAction::UBGraphicsItemLinkToWebPageAction(QString url, QObject *parent) :
+    UBGraphicsItemAction(eLinkToWebUrl,parent)
+{
+    Q_ASSERT(url.length());
+    if(!url.startsWith("http://"))
+        url = "http://" + url;
+    mUrl = url;
+}
+
+void UBGraphicsItemLinkToWebPageAction::play()
+{
+    UBApplication::webController->loadUrl(QUrl(mUrl));
+}
+
+QStringList UBGraphicsItemLinkToWebPageAction::save()
+{
+    return QStringList() << QString("%1").arg(eLinkToWebUrl) << mUrl;
+}
diff --git a/Sankore-3.1/src/customWidgets/UBGraphicsItemAction.h b/Sankore-3.1/src/customWidgets/UBGraphicsItemAction.h
new file mode 100644
index 0000000..26a5513
--- /dev/null
+++ b/Sankore-3.1/src/customWidgets/UBGraphicsItemAction.h
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+
+#ifndef UBGRAPHICSITEMSACTIONS_H
+#define UBGRAPHICSITEMSACTIONS_H
+
+#include <QObject>
+#include <phonon>
+
+
+enum eUBGraphicsItemMovePageAction {
+    eMoveToFirstPage = 0,
+    eMoveToLastPage,
+    eMoveToPreviousPage,
+    eMoveToNextPage,
+    eMoveToPage
+} ;
+
+enum eUBGraphicsItemLinkType
+{
+    eLinkToAudio = 0,
+    eLinkToPage,
+    eLinkToWebUrl
+};
+
+class UBGraphicsItemAction : public QObject
+{
+    Q_OBJECT
+public:
+    UBGraphicsItemAction(eUBGraphicsItemLinkType linkType,QObject* parent = 0);
+    virtual void play() = 0;
+    virtual QStringList save() = 0;
+    virtual void actionRemoved();
+    virtual QString path() {return "";}
+    eUBGraphicsItemLinkType linkType() { return mLinkType;}
+
+signals:
+
+public slots:
+private:
+    eUBGraphicsItemLinkType mLinkType;
+
+};
+
+
+class UBGraphicsItemPlayAudioAction : public UBGraphicsItemAction
+{
+    Q_OBJECT
+
+public:
+    UBGraphicsItemPlayAudioAction(QString audioFile, bool isNewAction = true, QObject* parent = 0);
+    UBGraphicsItemPlayAudioAction();
+    ~UBGraphicsItemPlayAudioAction();
+    void play();
+    QStringList save();
+    void actionRemoved();
+    QString path() {return mAudioPath;}
+    void setPath(QString audioPath);
+
+private:
+    QString mAudioPath;
+    Phonon::MediaObject *mMediaObject;
+    Phonon::AudioOutput *mAudioOutput;
+    bool mIsLoading;
+};
+
+
+class UBGraphicsItemMoveToPageAction : public UBGraphicsItemAction
+{
+    Q_OBJECT
+
+public:
+    UBGraphicsItemMoveToPageAction(eUBGraphicsItemMovePageAction actionType, int page = 0, QObject* parent = 0);
+    void play();
+    QStringList save();
+
+private:
+    eUBGraphicsItemMovePageAction mActionType;
+    int mPage;
+
+};
+
+class UBGraphicsItemLinkToWebPageAction : public UBGraphicsItemAction
+{
+    Q_OBJECT
+
+public:
+    UBGraphicsItemLinkToWebPageAction(QString url, QObject* parent = 0);
+    void play();
+    QStringList save();
+
+private:
+    QString mUrl;
+};
+
+#endif // UBGRAPHICSITEMSACTIONS_H
diff --git a/Sankore-3.1/src/customWidgets/UBMediaWidget.cpp b/Sankore-3.1/src/customWidgets/UBMediaWidget.cpp
index 8890c68..48aecdb 100644
--- a/Sankore-3.1/src/customWidgets/UBMediaWidget.cpp
+++ b/Sankore-3.1/src/customWidgets/UBMediaWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "core/UBApplication.h"
 #include "globals/UBGlobals.h"
 #include "UBMediaWidget.h"
diff --git a/Sankore-3.1/src/customWidgets/UBMediaWidget.h b/Sankore-3.1/src/customWidgets/UBMediaWidget.h
index 7a18652..973b922 100644
--- a/Sankore-3.1/src/customWidgets/UBMediaWidget.h
+++ b/Sankore-3.1/src/customWidgets/UBMediaWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBMEDIAWIDGET_H
 #define UBMEDIAWIDGET_H
 
diff --git a/Sankore-3.1/src/customWidgets/customWidgets.pri b/Sankore-3.1/src/customWidgets/customWidgets.pri
index a3c6403..553f670 100644
--- a/Sankore-3.1/src/customWidgets/customWidgets.pri
+++ b/Sankore-3.1/src/customWidgets/customWidgets.pri
@@ -1,8 +1,10 @@
 
 HEADERS      += \
     src/customWidgets/UBMediaWidget.h \
-    src/customWidgets/UBActionableWidget.h
+    src/customWidgets/UBActionableWidget.h \
+    src/customWidgets/UBGraphicsItemAction.h
 
 SOURCES      += \
     src/customWidgets/UBMediaWidget.cpp \
-    src/customWidgets/UBActionableWidget.cpp
+    src/customWidgets/UBActionableWidget.cpp \
+    src/customWidgets/UBGraphicsItemAction.cpp
diff --git a/Sankore-3.1/src/desktop/UBCustomCaptureWindow.cpp b/Sankore-3.1/src/desktop/UBCustomCaptureWindow.cpp
index c00920f..fa7045d 100644
--- a/Sankore-3.1/src/desktop/UBCustomCaptureWindow.cpp
+++ b/Sankore-3.1/src/desktop/UBCustomCaptureWindow.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
diff --git a/Sankore-3.1/src/desktop/UBCustomCaptureWindow.h b/Sankore-3.1/src/desktop/UBCustomCaptureWindow.h
index 544f50f..c82a092 100644
--- a/Sankore-3.1/src/desktop/UBCustomCaptureWindow.h
+++ b/Sankore-3.1/src/desktop/UBCustomCaptureWindow.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
diff --git a/Sankore-3.1/src/desktop/UBDesktopAnnotationController.cpp b/Sankore-3.1/src/desktop/UBDesktopAnnotationController.cpp
index e11b401..470dd9d 100644
--- a/Sankore-3.1/src/desktop/UBDesktopAnnotationController.cpp
+++ b/Sankore-3.1/src/desktop/UBDesktopAnnotationController.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -41,6 +41,7 @@
 #include "board/UBBoardPaletteManager.h"
 
 #include "domain/UBGraphicsScene.h"
+#include "domain/UBGraphicsPolygonItem.h"
 
 #include "UBCustomCaptureWindow.h"
 #include "UBWindowCapture.h"
@@ -178,6 +179,25 @@ UBDesktopPalette* UBDesktopAnnotationController::desktopPalette()
     return mDesktopPalette;
 }
 
+QPainterPath UBDesktopAnnotationController::desktopPalettePath() const
+{
+    QPainterPath result;
+    if (mDesktopPalette && mDesktopPalette->isVisible()) {
+        result.addRect(mDesktopPalette->geometry());
+    }
+    if (mDesktopPenPalette && mDesktopPenPalette->isVisible()) {
+        result.addRect(mDesktopPenPalette->geometry());
+    }
+    if (mDesktopMarkerPalette && mDesktopMarkerPalette->isVisible()) {
+        result.addRect(mDesktopMarkerPalette->geometry());
+    }
+    if (mDesktopEraserPalette && mDesktopEraserPalette->isVisible()) {
+        result.addRect(mDesktopEraserPalette->geometry());
+    }
+
+    return result;
+}
+
 /**
  * \brief Toggle the visibility of the pen associated palette
  * @param checked as the visibility state
@@ -820,6 +840,7 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent)
         // Here we have to generate a new mask This method is certainly resource
         // consuming but for the moment this is the only solution that I found.
         mMask = QPixmap(mTransparentDrawingView->width(), mTransparentDrawingView->height());
+        mMask.fill(Qt::transparent);
 
         QPainter p;
 
@@ -836,7 +857,7 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent)
         if(UBApplication::boardController->paletteManager()->mKeyboardPalette->isVisible())
         {
             p.drawRect(UBApplication::boardController->paletteManager()->mKeyboardPalette->geometry().x(), UBApplication::boardController->paletteManager()->mKeyboardPalette->geometry().y(), 
-                UBApplication::boardController->paletteManager()->mKeyboardPalette->width(), UBApplication::boardController->paletteManager()->mKeyboardPalette->height());
+                       UBApplication::boardController->paletteManager()->mKeyboardPalette->width(), UBApplication::boardController->paletteManager()->mKeyboardPalette->height());
         }
 
         if(UBApplication::boardController->paletteManager()->leftPalette()->isVisible())
@@ -896,7 +917,7 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent)
         {
             QGraphicsItem* pCrntItem = allItems.at(i);
 
-            if(pCrntItem->isVisible())
+            if(pCrntItem->isVisible() && pCrntItem->type() == UBGraphicsPolygonItem::Type)
             {
                 QPainterPath crntPath = pCrntItem->shape();
                 QRectF rect = crntPath.boundingRect();
@@ -907,7 +928,7 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent)
 
         annotationPainter.end();
 
-        mTransparentDrawingView->setMask(mMask.createMaskFromColor(Qt::black));
+        mTransparentDrawingView->setMask(mMask.mask());
     }
     else
     {
diff --git a/Sankore-3.1/src/desktop/UBDesktopAnnotationController.h b/Sankore-3.1/src/desktop/UBDesktopAnnotationController.h
index a3c3b23..d32faba 100644
--- a/Sankore-3.1/src/desktop/UBDesktopAnnotationController.h
+++ b/Sankore-3.1/src/desktop/UBDesktopAnnotationController.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -60,6 +60,7 @@ class UBDesktopAnnotationController : public QObject
         void hideWindow();
 
         UBDesktopPalette *desktopPalette();
+        QPainterPath desktopPalettePath() const;
         UBBoardView *drawingView();
 
         void TransparentWidgetResized();
diff --git a/Sankore-3.1/src/desktop/UBDesktopPalette.cpp b/Sankore-3.1/src/desktop/UBDesktopPalette.cpp
index aba1ad1..4a53132 100644
--- a/Sankore-3.1/src/desktop/UBDesktopPalette.cpp
+++ b/Sankore-3.1/src/desktop/UBDesktopPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBDesktopPalette.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/desktop/UBDesktopPalette.h b/Sankore-3.1/src/desktop/UBDesktopPalette.h
index ca3c340..63dc396 100644
--- a/Sankore-3.1/src/desktop/UBDesktopPalette.h
+++ b/Sankore-3.1/src/desktop/UBDesktopPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBUNINOTESWINDOW_H_
 #define UBUNINOTESWINDOW_H_
 #include <QtGui>
diff --git a/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.cpp b/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.cpp
index 83f1c3f..f5d88bc 100644
--- a/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.cpp
+++ b/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,6 +18,15 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
+#include "UBDesktopPropertyPalette.h"
+
+#include "core/UBApplication.h"
+#include "board/UBBoardController.h"
+#include "board/UBDrawingController.h"
+#include "gui/UBMainWindow.h"
+#include "gui/UBToolbarButtonGroup.h"
 #include "gui/UBRightPalette.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.h b/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.h
index f6d9ebd..95d070e 100644
--- a/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.h
+++ b/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
diff --git a/Sankore-3.1/src/desktop/UBWindowCapture.h b/Sankore-3.1/src/desktop/UBWindowCapture.h
index 81ffcee..7737504 100644
--- a/Sankore-3.1/src/desktop/UBWindowCapture.h
+++ b/Sankore-3.1/src/desktop/UBWindowCapture.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWINDOWCAPTURE_H_
 #define UBWINDOWCAPTURE_H_
 
diff --git a/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.cpp b/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.cpp
index 53ca5ae..1b63803 100644
--- a/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.cpp
+++ b/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBWindowCaptureDelegate_win.h"
 #include <windows.h>
 
diff --git a/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.h b/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.h
index 2a3a3b1..081e1e6 100644
--- a/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.h
+++ b/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWINDOWCAPTUREDELEGATE_H_
 #define UBWINDOWCAPTUREDELEGATE_H_
 
diff --git a/Sankore-3.1/src/desktop/UBWindowCapture_linux.cpp b/Sankore-3.1/src/desktop/UBWindowCapture_linux.cpp
index f28dbc2..f6510f5 100644
--- a/Sankore-3.1/src/desktop/UBWindowCapture_linux.cpp
+++ b/Sankore-3.1/src/desktop/UBWindowCapture_linux.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
diff --git a/Sankore-3.1/src/desktop/UBWindowCapture_mac.mm b/Sankore-3.1/src/desktop/UBWindowCapture_mac.mm
index bc63657..68eb260 100644
--- a/Sankore-3.1/src/desktop/UBWindowCapture_mac.mm
+++ b/Sankore-3.1/src/desktop/UBWindowCapture_mac.mm
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #include "UBWindowCapture.h"
 #include "UBDesktopAnnotationController.h"
diff --git a/Sankore-3.1/src/desktop/UBWindowCapture_win.cpp b/Sankore-3.1/src/desktop/UBWindowCapture_win.cpp
index 433d9f3..60bf187 100644
--- a/Sankore-3.1/src/desktop/UBWindowCapture_win.cpp
+++ b/Sankore-3.1/src/desktop/UBWindowCapture_win.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
diff --git a/Sankore-3.1/src/desktop/desktop.pri b/Sankore-3.1/src/desktop/desktop.pri
index 5fb3934..70282f8 100644
--- a/Sankore-3.1/src/desktop/desktop.pri
+++ b/Sankore-3.1/src/desktop/desktop.pri
@@ -17,6 +17,4 @@ win32 {
 
 macx:OBJECTIVE_SOURCES += src/desktop/UBWindowCapture_mac.mm
 
-linux-g++:SOURCES += src/desktop/UBWindowCapture_linux.cpp
-linux-g++-32:SOURCES += src/desktop/UBWindowCapture_linux.cpp
-linux-g++-64:SOURCES += src/desktop/UBWindowCapture_linux.cpp
+linux-*:SOURCES += src/desktop/UBWindowCapture_linux.cpp
diff --git a/Sankore-3.1/src/document/UBDocumentContainer.cpp b/Sankore-3.1/src/document/UBDocumentContainer.cpp
index 81899b8..5feb801 100644
--- a/Sankore-3.1/src/document/UBDocumentContainer.cpp
+++ b/Sankore-3.1/src/document/UBDocumentContainer.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,128 +18,127 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBDocumentContainer.h"
-#include "adaptors/UBThumbnailAdaptor.h"
-#include "core/UBPersistenceManager.h"
-#include "core/memcheck.h"
-
-
-UBDocumentContainer::UBDocumentContainer(QObject * parent)
-    :QObject(parent)
-    ,mCurrentDocument(NULL)
-{}
-
-UBDocumentContainer::~UBDocumentContainer()
-{
-    foreach(const QPixmap* pm, mDocumentThumbs){
-        delete pm;
-        pm = NULL;
-    }
-}
-
-void UBDocumentContainer::setDocument(UBDocumentProxy* document, bool forceReload)
-{
-    if (mCurrentDocument != document || forceReload)
-    {
-        mCurrentDocument = document;
-        reloadThumbnails();
-        emit documentSet(mCurrentDocument);
-    }
-}
-
-void UBDocumentContainer::duplicatePages(QList<int>& pageIndexes)
-{
-    int offset = 0;
-    foreach(int sceneIndex, pageIndexes)
-    {
-        UBPersistenceManager::persistenceManager()->duplicateDocumentScene(mCurrentDocument, sceneIndex + offset);
-        offset++;
-    }
-}
-
-bool UBDocumentContainer::movePageToIndex(int source, int target)
-{
-    if (source==0)
-    {
-        // Title page - cant be moved
-        return false;
-    }
-    UBPersistenceManager::persistenceManager()->moveSceneToIndex(mCurrentDocument, source, target);
-    deleteThumbPage(source);
-    insertThumbPage(target);
-    emit documentThumbnailsUpdated(this);
-    return true;
-}
-
-void UBDocumentContainer::deletePages(QList<int>& pageIndexes)
-{
-    UBPersistenceManager::persistenceManager()->deleteDocumentScenes(mCurrentDocument, pageIndexes);
-    int offset = 0;
-    foreach(int index, pageIndexes)
-    {
-        deleteThumbPage(index - offset);
-        offset++;
-    }
-    emit documentThumbnailsUpdated(this);
-}
-
-void UBDocumentContainer::addPage(int index)
-{
-    UBPersistenceManager::persistenceManager()->createDocumentSceneAt(mCurrentDocument, index);
-    insertThumbPage(index);
-    emit documentThumbnailsUpdated(this);
-}
-
-void UBDocumentContainer::updatePage(int index)
-{
-    updateThumbPage(index);
-    emit documentThumbnailsUpdated(this);
-}
-
-void UBDocumentContainer::deleteThumbPage(int index)
-{
-    mDocumentThumbs.removeAt(index);
-}
-
-void UBDocumentContainer::updateThumbPage(int index)
-{
-    mDocumentThumbs[index] = UBThumbnailAdaptor::get(mCurrentDocument, index);
-    emit documentPageUpdated(index);
-}
-
-void UBDocumentContainer::insertThumbPage(int index)
-{
-    mDocumentThumbs.insert(index, UBThumbnailAdaptor::get(mCurrentDocument, index));
-}
-
-void UBDocumentContainer::reloadThumbnails()
-{
-    if (mCurrentDocument)
-    {
-        UBThumbnailAdaptor::load(mCurrentDocument, mDocumentThumbs);
-        qDebug() << "Reloading Thumbnails. new mDocumentThumbs size: " << mDocumentThumbs.size();
-        emit documentThumbnailsUpdated(this);
-    }
-}
-
-int UBDocumentContainer::pageFromSceneIndex(int sceneIndex)
-{
-    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
-        return sceneIndex;
-    return sceneIndex+1;
-}
-
-int UBDocumentContainer::sceneIndexFromPage(int page)
-{
-    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
-        return page;
-    return page-1;
-}
-
-void UBDocumentContainer::addEmptyThumbPage()
-{
-	const QPixmap* pThumb = new QPixmap();
-	mDocumentThumbs.append(pThumb);
-}
+
+
+#include "UBDocumentContainer.h"
+#include "adaptors/UBThumbnailAdaptor.h"
+#include "core/UBPersistenceManager.h"
+#include "core/memcheck.h"
+
+UBDocumentContainer::UBDocumentContainer(QObject * parent)
+    :QObject(parent)
+    ,mCurrentDocument(NULL)
+{}
+
+UBDocumentContainer::~UBDocumentContainer()
+{
+    foreach(const QPixmap* pm, mDocumentThumbs){
+        delete pm;
+        pm = NULL;
+    }
+}
+
+void UBDocumentContainer::setDocument(UBDocumentProxy* document, bool forceReload)
+{
+    if (mCurrentDocument != document || forceReload)
+    {
+        mCurrentDocument = document;
+        reloadThumbnails();
+        emit documentSet(mCurrentDocument);
+    }
+}
+
+void UBDocumentContainer::duplicatePages(QList<int>& pageIndexes)
+{
+    int offset = 0;
+    foreach(int sceneIndex, pageIndexes) {
+        UBPersistenceManager::persistenceManager()->duplicateDocumentScene(mCurrentDocument, sceneIndex + offset);
+        offset++;
+    }
+}
+
+bool UBDocumentContainer::movePageToIndex(int source, int target)
+{
+    if (source==0)
+    {
+        // Title page - cant be moved
+        return false;
+    }
+    UBPersistenceManager::persistenceManager()->moveSceneToIndex(mCurrentDocument, source, target);
+    deleteThumbPage(source);
+    insertThumbPage(target);
+    emit documentThumbnailsUpdated(this);
+    return true;
+}
+
+void UBDocumentContainer::deletePages(QList<int>& pageIndexes)
+{
+    UBPersistenceManager::persistenceManager()->deleteDocumentScenes(mCurrentDocument, pageIndexes);
+    int offset = 0;
+    foreach(int index, pageIndexes)
+    {
+        deleteThumbPage(index - offset);
+        offset++;
+    }
+    emit documentThumbnailsUpdated(this);
+}
+
+void UBDocumentContainer::addPage(int index)
+{
+    UBPersistenceManager::persistenceManager()->createDocumentSceneAt(mCurrentDocument, index);
+    insertThumbPage(index);
+    emit documentThumbnailsUpdated(this);
+}
+
+void UBDocumentContainer::updatePage(int index)
+{
+    updateThumbPage(index);
+    emit documentThumbnailsUpdated(this);
+}
+
+void UBDocumentContainer::deleteThumbPage(int index)
+{
+    mDocumentThumbs.removeAt(index);
+}
+
+void UBDocumentContainer::updateThumbPage(int index)
+{
+    mDocumentThumbs[index] = UBThumbnailAdaptor::get(mCurrentDocument, index);
+    emit documentPageUpdated(index);
+}
+
+void UBDocumentContainer::insertThumbPage(int index)
+{
+    mDocumentThumbs.insert(index, UBThumbnailAdaptor::get(mCurrentDocument, index));
+}
+
+void UBDocumentContainer::reloadThumbnails()
+{
+    if (mCurrentDocument) {
+        UBThumbnailAdaptor::load(mCurrentDocument, mDocumentThumbs);
+        qDebug() << "Reloading Thumbnails. new mDocumentThumbs size: " << mDocumentThumbs.size();
+    } else {
+        UBThumbnailAdaptor::clearThumbs(mDocumentThumbs);
+    }
+    emit documentThumbnailsUpdated(this);
+}
+
+int UBDocumentContainer::pageFromSceneIndex(int sceneIndex)
+{
+    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
+        return sceneIndex;
+    return sceneIndex+1;
+}
+
+int UBDocumentContainer::sceneIndexFromPage(int page)
+{
+    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
+        return page;
+    return page-1;
+}
+
+void UBDocumentContainer::addEmptyThumbPage()
+{
+	const QPixmap* pThumb = new QPixmap();
+	mDocumentThumbs.append(pThumb);
+}
diff --git a/Sankore-3.1/src/document/UBDocumentContainer.h b/Sankore-3.1/src/document/UBDocumentContainer.h
index 4481e31..730a47d 100644
--- a/Sankore-3.1/src/document/UBDocumentContainer.h
+++ b/Sankore-3.1/src/document/UBDocumentContainer.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,54 +18,56 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBDOCUMENTCONTAINER_H_
-#define UBDOCUMENTCONTAINER_H_
-
-#include <QtGui>
-#include "UBDocumentProxy.h"
-
-class UBDocumentContainer : public QObject
-{
-    Q_OBJECT
-
-    public:
-        UBDocumentContainer(QObject * parent = 0);
-        virtual ~UBDocumentContainer();
-
-        void setDocument(UBDocumentProxy* document, bool forceReload = false);
-
-        UBDocumentProxy* selectedDocument(){return mCurrentDocument;}
-        int pageCount(){return mDocumentThumbs.size();}
-        const QPixmap* pageAt(int index){return mDocumentThumbs[index];}
-
-        static int pageFromSceneIndex(int sceneIndex);    
-        static int sceneIndexFromPage(int sceneIndex); 
-
-        void duplicatePages(QList<int>& pageIndexes);
-        bool movePageToIndex(int source, int target);
-        void deletePages(QList<int>& pageIndexes);
-        void addPage(int index);
-        void updatePage(int index);
-        void addEmptyThumbPage();
-
-    private:
-        UBDocumentProxy* mCurrentDocument;
-        QList<const QPixmap*>  mDocumentThumbs;
-
-   
-    protected:
-        void deleteThumbPage(int index);
-        void updateThumbPage(int index);
-        void insertThumbPage(int index);
-        void reloadThumbnails();
-
-    signals:
-        void documentSet(UBDocumentProxy* document);
-        void documentPageUpdated(int index);
-        void documentThumbnailsUpdated(UBDocumentContainer* source);
-};
-
-
-#endif /* UBDOCUMENTPROXY_H_ */
+
+
+
+#ifndef UBDOCUMENTCONTAINER_H_
+#define UBDOCUMENTCONTAINER_H_
+
+#include <QtGui>
+#include "UBDocumentProxy.h"
+
+class UBDocumentContainer : public QObject
+{
+    Q_OBJECT
+
+    public:
+        UBDocumentContainer(QObject * parent = 0);
+        virtual ~UBDocumentContainer();
+
+        virtual void setDocument(UBDocumentProxy* document, bool forceReload = false);
+        void pureSetDocument(UBDocumentProxy *document) {mCurrentDocument = document;}
+
+        UBDocumentProxy* selectedDocument() {return mCurrentDocument;}
+        int pageCount() {return mDocumentThumbs.size();}
+        const QPixmap* pageAt(int index) {return mDocumentThumbs[index];}
+
+        static int pageFromSceneIndex(int sceneIndex);    
+        static int sceneIndexFromPage(int sceneIndex); 
+
+        void duplicatePages(QList<int>& pageIndexes);
+        bool movePageToIndex(int source, int target);
+        void deletePages(QList<int>& pageIndexes);
+        void addPage(int index);
+        void updatePage(int index);
+        void addEmptyThumbPage();
+        void reloadThumbnails();
+
+    private:
+        UBDocumentProxy* mCurrentDocument;
+        QList<const QPixmap*>  mDocumentThumbs;
+
+   
+    protected:
+        void deleteThumbPage(int index);
+        void updateThumbPage(int index);
+        void insertThumbPage(int index);
+
+    signals:
+        void documentSet(UBDocumentProxy* document);
+        void documentPageUpdated(int index);
+        void documentThumbnailsUpdated(UBDocumentContainer* source);
+};
+
+
+#endif /* UBDOCUMENTPROXY_H_ */
diff --git a/Sankore-3.1/src/document/UBDocumentController.cpp b/Sankore-3.1/src/document/UBDocumentController.cpp
index 00ae74b..5851f27 100644
--- a/Sankore-3.1/src/document/UBDocumentController.cpp
+++ b/Sankore-3.1/src/document/UBDocumentController.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,1697 +18,3328 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBDocumentController.h"
-
-#include <QtCore>
-#include <QtGui>
-
-#include "frameworks/UBFileSystemUtils.h"
-#include "frameworks/UBStringUtils.h"
-#include "frameworks/UBPlatformUtils.h"
-
-#include "core/UBApplication.h"
-#include "core/UBPersistenceManager.h"
-#include "core/UBDocumentManager.h"
-#include "core/UBApplicationController.h"
-#include "core/UBSettings.h"
-#include "core/UBSetting.h"
-
-#include "adaptors/UBExportPDF.h"
-#include "adaptors/UBThumbnailAdaptor.h"
-
-#include "adaptors/UBMetadataDcSubsetAdaptor.h"
-
-#include "board/UBBoardController.h"
-#include "board/UBBoardPaletteManager.h"
-#include "board/UBDrawingController.h"
-
-
-#include "gui/UBThumbnailView.h"
-#include "gui/UBDocumentTreeWidget.h"
-#include "gui/UBMousePressFilter.h"
-#include "gui/UBMessageWindow.h"
-#include "gui/UBMainWindow.h"
-#include "gui/UBDocumentToolsPalette.h"
-
-#include "domain/UBGraphicsScene.h"
-#include "domain/UBGraphicsSvgItem.h"
-#include "domain/UBGraphicsPixmapItem.h"
-
-#include "document/UBDocumentProxy.h"
-
-#include "ui_documents.h"
-#include "ui_mainWindow.h"
-
-#include "core/memcheck.h"
-
-UBDocumentController::UBDocumentController(UBMainWindow* mainWindow)
-   : UBDocumentContainer(mainWindow->centralWidget())
-   , mSelectionType(None)
-   , mParentWidget(mainWindow->centralWidget())
-   , mBoardController(UBApplication::boardController)
-   , mDocumentUI(0)
-   , mMainWindow(mainWindow)
-   , mDocumentWidget(0)
-   , mIsClosing(false)
-   , mToolsPalette(0)
-   , mToolsPalettePositionned(false)
-   , mTrashTi(0)
-   , mDocumentTrashGroupName(tr("Trash"))
-   , mDefaultDocumentGroupName(tr("Untitled Documents"))
-{
-    setupViews();
-    setupToolbar();
-    this->selectDocument(UBApplication::boardController->selectedDocument());
-    connect(this, SIGNAL(exportDone()), mMainWindow, SLOT(onExportDone()));
-    connect(this, SIGNAL(documentThumbnailsUpdated(UBDocumentContainer*)), this, SLOT(refreshDocumentThumbnailsView(UBDocumentContainer*)));
-}
-
-UBDocumentController::~UBDocumentController()
-{
-   if (mDocumentUI)
-       delete mDocumentUI;
-}
-
-
-void UBDocumentController::createNewDocument()
-{
-    UBDocumentGroupTreeItem* group = selectedDocumentGroupTreeItem();
-
-    if (group)
-    {
-        UBDocumentProxy *document = UBPersistenceManager::persistenceManager()->createDocument(group->groupName());
-
-        selectDocument(document);
-    }
-}
-
-
-UBDocumentProxyTreeItem* UBDocumentController::findDocument(UBDocumentProxy* proxy)
-{
-    QTreeWidgetItemIterator it(mDocumentUI->documentTreeWidget);
-
-    while (*it)
-    {
-        UBDocumentProxyTreeItem *treeItem = dynamic_cast<UBDocumentProxyTreeItem*>((*it));
-
-        if (treeItem && treeItem->proxy() == proxy)
-            return treeItem;
-
-        ++it;
-    }
-
-    return 0;
-}
-
-
-void UBDocumentController::selectDocument(UBDocumentProxy* proxy, bool setAsCurrentDocument)
-{
-    if (proxy==NULL)
-    {
-        setDocument(NULL);
-        return;
-    }
-
-    QTreeWidgetItemIterator it(mDocumentUI->documentTreeWidget);
-
-    mDocumentUI->documentTreeWidget->clearSelection();
-    mDocumentUI->documentTreeWidget->setCurrentItem(0);
-
-    UBDocumentProxyTreeItem* selected = 0;
-
-    while (*it)
-    {
-        UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>((*it));
-
-        if (pi)
-        {
-            if (setAsCurrentDocument)
-                pi->setIcon(0, QIcon(""));
-
-            pi->setSelected(false);
-
-            if (pi->proxy() == proxy)
-            {
-                selected = pi;
-            }
-        }
-
-        ++it;
-    }
-
-    if (selected)
-    {
-        setDocument(proxy);
-
-        selected->setSelected(true);
-
-        selected->parent()->setExpanded(true);
-        selected->setText(0, proxy->name());
-
-        if (setAsCurrentDocument)
-        {
-            selected->setIcon(0, QIcon(":/images/currentDocument.png"));
-            if (proxy != mBoardController->selectedDocument())
-                mBoardController->setActiveDocumentScene(proxy);
-        }
-
-        mDocumentUI->documentTreeWidget->setCurrentItem(selected);
-
-        mDocumentUI->documentTreeWidget->scrollToItem(selected);
-
-        mSelectionType = Document;
-    }
-}
-
-
-void UBDocumentController::createNewDocumentGroup()
-{
-    UBDocumentGroupTreeItem* docGroupItem = new UBDocumentGroupTreeItem(0); // deleted by the tree widget
-    int i = 1;
-    QString newFolderName = tr("New Folder");
-    while (allGroupNames().contains(newFolderName))
-    {
-        newFolderName = tr("New Folder") + " " + QVariant(i++).toString();
-    }
-    docGroupItem->setGroupName(newFolderName);
-
-    int trashIndex =  mDocumentUI->documentTreeWidget->indexOfTopLevelItem(mTrashTi);
-
-    mDocumentUI->documentTreeWidget->insertTopLevelItem(trashIndex, docGroupItem);
-    mDocumentUI->documentTreeWidget->setCurrentItem(docGroupItem);
-    mDocumentUI->documentTreeWidget->expandItem(docGroupItem);
-}
-
-
-UBDocumentProxy* UBDocumentController::selectedDocumentProxy()
-{
-    UBDocumentProxyTreeItem* proxyItem = selectedDocumentProxyTreeItem();
-    return proxyItem ? proxyItem->proxy() : 0;
-}
-
-
-UBDocumentProxyTreeItem* UBDocumentController::selectedDocumentProxyTreeItem()
-{
-    if (mDocumentUI && mDocumentUI->documentTreeWidget)
-    {
-        QList<QTreeWidgetItem *> selectedItems = mDocumentUI->documentTreeWidget->selectedItems();
-
-        foreach (QTreeWidgetItem * item, selectedItems)
-        {
-            UBDocumentProxyTreeItem* proxyItem = dynamic_cast<UBDocumentProxyTreeItem*>(item);
-
-            if (proxyItem)
-            {
-                return proxyItem;
-            }
-        }
-    }
-
-    return 0;
-}
-
-
-UBDocumentGroupTreeItem* UBDocumentController::selectedDocumentGroupTreeItem()
-{
-    QList<QTreeWidgetItem *> selectedItems = mDocumentUI->documentTreeWidget->selectedItems();
-
-    foreach (QTreeWidgetItem * item, selectedItems)
-    {
-        UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-
-        if (groupItem)
-        {
-            return groupItem;
-        }
-        else
-        {
-            UBDocumentGroupTreeItem* parent = dynamic_cast<UBDocumentGroupTreeItem*>(item->parent());
-            if (parent)
-            {
-                return parent;
-            }
-        }
-    }
-
-    return 0;
-}
-
-
-void UBDocumentController::itemSelectionChanged()
-{
-    reloadThumbnails();
-
-    if (selectedDocumentProxy())
-        mSelectionType = Document;
-    else if (selectedDocumentGroupTreeItem())
-        mSelectionType = Folder;
-    else
-        mSelectionType = None;
-
-    selectionChanged();
-}
-
-
-void UBDocumentController::setupViews()
-{
-
-    if (!mDocumentWidget)
-    {
-        mDocumentWidget = new QWidget(mMainWindow->centralWidget());
-        mMainWindow->addDocumentsWidget(mDocumentWidget);
-
-        mDocumentUI = new Ui::documents();
-
-        mDocumentUI->setupUi(mDocumentWidget);
-
-        int thumbWidth = UBSettings::settings()->documentThumbnailWidth->get().toInt();
-
-        mDocumentUI->documentZoomSlider->setValue(thumbWidth);
-        mDocumentUI->thumbnailWidget->setThumbnailWidth(thumbWidth);
-
-        connect(mDocumentUI->documentZoomSlider, SIGNAL(valueChanged(int)), this,
-                SLOT(documentZoomSliderValueChanged(int)));
-
-        connect(mMainWindow->actionOpen, SIGNAL(triggered()), this, SLOT(openSelectedItem()));
-        connect(mMainWindow->actionNewFolder, SIGNAL(triggered()), this, SLOT(createNewDocumentGroup()));
-        connect(mMainWindow->actionNewDocument, SIGNAL(triggered()), this, SLOT(createNewDocument()));
-
-        connect(mMainWindow->actionImport, SIGNAL(triggered(bool)), this, SLOT(importFile()));
-
-        QMenu* addMenu = new QMenu(mDocumentWidget);
-        mAddFolderOfImagesAction = addMenu->addAction(tr("Add Folder of Images"));
-        mAddImagesAction = addMenu->addAction(tr("Add Images"));
-        mAddFileToDocumentAction = addMenu->addAction(tr("Add Pages from File"));
-
-        connect(mAddFolderOfImagesAction, SIGNAL(triggered(bool)), this, SLOT(addFolderOfImages()));
-        connect(mAddFileToDocumentAction, SIGNAL(triggered(bool)), this, SLOT(addFileToDocument()));
-        connect(mAddImagesAction, SIGNAL(triggered(bool)), this, SLOT(addImages()));
-
-        foreach (QWidget* menuWidget,  mMainWindow->actionDocumentAdd->associatedWidgets())
-        {
-            QToolButton *tb = qobject_cast<QToolButton*>(menuWidget);
-
-            if (tb && !tb->menu())
-            {
-                tb->setObjectName("ubButtonMenu");
-                tb->setPopupMode(QToolButton::InstantPopup);
-
-                QMenu* menu = new QMenu(mDocumentWidget);
-
-                menu->addAction(mAddFolderOfImagesAction);
-                menu->addAction(mAddImagesAction);
-                menu->addAction(mAddFileToDocumentAction);
-
-                tb->setMenu(menu);
-            }
-        }
-
-        QMenu* exportMenu = new QMenu(mDocumentWidget);
-
-        UBDocumentManager *documentManager = UBDocumentManager::documentManager();
-        for (int i = 0; i < documentManager->supportedExportAdaptors().length(); i++)
-        {
-            UBExportAdaptor* adaptor = documentManager->supportedExportAdaptors()[i];
-            QAction *currentExportAction = exportMenu->addAction(adaptor->exportName());
-            currentExportAction->setData(i);
-            connect(currentExportAction, SIGNAL(triggered (bool)), this, SLOT(exportDocument()));
-            exportMenu->addAction(currentExportAction);
-        }
-
-        foreach (QWidget* menuWidget,  mMainWindow->actionExport->associatedWidgets())
-        {
-            QToolButton *tb = qobject_cast<QToolButton*>(menuWidget);
-
-            if (tb && !tb->menu())
-            {
-                tb->setObjectName("ubButtonMenu");
-                tb->setPopupMode(QToolButton::InstantPopup);
-
-                tb->setMenu(exportMenu);
-            }
-        }
-
-#ifdef Q_WS_MAC
-        mMainWindow->actionDelete->setShortcut(QKeySequence(Qt::Key_Backspace));
-#endif
-
-        connect(mMainWindow->actionDelete, SIGNAL(triggered()), this, SLOT(deleteSelectedItem()));
-        connect(mMainWindow->actionDuplicate, SIGNAL(triggered()), this, SLOT(duplicateSelectedItem()));
-        connect(mMainWindow->actionRename, SIGNAL(triggered()), this, SLOT(renameSelectedItem()));
-        connect(mMainWindow->actionAddToWorkingDocument, SIGNAL(triggered()), this, SLOT(addToDocument()));
-
-        loadDocumentProxies();
-
-        mDocumentUI->documentTreeWidget->setSelectionMode(QAbstractItemView::SingleSelection);
-        mDocumentUI->documentTreeWidget->setDragEnabled(true);
-        mDocumentUI->documentTreeWidget->viewport()->setAcceptDrops(true);
-        mDocumentUI->documentTreeWidget->setDropIndicatorShown(true);
-        mDocumentUI->documentTreeWidget->setIndentation(18); // 1.5 * /resources/style/treeview-branch-closed.png width
-        mDocumentUI->documentTreeWidget->setDragDropMode(QAbstractItemView::InternalMove);
-
-        connect(mDocumentUI->documentTreeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelectionChanged()));
-        connect(mDocumentUI->documentTreeWidget, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(itemChanged(QTreeWidgetItem *, int)));
-        connect(mDocumentUI->documentTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem *, int)), this, SLOT(itemClicked(QTreeWidgetItem *, int)));
-
-        connect(mDocumentUI->thumbnailWidget, SIGNAL(sceneDropped(UBDocumentProxy*, int, int)), this, SLOT(moveSceneToIndex ( UBDocumentProxy*, int, int)));
-        connect(mDocumentUI->thumbnailWidget, SIGNAL(resized()), this, SLOT(thumbnailViewResized()));
-        connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseDoubleClick(QGraphicsItem*, int)), this, SLOT(pageDoubleClicked(QGraphicsItem*, int)));
-        connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseClick(QGraphicsItem*, int)), this, SLOT(pageClicked(QGraphicsItem*, int)));
-
-        connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
-
-        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentCreated(UBDocumentProxy*)), this, SLOT(addDocumentInTree(UBDocumentProxy*)));
-
-        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)), this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
-
-        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneCreated(UBDocumentProxy*, int)), this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
-
-        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneWillBeDeleted(UBDocumentProxy*, int)), this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
-
-        mDocumentUI->thumbnailWidget->setBackgroundBrush(UBSettings::documentViewLightColor);
-
-        #ifdef Q_WS_MACX
-            mMessageWindow = new UBMessageWindow(NULL);
-        #else
-            mMessageWindow = new UBMessageWindow(mDocumentUI->thumbnailWidget);
-        #endif
-
-        mMessageWindow->hide();
-
-    }
-}
-
-
-QWidget* UBDocumentController::controlView()
-{
-    return mDocumentWidget;
-}
-
-
-void UBDocumentController::setupToolbar()
-{
-    UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->documentToolBar, mMainWindow->actionBoard);
-    connect(mMainWindow->actionDocumentTools, SIGNAL(triggered()), this, SLOT(toggleDocumentToolsPalette()));
-}
-
-void UBDocumentController::setupPalettes()
-{
-
-    mToolsPalette = new UBDocumentToolsPalette(controlView());
-
-    mToolsPalette->hide();
-
-    bool showToolsPalette = !mToolsPalette->isEmpty();
-    mMainWindow->actionDocumentTools->setVisible(showToolsPalette);
-
-    if (showToolsPalette)
-    {
-        mMainWindow->actionDocumentTools->trigger();
-    }
-}
-
-
-void UBDocumentController::show()
-{
-    selectDocument(mBoardController->selectedDocument());
-
-    selectionChanged();
-
-    if(!mToolsPalette)
-        setupPalettes();
-}
-
-
-void UBDocumentController::hide()
-{
-    // NOOP
-}
-
-
-void UBDocumentController::openSelectedItem()
-{
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-
-    QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
-
-    if (selectedItems.count() > 0)
-    {
-        UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (selectedItems.last());
-
-        if (thumb)
-        {
-            UBDocumentProxy* proxy = thumb->proxy();
-
-            if (proxy && isOKToOpenDocument(proxy))
-            {
-                UBApplication::applicationController->showBoard();
-            }
-        }
-    }
-    else
-    {
-        UBDocumentProxy* proxy = selectedDocumentProxy();
-
-        if (proxy && isOKToOpenDocument(proxy))
-        {
-            mBoardController->setActiveDocumentScene(proxy);
-            UBApplication::applicationController->showBoard();
-        }
-    }
-
-    QApplication::restoreOverrideCursor();
-}
-
-void UBDocumentController::duplicateSelectedItem()
-{
-    if (UBApplication::applicationController->displayMode() != UBApplicationController::Document)
-        return;
-
-	if (mSelectionType == Page)
-    {
-        QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
-        QList<int> selectedSceneIndexes;
-        foreach (QGraphicsItem *item, selectedItems)
-        {
-            UBSceneThumbnailPixmap *thumb = dynamic_cast<UBSceneThumbnailPixmap*>(item);
-            if (thumb)
-            {
-                UBDocumentProxy *proxy = thumb->proxy();
-
-                if (proxy)
-                {
-                    int sceneIndex = thumb->sceneIndex();
-                    selectedSceneIndexes << sceneIndex;
-                }
-            }
-        }
-        if (selectedSceneIndexes.count() > 0)
-        {
-            duplicatePages(selectedSceneIndexes);
-            emit documentThumbnailsUpdated(this);
-            selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-            UBMetadataDcSubsetAdaptor::persist(selectedDocument());
-            mDocumentUI->thumbnailWidget->selectItemAt(selectedSceneIndexes.last() + selectedSceneIndexes.size());
-        }
-    }
-    else
-    {
-        UBDocumentProxy* source = selectedDocumentProxy();
-        UBDocumentGroupTreeItem* group = selectedDocumentGroupTreeItem();
-
-        if (source && group)
-        {
-                QString docName = source->metaData(UBSettings::documentName).toString();
-
-                showMessage(tr("Duplicating Document %1").arg(docName), true);
-
-            UBDocumentProxy* duplicatedDoc = UBPersistenceManager::persistenceManager()->duplicateDocument(source);
-            duplicatedDoc->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-            UBMetadataDcSubsetAdaptor::persist(duplicatedDoc);
-
-            selectDocument(duplicatedDoc, false);
-
-            showMessage(tr("Document %1 copied").arg(docName), false);
-        }
-    }
-}
-
-void UBDocumentController::moveDocumentToTrash(UBDocumentGroupTreeItem* groupTi, UBDocumentProxyTreeItem *proxyTi)
-{
-    int index = proxyTi->parent()->indexOfChild(proxyTi);
-    index --;
-
-    if (index >= 0)
-    {
-        if (proxyTi->proxy() == mBoardController->selectedDocument())
-        {
-            selectDocument(((UBDocumentProxyTreeItem*)proxyTi->parent()->child(index))->proxy(), true);
-        }
-        else
-            proxyTi->parent()->child(index)->setSelected(true);
-    }
-    else if (proxyTi->parent()->childCount() > 1)
-    {
-        if (proxyTi->proxy() == mBoardController->selectedDocument())
-        {
-            selectDocument(((UBDocumentProxyTreeItem*)proxyTi->parent()->child(1))->proxy(), true);
-        }
-        else
-            proxyTi->parent()->child(1)->setSelected(true);
-    }
-    else
-    {
-        if (proxyTi->proxy() == mBoardController->selectedDocument())
-        {
-            bool documentFound = false;
-            for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
-            {
-                QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
-                UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-                if (!groupItem->isTrashFolder())
-                {
-                    for(int j=0; j<groupItem->childCount(); j++)
-                    {
-                        if (((UBDocumentProxyTreeItem*)groupItem->child(j))->proxy() != mBoardController->selectedDocument())
-                        {
-                            selectDocument(((UBDocumentProxyTreeItem*)groupItem->child(0))->proxy(), true);
-                            documentFound = true;
-                            break;
-                        }
-                    }
-                }
-                if (documentFound)
-                    break;
-            }
-            if (!documentFound)
-            {
-                UBDocumentProxy *document = UBPersistenceManager::persistenceManager()->createDocument(groupTi->groupName());
-                selectDocument(document, true);
-            }
-        }
-        else
-            proxyTi->parent()->setSelected(true);
-    }
-
-    QString oldGroupName = proxyTi->proxy()->metaData(UBSettings::documentGroupName).toString();
-    proxyTi->proxy()->setMetaData(UBSettings::documentGroupName, UBSettings::trashedDocumentGroupNamePrefix + oldGroupName);
-    UBPersistenceManager::persistenceManager()->persistDocumentMetadata(proxyTi->proxy());
-
-    proxyTi->parent()->removeChild(proxyTi);
-    mTrashTi->addChild(proxyTi);
-    proxyTi->setFlags(proxyTi->flags() ^ Qt::ItemIsEditable);
-}
-
-void UBDocumentController::moveFolderToTrash(UBDocumentGroupTreeItem* groupTi)
-{
-    bool changeCurrentDocument = false;
-    for (int i = 0; i < groupTi->childCount(); i++)
-    {
-        UBDocumentProxyTreeItem* proxyTi  = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
-        if (proxyTi && proxyTi->proxy() && proxyTi->proxy() == mBoardController->selectedDocument())
-        {
-            changeCurrentDocument = true;
-            break;
-        }
-    }
-
-    QList<UBDocumentProxyTreeItem*> toBeDeleted;
-
-    for (int i = 0; i < groupTi->childCount(); i++)
-    {
-        UBDocumentProxyTreeItem* proxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
-        if (proxyTi && proxyTi->proxy())
-            toBeDeleted << proxyTi;
-    }
-
-    for (int i = 0; i < toBeDeleted.count(); i++)
-    {
-        UBDocumentProxyTreeItem* proxyTi = toBeDeleted.at(i);
-
-        showMessage(QString("Deleting %1").arg(proxyTi->proxy()->metaData(UBSettings::documentName).toString()));
-        // Move document to trash
-        QString oldGroupName = proxyTi->proxy()->metaData(UBSettings::documentGroupName).toString();
-        proxyTi->proxy()->setMetaData(UBSettings::documentGroupName, UBSettings::trashedDocumentGroupNamePrefix + oldGroupName);
-        UBPersistenceManager::persistenceManager()->persistDocumentMetadata(proxyTi->proxy());
-
-        groupTi->removeChild(proxyTi);
-        mTrashTi->addChild(proxyTi);
-        proxyTi->setFlags(proxyTi->flags() ^ Qt::ItemIsEditable);
-
-        showMessage(QString("%1 deleted").arg(groupTi->groupName()));
-    }
-
-    // dont remove default group
-    if (!groupTi->isDefaultFolder())
-    {
-        int index = mDocumentUI->documentTreeWidget->indexOfTopLevelItem(groupTi);
-
-        if (index >= 0)
-        {
-            mDocumentUI->documentTreeWidget->takeTopLevelItem(index);
-        }
-    }
-
-    if (changeCurrentDocument)
-    {
-        bool documentFound = false;
-        for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
-        {
-            QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
-            UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-            if (!groupItem->isTrashFolder() && groupItem != groupTi)
-            {
-                for(int j=0; j<groupItem->childCount(); j++)
-                {
-                    if (((UBDocumentProxyTreeItem*)groupItem->child(j))->proxy() != mBoardController->selectedDocument())
-                    {
-                        selectDocument(((UBDocumentProxyTreeItem*)groupItem->child(0))->proxy(), true);
-                        documentFound = true;
-                        break;
-                    }
-                }
-            }
-            if (documentFound)
-                break;
-        }
-        if (!documentFound)
-        {
-            UBDocumentProxy *document = UBPersistenceManager::persistenceManager()->createDocument( mDefaultDocumentGroupName );
-            selectDocument(document, true);
-        }
-    }
-
-    reloadThumbnails();
-}
-
-void UBDocumentController::deleteSelectedItem()
-{
-    if (mSelectionType == Page)
-    {
-        QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
-
-        deletePages(selectedItems);
-    }
-    else
-    {
-
-        UBDocumentProxyTreeItem *proxyTi = selectedDocumentProxyTreeItem();
-
-        UBDocumentGroupTreeItem* groupTi = selectedDocumentGroupTreeItem();
-
-        if (proxyTi && proxyTi->proxy() && proxyTi->parent())
-        {
-            if(UBApplication::mainWindow->yesNoQuestion(tr("Remove Document"), tr("Are you sure you want to remove the document '%1'?").arg(proxyTi->proxy()->metaData(UBSettings::documentName).toString())))
-            {
-                if (proxyTi->parent() != mTrashTi)
-                {
-                    moveDocumentToTrash(groupTi, proxyTi);
-                }
-                else
-                {
-                    // We have to physically delete document
-                    proxyTi->parent()->removeChild(proxyTi);
-                    UBPersistenceManager::persistenceManager()->deleteDocument(proxyTi->proxy());
-
-                    if (mTrashTi->childCount()==0)
-                        selectDocument(NULL);
-                    else
-                        selectDocument(((UBDocumentProxyTreeItem*)mTrashTi->child(0))->proxy());
-                    reloadThumbnails();
-                }
-            }
-        }
-        else if (groupTi)
-        {
-            if (groupTi == mTrashTi)
-            {
-                if(UBApplication::mainWindow->yesNoQuestion(tr("Empty Trash"), tr("Are you sure you want to empty trash?")))
-                {
-                    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-                    QList<UBDocumentProxyTreeItem*> toBeDeleted;
-
-                    for (int i = 0; i < groupTi->childCount(); i++)
-                    {
-                        UBDocumentProxyTreeItem* proxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
-                        if (proxyTi && proxyTi->proxy())
-                            toBeDeleted << proxyTi;
-                    }
-
-                    showMessage(tr("Emptying trash"));
-
-                    for (int i = 0; i < toBeDeleted.count(); i++)
-                    {
-                        UBDocumentProxyTreeItem* proxyTi = toBeDeleted.at(i);
-
-                        proxyTi->parent()->removeChild(proxyTi);
-                        UBPersistenceManager::persistenceManager()->deleteDocument(proxyTi->proxy());
-                    }
-
-                    showMessage(tr("Emptied trash"));
-
-                    QApplication::restoreOverrideCursor();
-                    mMainWindow->actionDelete->setEnabled(false);
-                }
-            }
-            else
-            {
-                if(UBApplication::mainWindow->yesNoQuestion(tr("Remove Folder"), tr("Are you sure you want to remove the folder '%1' and all its content?").arg(groupTi->groupName())))
-                {
-                    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-                    moveFolderToTrash(groupTi);
-                    QApplication::restoreOverrideCursor();
-                }
-            }
-        }
-    }
-}
-
-
-void UBDocumentController::exportDocument()
-{
-    QAction *currentExportAction = qobject_cast<QAction *>(sender());
-    QVariant actionData = currentExportAction->data();
-    UBExportAdaptor* selectedExportAdaptor = UBDocumentManager::documentManager()->supportedExportAdaptors()[actionData.toInt()];
-
-    UBDocumentProxy* proxy = selectedDocumentProxy();
-
-    if (proxy)
-    {
-        selectedExportAdaptor->persist(proxy);
-        emit exportDone();
-    }
-    else
-    {
-       showMessage(tr("No document selected!"));
-    }
-}
-
-
-void UBDocumentController::documentZoomSliderValueChanged (int value)
-{
-    mDocumentUI->thumbnailWidget->setThumbnailWidth(value);
-
-    UBSettings::settings()->documentThumbnailWidth->set(value);
-}
-
-
-void UBDocumentController::loadDocumentProxies()
-{
-    QList<QPointer<UBDocumentProxy> > proxies = UBPersistenceManager::persistenceManager()->documentProxies;
-
-    QStringList emptyGroupNames = UBSettings::settings()->value("Document/EmptyGroupNames", QStringList()).toStringList();
-
-    mDocumentUI->documentTreeWidget->clear();
-
-    QMap<QString, UBDocumentGroupTreeItem*> groupNamesMap;
-
-    UBDocumentGroupTreeItem* emptyGroupNameTi = 0;
-
-    mTrashTi = new UBDocumentGroupTreeItem(0, false); // deleted by the tree widget
-    mTrashTi->setGroupName(mDocumentTrashGroupName);
-    mTrashTi->setIcon(0, QIcon(":/images/trash.png"));
-
-    foreach (QPointer<UBDocumentProxy> proxy, proxies)
-    {
-        if (proxy)
-        {
-            QString docGroup = proxy->metaData(UBSettings::documentGroupName).toString();
-
-            bool isEmptyGroupName = false;
-            bool isInTrash = false;
-
-            if (docGroup.isEmpty()) // #see https://trac.assembla.com/uniboard/ticket/426
-            {
-                docGroup = mDefaultDocumentGroupName;
-                isEmptyGroupName = true;
-            }
-            else if (docGroup.startsWith(UBSettings::trashedDocumentGroupNamePrefix))
-            {
-                isInTrash = true;
-            }
-
-            QString docName = proxy->metaData(UBSettings::documentName).toString();
-
-            if (emptyGroupNames.contains(docGroup))
-                emptyGroupNames.removeAll(docGroup);
-
-            if (!groupNamesMap.contains(docGroup) && !isInTrash)
-            {
-                UBDocumentGroupTreeItem* docGroupItem = new UBDocumentGroupTreeItem(0, !isEmptyGroupName); // deleted by the tree widget
-                groupNamesMap.insert(docGroup, docGroupItem);
-                docGroupItem->setGroupName(docGroup);
-
-                if (isEmptyGroupName)
-                    emptyGroupNameTi = docGroupItem;
-            }
-
-            UBDocumentGroupTreeItem* docGroupItem;
-            if (isInTrash)
-                docGroupItem = mTrashTi;
-            else
-                docGroupItem = groupNamesMap.value(docGroup);
-
-            QTreeWidgetItem* docItem = new UBDocumentProxyTreeItem(docGroupItem, proxy, !isInTrash);
-            docItem->setText(0, docName);
-
-            if (mBoardController->selectedDocument() == proxy)
-            {
-                mDocumentUI->documentTreeWidget->expandItem(docGroupItem);
-                mDocumentUI->documentTreeWidget->setCurrentItem(docGroupItem);
-            }
-        }
-    }
-
-    foreach (const QString emptyGroupName, emptyGroupNames)
-    {
-        UBDocumentGroupTreeItem* docGroupItem = new UBDocumentGroupTreeItem(0); // deleted by the tree widget
-        groupNamesMap.insert(emptyGroupName, docGroupItem);
-        docGroupItem->setGroupName(emptyGroupName);
-    }
-
-    QList<QString> groupNamesList = groupNamesMap.keys();
-    qSort(groupNamesList);
-
-    foreach (const QString groupName, groupNamesList)
-    {
-        UBDocumentGroupTreeItem* ti = groupNamesMap.value(groupName);
-
-        if (ti != emptyGroupNameTi)
-            mDocumentUI->documentTreeWidget->addTopLevelItem(ti);
-    }
-
-    if (emptyGroupNameTi)
-        mDocumentUI->documentTreeWidget->addTopLevelItem(emptyGroupNameTi);
-
-    mDocumentUI->documentTreeWidget->addTopLevelItem(mTrashTi);
-}
-
-
-void UBDocumentController::itemClicked(QTreeWidgetItem * item, int column )
-{
-    Q_UNUSED(item);
-    Q_UNUSED(column);
-
-    selectDocument(selectedDocumentProxy(), false);
-    itemSelectionChanged();
-}
-
-
-void UBDocumentController::itemChanged(QTreeWidgetItem * item, int column)
-{
-    UBDocumentProxyTreeItem* proxyItem = dynamic_cast<UBDocumentProxyTreeItem*>(item);
-
-    disconnect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*))
-            , this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
-
-    if (proxyItem)
-    {
-        if (proxyItem->proxy()->metaData(UBSettings::documentName).toString() != item->text(column))
-        {
-            proxyItem->proxy()->setMetaData(UBSettings::documentName, item->text(column));
-            UBPersistenceManager::persistenceManager()->persistDocumentMetadata(proxyItem->proxy());
-        }
-    }
-    else
-    {
-        // it is a group
-        UBDocumentGroupTreeItem* editedGroup = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-        if (editedGroup)
-        {
-            for (int i = 0; i < item->childCount(); i++)
-            {
-                UBDocumentProxyTreeItem* childItem = dynamic_cast<UBDocumentProxyTreeItem*>(item->child(i));
-
-                if (childItem)
-                {
-                    QString groupName;
-                    if (0 != (item->flags() & Qt::ItemIsEditable))
-                    {
-                        childItem->proxy()->setMetaData(UBSettings::documentGroupName, item->text(column));
-                        UBPersistenceManager::persistenceManager()->persistDocumentMetadata(childItem->proxy());
-                    }
-                }
-            }
-        }
-    }
-
-    connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)),
-            this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
-}
-
-
-void UBDocumentController::importFile()
-{
-    UBDocumentGroupTreeItem* group = selectedDocumentGroupTreeItem();
-    UBDocumentManager *docManager = UBDocumentManager::documentManager();
-
-    if (group)
-    {
-        QString defaultPath = UBSettings::settings()->lastImportFilePath->get().toString();
-        QString filePath = QFileDialog::getOpenFileName(mParentWidget, tr("Open Supported File"),
-                defaultPath, docManager->importFileFilter());
-
-        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-        QApplication::processEvents();
-        QFileInfo fileInfo(filePath);
-        UBSettings::settings()->lastImportFilePath->set(QVariant(fileInfo.absolutePath()));
-
-        if (filePath.length() > 0)
-        {
-            UBDocumentProxy* createdDocument = 0;
-            QApplication::processEvents();
-            QFile selectedFile(filePath);
-
-            QString groupName = group->groupName();
-
-            if (groupName == mDefaultDocumentGroupName || fileInfo.suffix() != "ubz")
-                groupName = "";
-
-            showMessage(tr("Importing file %1...").arg(fileInfo.baseName()), true);
-
-            createdDocument = docManager->importFile(selectedFile, groupName);
-
-            if (createdDocument)
-            {
-                selectDocument(createdDocument, false);
-            }
-            else
-            {
-                showMessage(tr("Failed to import file ... "));
-            }
-        }
-
-        QApplication::restoreOverrideCursor();
-    }
-}
-
-void UBDocumentController::addFolderOfImages()
-{
-    UBDocumentProxy* document = selectedDocumentProxy();
-
-    if (document)
-    {
-        QString defaultPath = UBSettings::settings()->lastImportFolderPath->get().toString();
-
-        QString imagesDir = QFileDialog::getExistingDirectory(mParentWidget, tr("Import all Images from Folder"), defaultPath);
-        QDir parentImageDir(imagesDir);
-        parentImageDir.cdUp();
-
-        UBSettings::settings()->lastImportFolderPath->set(QVariant(parentImageDir.absolutePath()));
-
-        if (imagesDir.length() > 0)
-        {
-            QDir dir(imagesDir);
-
-            int importedImageNumber
-                  = UBDocumentManager::documentManager()->addImageDirToDocument(dir, document);
-
-            if (importedImageNumber == 0)
-            {
-                showMessage(tr("Folder does not contain any image files"));
-                UBApplication::applicationController->showDocument();
-            }
-            else
-            {
-                document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-                UBMetadataDcSubsetAdaptor::persist(document);
-                reloadThumbnails();
-            }
-        }
-    }
-}
-
-
-void UBDocumentController::addFileToDocument()
-{
-    UBDocumentProxy* document = selectedDocumentProxy();
-
-    if (document)
-    {
-         addFileToDocument(document);
-         reloadThumbnails();
-    }
-}
-
-
-bool UBDocumentController::addFileToDocument(UBDocumentProxy* document)
-{
-    QString defaultPath = UBSettings::settings()->lastImportFilePath->get().toString();
-    QString filePath = QFileDialog::getOpenFileName(mParentWidget, tr("Open Supported File"), defaultPath, UBDocumentManager::documentManager()->importFileFilter());
-
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-    QApplication::processEvents();
-
-    QFileInfo fileInfo(filePath);
-    UBSettings::settings()->lastImportFilePath->set(QVariant(fileInfo.absolutePath()));
-
-    bool success = false;
-
-    if (filePath.length() > 0)
-    {
-        QApplication::processEvents(); // NOTE: We performed this just a few lines before. Is it really necessary to do it again here??
-        QFile selectedFile(filePath);
-
-        showMessage(tr("Importing file %1...").arg(fileInfo.baseName()), true);
-
-        QStringList fileNames;
-        fileNames << filePath;
-        success = UBDocumentManager::documentManager()->addFilesToDocument(document, fileNames);
-
-        if (success)
-        {
-            document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-            UBMetadataDcSubsetAdaptor::persist(document);
-        }
-        else
-        {
-            showMessage(tr("Failed to import file ... "));
-        }
-    }
-
-    QApplication::restoreOverrideCursor();
-
-    return success;
-}
-
-
-void UBDocumentController::moveSceneToIndex(UBDocumentProxy* proxy, int source, int target)
-{
-    if (UBDocumentContainer::movePageToIndex(source, target))
-    {
-        proxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-        UBMetadataDcSubsetAdaptor::persist(proxy);
-    
-        mDocumentUI->thumbnailWidget->hightlightItem(target);
-    }
-}
-
-
-void UBDocumentController::thumbnailViewResized()
-{
-    int maxWidth = qMin(UBSettings::maxThumbnailWidth, mDocumentUI->thumbnailWidget->width());
-
-    mDocumentUI->documentZoomSlider->setMaximum(maxWidth);
-}
-
-
-void UBDocumentController::pageSelectionChanged()
-{
-    if (mIsClosing)
-        return;
-
-    bool pageSelected = mDocumentUI->thumbnailWidget->selectedItems().count() > 0;
-
-    if (pageSelected)
-        mSelectionType = Page;
-    else
-        mSelectionType = None;
-
-    selectionChanged();
-}
-
-
-void UBDocumentController::selectionChanged()
-{
-    if (mIsClosing)
-        return;
-
-    int pageCount = -1;
-
-    UBDocumentProxyTreeItem* proxyTi = selectedDocumentProxyTreeItem();
-
-    if (proxyTi && proxyTi->proxy())
-        pageCount = proxyTi->proxy()->pageCount();
-
-    bool pageSelected = (mSelectionType == Page);
-    bool groupSelected = (mSelectionType == Folder);
-    bool docSelected = (mSelectionType == Document);
-
-    bool trashSelected = false;
-    if (groupSelected && selectedDocumentGroupTreeItem())
-        trashSelected = selectedDocumentGroupTreeItem()->isTrashFolder();
-
-    if ((docSelected || pageSelected) && proxyTi)
-        trashSelected = dynamic_cast<UBDocumentGroupTreeItem*>(proxyTi->parent())->isTrashFolder();
-
-    bool defaultGroupSelected = false;
-    if (groupSelected && selectedDocumentGroupTreeItem())
-        defaultGroupSelected = selectedDocumentGroupTreeItem()->isDefaultFolder();
-
-    mMainWindow->actionNewDocument->setEnabled((groupSelected || docSelected || pageSelected) && !trashSelected);
-    mMainWindow->actionExport->setEnabled((docSelected || pageSelected) && !trashSelected);
-	bool firstSceneSelected = false;
-    if(docSelected)
-    	mMainWindow->actionDuplicate->setEnabled(!trashSelected);
-    else if(pageSelected){
-    	QList<QGraphicsItem*> selection = mDocumentUI->thumbnailWidget->selectedItems();
-    	if(pageCount == 1)
-    		mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(0)));
-    	else{
-    		for(int i = 0; i < selection.count() && !firstSceneSelected; i += 1){
-    			if(dynamic_cast<UBSceneThumbnailPixmap*>(selection.at(i))->sceneIndex() == 0){
-    				mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(0)));
-    				firstSceneSelected = true;
-    			}
-    		}
-    		if(!firstSceneSelected)
-    			mMainWindow->actionDuplicate->setEnabled(!trashSelected);
-    	}
-    }
-    else
-    	mMainWindow->actionDuplicate->setEnabled(false);
-
-    mMainWindow->actionOpen->setEnabled((docSelected || pageSelected) && !trashSelected);
-    mMainWindow->actionRename->setEnabled((groupSelected || docSelected) && !trashSelected && !defaultGroupSelected);
-
-    mMainWindow->actionAddToWorkingDocument->setEnabled(pageSelected
-            && !(selectedDocumentProxy() == mBoardController->selectedDocument()) && !trashSelected);
-
-    bool deleteEnabled = false;
-    if (trashSelected)
-    {
-        if (docSelected)
-            deleteEnabled = true;
-        else if (groupSelected && selectedDocumentGroupTreeItem())
-        {
-            if (selectedDocumentGroupTreeItem()->childCount() > 0)
-                deleteEnabled = true;
-        }
-    }
-    else
-    {
-        deleteEnabled = groupSelected || docSelected || pageSelected;
-    }
-
-    if (pageSelected && (pageCount == mDocumentUI->thumbnailWidget->selectedItems().count()))
-    {
-        deleteEnabled = false;
-    }
-
-    if(pageSelected && firstSceneSelected)
-    	deleteEnabled = false;
-
-    mMainWindow->actionDelete->setEnabled(deleteEnabled);
-
-    if (trashSelected)
-    {
-        if (docSelected)
-        {
-            mMainWindow->actionDelete->setIcon(QIcon(":/images/toolbar/deleteDocument.png"));
-            mMainWindow->actionDelete->setText(tr("Delete"));
-        }
-        else
-        {
-            mMainWindow->actionDelete->setIcon(QIcon(":/images/trash.png"));
-            mMainWindow->actionDelete->setText(tr("Empty"));
-        }
-    }
-    else
-    {
-        mMainWindow->actionDelete->setIcon(QIcon(":/images/trash.png"));
-        mMainWindow->actionDelete->setText(tr("Trash"));
-    }
-
-    mMainWindow->actionDocumentAdd->setEnabled((docSelected || pageSelected) && !trashSelected);
-    mMainWindow->actionImport->setEnabled(!trashSelected);
-
-}
-
-
-void UBDocumentController::documentSceneChanged(UBDocumentProxy* proxy, int pSceneIndex)
-{
-    Q_UNUSED(pSceneIndex);
-
-    if (proxy == selectedDocumentProxy())
-    {
-        reloadThumbnails();
-    }
-}
-
-
-void UBDocumentController::pageDoubleClicked(QGraphicsItem* item, int index)
-{
-    Q_UNUSED(item);
-    Q_UNUSED(index);
-
-    bool pageSelected = (mSelectionType == Page);
-    bool groupSelected = (mSelectionType == Folder);
-    bool docSelected = (mSelectionType == Document);
-
-    bool trashSelected = false;
-    if (groupSelected && selectedDocumentGroupTreeItem())
-        trashSelected = selectedDocumentGroupTreeItem()->isTrashFolder();
-    UBDocumentProxyTreeItem* proxyTi = selectedDocumentProxyTreeItem();
-    if ((docSelected || pageSelected) && proxyTi)
-        trashSelected = dynamic_cast<UBDocumentGroupTreeItem*>(proxyTi->parent())->isTrashFolder();
-    if (trashSelected) return;
-
-    openSelectedItem();
-}
-
-
-void UBDocumentController::pageClicked(QGraphicsItem* item, int index)
-{
-    Q_UNUSED(item);
-    Q_UNUSED(index);
-
-    pageSelectionChanged();
-}
-
-
-void UBDocumentController::closing()
-{
-    mIsClosing = true;
-
-    QStringList emptyGroups;
-
-    for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
-    {
-        QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
-
-        if (item->childCount() == 0)
-        {
-            UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-            if (groupItem)
-            {
-                QString groupName = groupItem->groupName();
-                if (!emptyGroups.contains(groupName) && groupName != mDocumentTrashGroupName)
-                    emptyGroups << groupName;
-            }
-        }
-    }
-
-    UBSettings::settings()->setValue("Document/EmptyGroupNames", emptyGroups);
-
-}
-
-void UBDocumentController::addToDocument()
-{
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-
-    QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
-
-    if (selectedItems.count() > 0)
-    {
-        int oldActiveSceneIndex = mBoardController->activeSceneIndex();
-
-        QList<QPair<UBDocumentProxy*, int> > pageInfoList;
-
-        foreach (QGraphicsItem* item, selectedItems)
-        {
-            UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (item);
-
-            if (thumb &&  thumb->proxy())
-            {
-                QPair<UBDocumentProxy*, int> pageInfo(thumb->proxy(), thumb->sceneIndex());
-                pageInfoList << pageInfo;
-            }
-        }
-
-        for (int i = 0; i < pageInfoList.length(); i++)
-        {
-            mBoardController->addScene(pageInfoList.at(i).first, pageInfoList.at(i).second, true);
-        }
-
-        int newActiveSceneIndex = selectedItems.count() == mBoardController->selectedDocument()->pageCount() ? 0 : oldActiveSceneIndex + 1;
-        mDocumentUI->thumbnailWidget->selectItemAt(newActiveSceneIndex, false);
-        selectDocument(mBoardController->selectedDocument());
-        mBoardController->selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-        UBMetadataDcSubsetAdaptor::persist(mBoardController->selectedDocument());
-
-        UBApplication::applicationController->showBoard();
-    }
-
-    QApplication::restoreOverrideCursor();
-}
-
-
-void UBDocumentController::addDocumentInTree(UBDocumentProxy* pDocument)
-{
-    QString documentName = pDocument->name();
-    QString documentGroup = pDocument->groupName();
-    if (documentGroup.isEmpty())
-    {
-        documentGroup = mDefaultDocumentGroupName;
-    }
-    UBDocumentGroupTreeItem* group = 0;
-    if (documentGroup.startsWith(UBSettings::trashedDocumentGroupNamePrefix))
-    {
-        group = mTrashTi;
-    }
-    else
-    {
-        for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
-        {
-            QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
-            UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-            if (groupItem->groupName() == documentGroup)
-            {
-                group = groupItem;
-                break;
-            }
-        }
-    }
-
-    if (group == 0)
-    {
-        group = new UBDocumentGroupTreeItem(0); // deleted by the tree widget
-        group->setGroupName(documentGroup);
-        mDocumentUI->documentTreeWidget->addTopLevelItem(group);
-    }
-
-    UBDocumentProxyTreeItem *ti = new UBDocumentProxyTreeItem(group, pDocument, !group->isTrashFolder());
-    ti->setText(0, documentName);
-}
-
-
-void UBDocumentController::updateDocumentInTree(UBDocumentProxy* pDocument)
-{
-    QTreeWidgetItemIterator it(mDocumentUI->documentTreeWidget);
-    while (*it)
-    {
-        UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>((*it));
-
-        if (pi && pi->proxy() == pDocument)
-        {
-            pi->setText(0, pDocument->name());
-            break;
-        }
-        ++it;
-    }
-}
-
-
-QStringList UBDocumentController::allGroupNames()
-{
-    QStringList result;
-
-    for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
-    {
-        QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
-        UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-        result << groupItem->groupName();
-    }
-
-    return result;
-}
-
-
-void UBDocumentController::renameSelectedItem()
-{
-    if (mDocumentUI->documentTreeWidget->selectedItems().count() > 0)
-        mDocumentUI->documentTreeWidget->editItem(mDocumentUI->documentTreeWidget->selectedItems().at(0));
-}
-
-
-bool UBDocumentController::isOKToOpenDocument(UBDocumentProxy* proxy)
-{
-    //check version
-    QString docVersion = proxy->metaData(UBSettings::documentVersion).toString();
-
-    if (docVersion.isEmpty() || docVersion.startsWith("4.1") || docVersion.startsWith("4.2")
-            || docVersion.startsWith("4.3") || docVersion.startsWith("4.4") || docVersion.startsWith("4.5")
-            || docVersion.startsWith("4.6")) // TODO UB 4.7 update if necessary
-    {
-        return true;
-    }
-    else
-    {
-        if (UBApplication::mainWindow->yesNoQuestion(tr("Open Document"),
-                tr("The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?")
-                    .arg(proxy->metaData(UBSettings::documentName).toString())
-                    .arg(docVersion)))
-        {
-            return true;
-        }
-        else
-        {
-            return false;
-        }
-    }
-}
-
-
-void UBDocumentController::showMessage(const QString& message, bool showSpinningWheel)
-{
-    if (mMessageWindow)
-    {
-        int margin = UBSettings::boardMargin;
-
-        QRect newSize = mDocumentUI->thumbnailWidget->geometry();
-
-        #ifdef Q_WS_MACX
-            QPoint point(newSize.left() + margin, newSize.bottom() - mMessageWindow->height() - margin);
-            mMessageWindow->move(mDocumentUI->thumbnailWidget->mapToGlobal(point));
-        #else
-            mMessageWindow->move(margin, newSize.height() - mMessageWindow->height() - margin);
-        #endif
-
-        mMessageWindow->showMessage(message, showSpinningWheel);
-    }
-}
-
-
-void UBDocumentController::hideMessage()
-{
-    if (mMessageWindow)
-        mMessageWindow->hideMessage();
-}
-
-
-void UBDocumentController::addImages()
-{
-    UBDocumentProxy* document = selectedDocumentProxy();
-
-    if (document)
-    {
-        QString defaultPath = UBSettings::settings()->lastImportFolderPath->get().toString();
-
-        QString extensions;
-
-        foreach (QString ext, UBSettings::settings()->imageFileExtensions)
-        {
-            extensions += " *.";
-            extensions += ext;
-        }
-
-        QStringList images = QFileDialog::getOpenFileNames(mParentWidget, tr("Add all Images to Document"),
-                defaultPath, tr("All Images (%1)").arg(extensions));
-
-        if (images.length() > 0)
-        {
-            QFileInfo firstImage(images.at(0));
-
-            UBSettings::settings()->lastImportFolderPath->set(QVariant(firstImage.absoluteDir().absolutePath()));
-
-            int importedImageNumber
-                = UBDocumentManager::documentManager()->addFilesToDocument(document, images);
-
-            if (importedImageNumber == 0)
-            {
-                UBApplication::showMessage(tr("Selection does not contain any image files!"));
-                UBApplication::applicationController->showDocument();
-            }
-            else
-            {
-                document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-                UBMetadataDcSubsetAdaptor::persist(document);
-                reloadThumbnails();
-            }
-        }
-    }
-}
-
-
-void UBDocumentController::toggleDocumentToolsPalette()
-{
-    if (!mToolsPalette->isVisible() && !mToolsPalettePositionned)
-    {
-        mToolsPalette->adjustSizeAndPosition();
-        int left = controlView()->width() - 20 - mToolsPalette->width();
-        int top = (controlView()->height() - mToolsPalette->height()) / 2;
-
-        mToolsPalette->setCustomPosition(true);
-        mToolsPalette->move(left, top);
-
-        mToolsPalettePositionned = true;
-    }
-
-    bool visible = mToolsPalette->isVisible();
-    mToolsPalette->setVisible(!visible);
-}
-
-
-void UBDocumentController::cut()
-{
-    // TODO - implemented me
-}
-
-
-void UBDocumentController::copy()
-{
-    // TODO - implemented me
-}
-
-
-void UBDocumentController::paste()
-{
-    // TODO - implemented me
-}
-
-
-void UBDocumentController::focusChanged(QWidget *old, QWidget *current)
-{
-    Q_UNUSED(old);
-
-    if (current == mDocumentUI->thumbnailWidget)
-    {
-        if (mDocumentUI->thumbnailWidget->selectedItems().count() > 0)
-            mSelectionType = Page;
-        else
-            mSelectionType = None;
-    }
-    else if (current == mDocumentUI->documentTreeWidget)
-    {
-        if (selectedDocumentProxy())
-            mSelectionType = Document;
-        else if (selectedDocumentGroupTreeItem())
-            mSelectionType = Folder;
-        else
-            mSelectionType = None;
-    }
-    else if (current == mDocumentUI->documentZoomSlider)
-    {
-        if (mDocumentUI->thumbnailWidget->selectedItems().count() > 0)
-            mSelectionType = Page;
-        else
-            mSelectionType = None;
-    }
-    else
-    {
-        if (old != mDocumentUI->thumbnailWidget &&
-            old != mDocumentUI->documentTreeWidget &&
-            old != mDocumentUI->documentZoomSlider)
-        {
-            mSelectionType = None;
-        }
-    }
-
-    selectionChanged();
-}
-
-void UBDocumentController::deletePages(QList<QGraphicsItem *> itemsToDelete)
-{
-    if (itemsToDelete.count() > 0)
-    {
-        QList<int> sceneIndexes;
-        UBDocumentProxy* proxy = 0;
-
-        foreach (QGraphicsItem* item, itemsToDelete)
-        {
-            UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (item);
-
-            if (thumb)
-            {
-                proxy = thumb->proxy();
-                if (proxy)
-                {
-                    sceneIndexes.append(thumb->sceneIndex());
-                }
-            }
-        }
-
-        if(UBApplication::mainWindow->yesNoQuestion(tr("Remove Page"), tr("Are you sure you want to remove %n page(s) from the selected document '%1'?", "", sceneIndexes.count()).arg(proxy->metaData(UBSettings::documentName).toString())))
-        {
-            UBDocumentContainer::deletePages(sceneIndexes);
-
-            proxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-            UBMetadataDcSubsetAdaptor::persist(proxy);
-
-            int minIndex = proxy->pageCount() - 1;
-            foreach (int i, sceneIndexes)
-                 minIndex = qMin(i, minIndex);
-
-            mDocumentUI->thumbnailWidget->selectItemAt(minIndex);
-        }
-    }
-}
-
-int UBDocumentController::getSelectedItemIndex()
-{
-    QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
-
-    if (selectedItems.count() > 0)
-    {
-        UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (selectedItems.last());
-        return thumb->sceneIndex();
-    }
-    else return -1;
-}
-
-bool UBDocumentController::pageCanBeMovedUp(int page)
-{
-	if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
-		return page >= 2;
-	else
-		return page >= 1;
-}
-
-bool UBDocumentController::pageCanBeMovedDown(int page)
-{
-	if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
-		return page != 0 && page < selectedDocument()->pageCount() - 1;
-	else
-		return page < selectedDocument()->pageCount() - 1;
-}
-
-bool UBDocumentController::pageCanBeDuplicated(int page)
-{
-	return page != 0;
-}
-
-bool UBDocumentController::pageCanBeDeleted(int page)
-{
-	return page != 0;
-}
-
-void UBDocumentController::refreshDocumentThumbnailsView(UBDocumentContainer*)
-{
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-
-    QList<QGraphicsItem*> items;
-    QList<QUrl> itemsPath;
-
-    UBDocumentProxy *proxy = selectedDocumentProxy();
-    QGraphicsPixmapItem *selection = 0;
-
-    QStringList labels;
-
-    if (proxy) 
-    {
-        setDocument(proxy); 
-
-        for (int i = 0; i < selectedDocument()->pageCount(); i++)
-        {
-            const QPixmap* pix = pageAt(i);
-            QGraphicsPixmapItem *pixmapItem = new UBSceneThumbnailPixmap(*pix, proxy, i); // deleted by the tree widget
-
-            if (proxy == mBoardController->selectedDocument() && mBoardController->activeSceneIndex() == i)
-            {
-                selection = pixmapItem;
-            }
-
-            items << pixmapItem;
-            int pageIndex = pageFromSceneIndex(i);
-            if(pageIndex)
-            	labels << tr("Page %1").arg(pageIndex);
-            else
-            	labels << tr("Title page");
-
-            itemsPath.append(QUrl::fromLocalFile(proxy->persistencePath() + QString("/pages/%1").arg(UBDocumentContainer::pageFromSceneIndex(i))));
-        }
-    }
-
-    mDocumentUI->thumbnailWidget->setGraphicsItems(items, itemsPath, labels, UBApplication::mimeTypeUniboardPage);
-
-    UBDocumentProxyTreeItem* proxyTi = selectedDocumentProxyTreeItem();
-    if (proxyTi && (proxyTi->parent() == mTrashTi))
-        mDocumentUI->thumbnailWidget->setDragEnabled(false);
-    else
-        mDocumentUI->thumbnailWidget->setDragEnabled(true);
-
-    mDocumentUI->thumbnailWidget->ensureVisible(0, 0, 10, 10);
-
-    if (selection) {
-        disconnect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
-        UBSceneThumbnailPixmap *currentScene = dynamic_cast<UBSceneThumbnailPixmap*>(selection);
-        if (currentScene)
-            mDocumentUI->thumbnailWidget->hightlightItem(currentScene->sceneIndex());
-        connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
-    }
-
-    QApplication::restoreOverrideCursor();
-}
+
+
+#include "UBDocumentController.h"
+
+#include <QtCore>
+#include <QtGui>
+
+#include "frameworks/UBFileSystemUtils.h"
+#include "frameworks/UBStringUtils.h"
+#include "frameworks/UBPlatformUtils.h"
+
+#include "core/UBApplication.h"
+#include "core/UBPersistenceManager.h"
+#include "core/UBDocumentManager.h"
+#include "core/UBApplicationController.h"
+#include "core/UBSettings.h"
+#include "core/UBSetting.h"
+#include "core/UBMimeData.h"
+
+#include "adaptors/UBExportPDF.h"
+#include "adaptors/UBThumbnailAdaptor.h"
+
+#include "adaptors/UBMetadataDcSubsetAdaptor.h"
+
+#include "board/UBBoardController.h"
+#include "board/UBBoardPaletteManager.h"
+#include "board/UBDrawingController.h"
+
+
+#include "gui/UBThumbnailView.h"
+#include "gui/UBDocumentTreeWidget.h"
+#include "gui/UBMousePressFilter.h"
+#include "gui/UBMessageWindow.h"
+#include "gui/UBMainWindow.h"
+#include "gui/UBDocumentToolsPalette.h"
+
+#include "domain/UBGraphicsScene.h"
+#include "domain/UBGraphicsSvgItem.h"
+#include "domain/UBGraphicsPixmapItem.h"
+
+#include "document/UBDocumentProxy.h"
+
+#include "ui_documents.h"
+#include "ui_mainWindow.h"
+
+#include "core/memcheck.h"
+
+static bool lessThan(UBDocumentTreeNode *lValue, UBDocumentTreeNode *rValue)
+{
+    if (lValue->nodeType() == UBDocumentTreeNode::Catalog) {
+        if (rValue->nodeType() == UBDocumentTreeNode::Catalog) {
+            return lValue->nodeName() < rValue->nodeName();
+        } else {
+            return true;
+        }
+    } else {
+        if (rValue->nodeType() == UBDocumentTreeNode::Catalog) {
+            return false;
+        } else {
+            Q_ASSERT(lValue->proxyData());
+            Q_ASSERT(rValue->proxyData());
+
+            QDateTime lTime = lValue->proxyData()->documentDate();
+            QDateTime rTime = rValue->proxyData()->documentDate();
+
+            return lTime > rTime;
+        }
+    }
+
+    return false;
+}
+
+UBDocumentReplaceDialog::UBDocumentReplaceDialog(const QString &pIncommingName, const QStringList &pFileList, QWidget *parent, Qt::WindowFlags pFlags)
+    : QDialog(parent, pFlags)
+    , mFileNameList(pFileList)
+    , mIncommingName(pIncommingName)
+    , acceptText(tr("Accept"))
+    , replaceText(tr("Replace"))
+    , cancelText(tr("Cancel"))
+    , mLabelText(0)
+{
+    this->setStyleSheet("background:white;");
+
+    QVBoxLayout *mainLayout = new QVBoxLayout(this);
+
+    QVBoxLayout *labelLayout = new QVBoxLayout();
+
+    mLabelText = new QLabel(labelTextWithName(pIncommingName), this);
+    mLineEdit = new QLineEdit(this);
+    mLineEdit->setText(pIncommingName);
+    mLineEdit->selectedText();
+
+    mValidator = new QRegExpValidator(QRegExp("[^\\/\\:\\?\\*\\|\\<\\>\\\"]{1,}"), this);
+    mLineEdit->setValidator(mValidator);
+    labelLayout->addWidget(mLabelText);
+    labelLayout->addWidget(mLineEdit);
+
+    QHBoxLayout *buttonLayout = new QHBoxLayout();
+
+    acceptButton = new QPushButton(acceptText, this);
+    QPushButton *cancelButton = new QPushButton(cancelText, this);
+    buttonLayout->addWidget(acceptButton);
+    buttonLayout->addWidget(cancelButton);
+
+    mainLayout->addLayout(labelLayout);
+    mainLayout->addLayout(buttonLayout);
+
+    acceptButton->setEnabled(false);
+
+    connect(acceptButton, SIGNAL(clicked()), this, SLOT(accept()));
+    connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
+    connect(mLineEdit, SIGNAL(textEdited(QString)), this, SLOT(reactOnTextChanged(QString)));
+
+    reactOnTextChanged(mIncommingName);
+}
+
+void UBDocumentReplaceDialog::setRegexp(const QRegExp pRegExp)
+{
+    mValidator->setRegExp(pRegExp);
+}
+bool UBDocumentReplaceDialog::validString(const QString &pStr)
+{
+    Q_UNUSED(pStr);
+    return mLineEdit->hasAcceptableInput();
+}
+
+void UBDocumentReplaceDialog::setFileNameAndList(const QString &fileName, const QStringList &pLst)
+{
+    mFileNameList = pLst;
+    mIncommingName = fileName;
+    mLabelText->setText(labelTextWithName(fileName));
+    mLineEdit->setText(fileName);
+    mLineEdit->selectedText();
+}
+
+QString UBDocumentReplaceDialog::labelTextWithName(const QString &documentName) const
+{
+    return tr("The name %1 is allready used.\nKeeping this name will replace the document.\nProviding a new name will create a new document.")
+            .arg(documentName);
+}
+
+void UBDocumentReplaceDialog::accept()
+{
+    QDialog::accept();
+}
+void UBDocumentReplaceDialog::reject()
+{
+    mLineEdit->clear();
+    emit closeDialog();
+
+    QDialog::reject();
+}
+
+void UBDocumentReplaceDialog::reactOnTextChanged(const QString &pStr)
+{
+//     if !mFileNameList.contains(pStr.trimmed(), Qt::CaseSensitive)
+
+    if (!validString(pStr)) {
+        acceptButton->setEnabled(false);
+        mLineEdit->setStyleSheet("background:#FFB3C8;");
+        acceptButton->setEnabled(false);
+
+    } else if (mFileNameList.contains(pStr.trimmed(), Qt::CaseSensitive)) {
+        acceptButton->setEnabled(true);
+        mLineEdit->setStyleSheet("background:#FFB3C8;");
+        acceptButton->setText(replaceText);
+
+    } else {
+        acceptButton->setEnabled(true);
+        mLineEdit->setStyleSheet("background:white;");
+        acceptButton->setText(acceptText);
+    }
+}
+
+UBDocumentTreeNode::UBDocumentTreeNode(Type pType, const QString &pName, const QString &pDisplayName, UBDocumentProxy *pProxy ) :
+    mType(pType)
+  , mName(pName)
+  , mDisplayName(pDisplayName)
+  , mProxy(pProxy)
+{
+    if (pDisplayName.isEmpty()) {
+        mDisplayName = mName;
+    }
+    mParent = 0;
+}
+
+void UBDocumentTreeNode::addChild(UBDocumentTreeNode *pChild)
+{
+    if (pChild) {
+        mChildren += pChild;
+        pChild->mParent = this;
+    }
+}
+
+void UBDocumentTreeNode::insertChild(int pIndex, UBDocumentTreeNode *pChild)
+{
+    if (pChild) {
+        mChildren.insert(pIndex, pChild);
+        pChild->mParent = this;
+    }
+}
+
+void UBDocumentTreeNode::removeChild(int index)
+{
+    if (index < 0 || index > mChildren.count() - 1) {
+        return;
+    }
+
+    UBDocumentTreeNode *curChild = mChildren[index];
+    while (curChild->mChildren.count()) {
+        curChild->removeChild(0);
+    }
+
+    mChildren.removeAt(index);
+    delete curChild;
+}
+
+UBDocumentTreeNode *UBDocumentTreeNode::clone()
+{
+    return new UBDocumentTreeNode(this->mType
+                                  , this->mName
+                                  , this->mDisplayName
+                                  , this->mProxy ? new UBDocumentProxy(*this->mProxy)
+                                                 : 0);
+}
+
+QString UBDocumentTreeNode::dirPathInHierarchy()
+{
+    QString result;
+    UBDocumentTreeNode *curNode = this;
+    //protect the 2nd level items
+    while (curNode->parentNode() && !curNode->isTopLevel()) {
+        result.prepend(curNode->parentNode()->nodeName() + "/");
+        curNode = curNode->parentNode();
+    }
+
+    if (result.endsWith("/")) {
+        result.truncate(result.count() - 1);
+    }
+
+    return result;
+}
+
+UBDocumentTreeNode::~UBDocumentTreeNode()
+{
+    foreach (UBDocumentTreeNode *curChildren, mChildren) {
+        delete(curChildren);
+        curChildren = 0;
+    }
+    if (mProxy)
+        delete mProxy;
+}
+
+UBDocumentTreeModel::UBDocumentTreeModel(QObject *parent) :
+    QAbstractItemModel(parent)
+  , mRootNode(0)
+{
+    UBDocumentTreeNode *rootNode = new UBDocumentTreeNode(UBDocumentTreeNode::Catalog, "root");
+
+    QString trashName = UBSettings::trashedDocumentGroupNamePrefix;
+
+    UBDocumentTreeNode *myDocsNode = new UBDocumentTreeNode(UBDocumentTreeNode::Catalog, UBPersistenceManager::myDocumentsName, tr("My documents"));
+    rootNode->addChild(myDocsNode);
+//    mMyDocuments = createIndex(0, 0, myDocsNode);
+    UBDocumentTreeNode *modelsNode = new UBDocumentTreeNode(UBDocumentTreeNode::Catalog, UBPersistenceManager::modelsName, tr("Models"));
+    rootNode->addChild(modelsNode);
+//    mModels = createIndex(1, 0, modelsNode);
+    UBDocumentTreeNode *trashNode = new UBDocumentTreeNode(UBDocumentTreeNode::Catalog, trashName, tr("Trash"));
+    rootNode->addChild(trashNode);
+//    mTrash = createIndex(2, 0, trashNode);
+    UBDocumentTreeNode *untitledDocumentsNode = new UBDocumentTreeNode(UBDocumentTreeNode::Catalog, UBPersistenceManager::untitledDocumentsName, tr("Untitled documents"));
+    myDocsNode->addChild(untitledDocumentsNode);
+//    mUntitledDocuments = createIndex(0, 0, untitledDocumentsNode);
+
+    setRootNode(rootNode);
+
+    mRoot = index(0, 0, QModelIndex());
+    mMyDocuments =  index(0, 0, QModelIndex());
+    mModels =  index(1, 0, QModelIndex());
+    mTrash =  index(2, 0, QModelIndex());
+    mUntitledDocuments = index(0, 0, mMyDocuments);
+}
+
+QModelIndex UBDocumentTreeModel::index(int row, int column, const QModelIndex &parent) const
+{
+    if (!mRootNode || row < 0 || column < 0) {
+        return QModelIndex();
+    }
+
+    UBDocumentTreeNode *nodeParent = nodeFromIndex(parent);
+    if (!nodeParent || row > nodeParent->children().count() - 1) {
+        return QModelIndex();
+    }
+
+    UBDocumentTreeNode *requiredNode = nodeParent->children().at(row);
+    if(!requiredNode) {
+        return QModelIndex();
+    }
+
+    QModelIndex resIndex = createIndex(row, column, requiredNode);
+
+    return resIndex;
+}
+
+QModelIndex UBDocumentTreeModel::parent(const QModelIndex &child) const
+{
+    UBDocumentTreeNode *nodeChild = nodeFromIndex(child);
+    if (!nodeChild) {
+        return QModelIndex();
+    }
+
+    UBDocumentTreeNode *nodeParent = nodeChild->parentNode();
+    if (!nodeParent) {
+        return QModelIndex();
+    }
+
+    UBDocumentTreeNode *nodePreParent = nodeParent->parentNode();
+    if (!nodePreParent) {
+        return QModelIndex();
+    }
+
+    int row = nodePreParent->children().indexOf(nodeParent);
+
+    QModelIndex resIndex = createIndex(row, 0, nodeParent);
+
+    return resIndex;
+}
+
+int UBDocumentTreeModel::rowCount(const QModelIndex &parent) const
+{
+    if (parent.column() > 0) {
+        return 0;
+    }
+
+    UBDocumentTreeNode *nodeParent = nodeFromIndex(parent);
+    if (!nodeParent) {
+        return 0;
+    }
+
+    return nodeParent->children().count();
+}
+
+int UBDocumentTreeModel::columnCount(const QModelIndex &parent) const
+{
+    Q_UNUSED(parent)
+    return 1;
+}
+
+QVariant UBDocumentTreeModel::data(const QModelIndex &index, int role) const
+{
+    if (!index.isValid()) {
+        return QVariant();
+    }
+
+    UBDocumentTreeNode *dataNode = nodeFromIndex(index);
+    if (!dataNode)
+        return QVariant();
+
+    if (index.column() == 0) {
+
+        switch (role) {
+        case (Qt::DecorationRole) :
+            if (mCurrentNode && mCurrentNode == dataNode) {
+                return QIcon(":images/currentDocument.png");
+            } else {
+                if (index == trashIndex()) {
+                    return QIcon(":images/trash.png");
+                } else if (isConstant(index)) {
+                    return QIcon(":images/libpalette/ApplicationsCategory.svg");
+                }
+                switch (static_cast<int>(dataNode->nodeType())) {
+                case UBDocumentTreeNode::Catalog :
+                    return QIcon(":images/folder.png");
+                case UBDocumentTreeNode::Document :
+                    return QIcon(":images/toolbar/board.png");
+                }
+            }
+            break;
+
+        case (Qt::DisplayRole) :
+            return dataNode->displayName();
+            break;
+
+        case (Qt::UserRole +1):
+            return QVariant::fromValue(dataNode);
+            break;
+
+        case (Qt::FontRole) :
+            if (isConstant(index)) {
+                QFont font;
+                font.setBold(true);
+                return font;
+            }
+            break;
+
+        case (Qt::ForegroundRole) :
+            if (isConstant(index)) {
+                return Qt::darkGray;
+            }
+            break;
+
+        case (Qt::BackgroundRole) :
+            if (isConstant(index)) {
+                return QBrush(0xD9DFEB);
+            }
+            if (mHighLighted.isValid() && index == mHighLighted) {
+                return QBrush(0x6682B5);
+            }
+            break;
+        }
+    }
+
+    return QVariant();
+}
+
+bool UBDocumentTreeModel::setData(const QModelIndex &index, const QVariant &value, int role)
+{
+    switch (role) {
+    case Qt::EditRole:
+        if (!index.isValid() || value.toString().isEmpty()) {
+            return false;
+        }
+        setNewName(index, value.toString());
+        return true;
+    }
+    return QAbstractItemModel::setData(index, value, role);
+}
+
+Qt::ItemFlags UBDocumentTreeModel::flags (const QModelIndex &index) const
+{
+    Qt::ItemFlags resultFlags = QAbstractItemModel::flags(index);
+    UBDocumentTreeNode *indexNode = nodeFromIndex(index);
+
+    if ( index.isValid() ) {
+        if (!indexNode->isRoot() && !isConstant(index)) {
+            if (!inTrash(index)) {
+                resultFlags |= Qt::ItemIsEditable;
+            }
+            resultFlags |= Qt::ItemIsDragEnabled;
+        }
+        if (indexNode->nodeType() == UBDocumentTreeNode::Catalog) {
+            resultFlags |= Qt::ItemIsDropEnabled;
+        }
+    }
+
+    return resultFlags;
+}
+
+QStringList UBDocumentTreeModel::mimeTypes() const
+{
+    QStringList types;
+    types << "text/uri-list" << "image/png" << "image/tiff" << "image/gif" << "image/jpeg";
+    return types;
+}
+
+QMimeData *UBDocumentTreeModel::mimeData (const QModelIndexList &indexes) const
+{
+    UBDocumentTreeMimeData *mimeData = new UBDocumentTreeMimeData();
+    QList <QModelIndex> indexList;
+    QList<QUrl> urlList;
+
+    foreach (QModelIndex index, indexes) {
+        if (index.isValid()) {
+            indexList.append(index);
+            urlList.append(QUrl());
+        }
+    }
+
+    mimeData->setUrls(urlList);
+    mimeData->setIndexes(indexList);
+
+    return mimeData;
+}
+
+bool UBDocumentTreeModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
+{
+    if (data->hasFormat(UBApplication::mimeTypeUniboardPage)) {
+        UBDocumentTreeNode *curNode = nodeFromIndex(index(row - 1, column, parent));
+        UBDocumentProxy *targetDocProxy = curNode->proxyData();
+        const UBMimeData *ubMime = qobject_cast <const UBMimeData*>(data);
+        if (!targetDocProxy || !ubMime || !ubMime->items().count()) {
+            qDebug() << "an error ocured while parsing " << UBApplication::mimeTypeUniboardPage;
+            return false;
+        }
+
+        int count = 0;
+        int total = ubMime->items().size();
+
+        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+        foreach (UBMimeDataItem sourceItem, ubMime->items())
+        {
+            count++;
+
+            UBApplication::applicationController->showMessage(tr("Copying page %1/%2").arg(count).arg(total), true);
+
+            // TODO UB 4.x Move following code to some controller class
+            UBGraphicsScene *scene = UBPersistenceManager::persistenceManager()->loadDocumentScene(sourceItem.documentProxy(), sourceItem.sceneIndex());
+            if (scene) {
+                foreach (QUrl relativeFile, scene->relativeDependencies()) {
+                    QString source = scene->document()->persistencePath() + "/" + relativeFile.toString();
+                    QString target = targetDocProxy->persistencePath() + "/" + relativeFile.toString();
+
+                    QFileInfo fi(target);
+                    QDir d = fi.dir();
+
+                    d.mkpath(d.absolutePath());
+                    QFile::copy(source, target);
+                }
+
+                UBPersistenceManager::persistenceManager()->insertDocumentSceneAt(targetDocProxy, scene, targetDocProxy->pageCount());
+
+                //due to incorrect generation of thumbnails of invisible scene I've used direct copying of thumbnail files
+                //it's not universal and good way but it's faster
+                QString from = sourceItem.documentProxy()->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", sourceItem.sceneIndex());
+                QString to  = targetDocProxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", targetDocProxy->pageCount());
+                QFile::remove(to);
+                if (!UBFileSystemUtils::copy(from, to)) {
+                    qDebug() << "can't copy from " << from << "to" << to;
+                }
+            }
+        }
+
+        QApplication::restoreOverrideCursor();
+
+        UBApplication::applicationController->showMessage(tr("%1 pages copied", "", total).arg(total), false);
+
+        return true;
+    }
+
+
+
+    const UBDocumentTreeMimeData *mimeData = qobject_cast<const UBDocumentTreeMimeData*>(data);
+    if (!mimeData) {
+        qDebug() << "Incorrect mimeData, only internal one supported";
+        return false;
+    }
+    if (!parent.isValid()) {
+        return false;
+    }
+    UBDocumentTreeNode *newParentNode = nodeFromIndex(parent);
+
+    if (!newParentNode) {
+        qDebug() << "incorrect incoming parent node;";
+        return false;
+    }
+
+    QList<QModelIndex> incomingIndexes = mimeData->indexes();
+
+    foreach (QModelIndex curIndex, incomingIndexes) {
+        QModelIndex clonedTopLevel = copyIndexToNewParent(curIndex, parent, action == Qt::MoveAction ? aReference : aContentCopy);
+        if (nodeFromIndex(curIndex) == mCurrentNode && action == Qt::MoveAction) {
+            emit currentIndexMoved(clonedTopLevel, curIndex);
+        }
+    }
+
+    Q_UNUSED(action)
+    Q_UNUSED(row)
+    Q_UNUSED(column)
+    Q_UNUSED(parent)
+
+    return true;
+}
+
+bool UBDocumentTreeModel::removeRows(int row, int count, const QModelIndex &parent)
+{
+    if (row < 0 || row + count > rowCount(parent))
+        return false;
+
+    beginRemoveRows( parent, row, row + count - 1);
+
+    UBDocumentTreeNode *parentNode = nodeFromIndex(parent);
+    for (int i = row; i < row + count; i++) {
+        UBDocumentTreeNode *curChildNode = parentNode->children().at(i);
+        QModelIndex curChildIndex = parent.child(i, 0);
+        if (curChildNode) {
+            if (rowCount(curChildIndex)) {
+                while (rowCount(curChildIndex)) {
+                    removeRows(0, 1, curChildIndex);
+                }
+            }
+        }
+        mNewDocuments.removeAll(curChildNode->proxyData());
+        parentNode->removeChild(i);
+
+    }
+
+    endRemoveRows();
+    return true;
+}
+
+QModelIndex UBDocumentTreeModel::indexForNode(UBDocumentTreeNode *pNode) const
+{
+    if (pNode == 0) {
+        return QModelIndex();
+    }
+
+    return pIndexForNode(QModelIndex(), pNode);
+}
+
+QPersistentModelIndex UBDocumentTreeModel::persistentIndexForNode(UBDocumentTreeNode *pNode)
+{
+    return QPersistentModelIndex(indexForNode(pNode));
+}
+
+UBDocumentTreeNode *UBDocumentTreeModel::findProxy(UBDocumentProxy *pSearch, UBDocumentTreeNode *pParent) const
+{
+    foreach (UBDocumentTreeNode *curNode, pParent->children())
+    {
+        if (UBDocumentTreeNode::Catalog != curNode->nodeType())
+        {
+            if (curNode->proxyData()->theSameDocument(pSearch))
+                return curNode;
+        }
+        else if (curNode->children().count())
+        {
+            UBDocumentTreeNode *recursiveDescendResult = findProxy(pSearch, curNode);
+            if (recursiveDescendResult)
+                return findProxy(pSearch, curNode);
+        }
+    }
+
+    return 0;
+}
+
+QModelIndex UBDocumentTreeModel::pIndexForNode(const QModelIndex &parent, UBDocumentTreeNode *pNode) const
+{
+    for (int i = 0; i < rowCount(parent); i++) {
+        QModelIndex curIndex = index(i, 0, parent);
+        if (curIndex.internalPointer() == pNode) {
+            return curIndex;
+        } else if (rowCount(curIndex) > 0) {
+            QModelIndex recursiveDescendIndex = pIndexForNode(curIndex, pNode);
+            if (recursiveDescendIndex.isValid()) {
+                return recursiveDescendIndex;
+            }
+        }
+    }
+    return QModelIndex();
+}
+
+QPersistentModelIndex UBDocumentTreeModel::copyIndexToNewParent(const QModelIndex &source, const QModelIndex &newParent, eCopyMode pMode)
+{
+    UBDocumentTreeNode *nodeParent = nodeFromIndex(newParent);
+    UBDocumentTreeNode *nodeSource = nodeFromIndex(source);
+
+    if (!nodeParent || !nodeSource) {
+        return QModelIndex();
+    }
+
+    beginInsertRows(newParent, rowCount(newParent), rowCount(newParent));
+
+    UBDocumentTreeNode *clonedNodeSource = 0;
+    switch (static_cast<int>(pMode)) {
+    case aReference:
+        clonedNodeSource = nodeSource->clone();
+        if (mNewDocuments.contains(nodeSource->proxyData())) { //update references for session documents
+            mNewDocuments << clonedNodeSource->proxyData();
+
+            UBPersistenceManager::persistenceManager()->reassignDocProxy(clonedNodeSource->proxyData(), nodeSource->proxyData());
+        }
+        break;
+
+    case aContentCopy:
+        UBDocumentProxy* duplicatedProxy = 0;
+        if (nodeSource->nodeType() == UBDocumentTreeNode::Document && nodeSource->proxyData()) {
+            duplicatedProxy = UBPersistenceManager::persistenceManager()->duplicateDocument(nodeSource->proxyData());
+            duplicatedProxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+            UBMetadataDcSubsetAdaptor::persist(duplicatedProxy);
+        }
+        clonedNodeSource = new UBDocumentTreeNode(nodeSource->nodeType()
+                                                  , nodeSource->nodeName()
+                                                  , nodeSource->displayName()
+                                                  , duplicatedProxy);
+        break;
+    }
+
+    // Determine whether to provide a name with postfix if the name in current level allready exists
+    QString newName = clonedNodeSource->nodeName();
+    if ((source.parent() != newParent
+            || pMode != aReference)
+            && (newParent != trashIndex() || !inTrash(newParent))) {
+        newName = adjustNameForParentIndex(newName, newParent);
+        clonedNodeSource->setNodeName(newName);
+    }
+
+    if (clonedNodeSource->proxyData()) {
+        clonedNodeSource->proxyData()->setMetaData(UBSettings::documentGroupName, virtualPathForIndex(newParent));
+        clonedNodeSource->proxyData()->setMetaData(UBSettings::documentName, newName);
+        UBPersistenceManager::persistenceManager()->persistDocumentMetadata(clonedNodeSource->proxyData());
+    }
+
+    addNode(clonedNodeSource, newParent);
+//    nodeParent->addChild(clonedNodeSource);
+    endInsertRows();
+
+    QPersistentModelIndex newParentIndex = createIndex(rowCount(newParent), 0, clonedNodeSource);
+
+    if (rowCount(source)) {
+        for (int i = 0; i < rowCount(source); i++) {
+            QModelIndex curNewParentIndexChild = source.child(i, 0);
+            copyIndexToNewParent(curNewParentIndexChild, newParentIndex, pMode);
+        }
+    }
+
+    return newParentIndex;
+}
+
+void UBDocumentTreeModel::moveIndex(const QModelIndex &source, const QModelIndex &newParent)
+{
+    UBDocumentTreeNode *sourceNode = nodeFromIndex(source);
+    QPersistentModelIndex clonedTopLevel = copyIndexToNewParent(source, newParent);
+    if (sourceNode == mCurrentNode) {
+        mCurrentNode = nodeFromIndex(clonedTopLevel);
+        emit currentIndexMoved(clonedTopLevel, source);
+    }
+    removeRow(source.row(), source.parent());
+}
+
+void UBDocumentTreeModel::moveNode(const QModelIndex &source, const QModelIndex &newParent)
+{
+    Q_ASSERT(source.parent().isValid());
+
+    UBDocumentTreeNode *sourceNode = nodeFromIndex(source);
+    UBDocumentTreeNode *newParentNode = nodeFromIndex(newParent);
+
+    int destinationPosition = positionForParent(sourceNode, newParentNode);
+
+    if (source.row() != destinationPosition || source.parent() == newParent) {
+        beginMoveRows(source.parent(), source.row(), source.row(), newParent, destinationPosition);
+        sourceNode->parentNode()->children().removeAt(source.row());
+        newParentNode->insertChild(destinationPosition, sourceNode);
+        endMoveRows();
+    }
+}
+
+void UBDocumentTreeModel::setCurrentDocument(UBDocumentProxy *pDocument)
+{
+    UBDocumentTreeNode *testCurNode = findProxy(pDocument, mRootNode);
+
+    if (testCurNode) {
+        setCurrentNode(testCurNode);
+    }
+}
+
+QModelIndex UBDocumentTreeModel::indexForProxy(UBDocumentProxy *pSearch) const
+{
+//    qDebug() << "looking for proxy" << pSearch;
+    UBDocumentTreeNode *proxy = findProxy(pSearch, mRootNode);
+    if (!proxy) {
+        return QModelIndex();
+    }
+
+    return indexForNode(proxy);
+}
+
+void UBDocumentTreeModel::setRootNode(UBDocumentTreeNode *pRoot)
+{
+    mRootNode = pRoot;
+    reset();
+}
+
+UBDocumentProxy *UBDocumentTreeModel::proxyForIndex(const QModelIndex &pIndex) const
+{
+    UBDocumentTreeNode *node = nodeFromIndex(pIndex);
+    if (!node) {
+        return 0;
+    }
+
+    return node->proxyData();
+}
+
+QString UBDocumentTreeModel::virtualDirForIndex(const QModelIndex &pIndex) const
+{
+    QString result;
+    UBDocumentTreeNode *curNode = nodeFromIndex(pIndex);
+    //protect the 2nd level items
+    while (curNode->parentNode() && !curNode->isTopLevel()) {
+        result.prepend(curNode->parentNode()->nodeName() + "/");
+        curNode = curNode->parentNode();
+    }
+
+    if (result.endsWith("/")) {
+        result.truncate(result.count() - 1);
+    }
+
+    return result;
+}
+
+QString UBDocumentTreeModel::virtualPathForIndex(const QModelIndex &pIndex) const
+{
+    UBDocumentTreeNode *curNode = nodeFromIndex(pIndex);
+    Q_ASSERT(curNode);
+
+    return virtualDirForIndex(pIndex) + "/" + curNode->nodeName();
+}
+
+QStringList UBDocumentTreeModel::nodeNameList(const QModelIndex &pIndex) const
+{
+    QStringList result;
+
+    UBDocumentTreeNode *catalog = nodeFromIndex(pIndex);
+    if (catalog->nodeType() != UBDocumentTreeNode::Catalog) {
+        return QStringList();
+    }
+
+    foreach (UBDocumentTreeNode *curNode, catalog->children()) {
+        result << curNode->nodeName();
+    }
+
+    return result;
+}
+
+bool UBDocumentTreeModel::newNodeAllowed(const QModelIndex &pSelectedIndex)  const
+{
+    if (!pSelectedIndex.isValid()) {
+        return false;
+    }
+
+    if (inTrash(pSelectedIndex) || pSelectedIndex == trashIndex()) {
+        return false;
+    }
+
+    return true;
+}
+
+QModelIndex UBDocumentTreeModel::goTo(const QString &dir)
+{
+    QStringList pathList = dir.split("/", QString::SkipEmptyParts);
+
+    if (pathList.isEmpty()) {
+        return untitledDocumentsIndex();
+    }
+
+    if (pathList.first() != UBPersistenceManager::myDocumentsName
+            && pathList.first() != UBSettings::trashedDocumentGroupNamePrefix
+            && pathList.first() != UBPersistenceManager::modelsName) {
+        pathList.prepend(UBPersistenceManager::myDocumentsName);
+    }
+
+    QModelIndex parentIndex;
+
+    bool searchingNode = true;
+    while (!pathList.isEmpty())
+    {
+        QString curLevelName = pathList.takeFirst();
+        if (searchingNode) {
+            searchingNode = false;
+            for (int i = 0; i < rowCount(parentIndex); ++i) {
+                QModelIndex curChildIndex = index(i, 0, parentIndex);
+                if (nodeFromIndex(curChildIndex)->nodeName() == curLevelName) {
+                    searchingNode = true;
+                    parentIndex = curChildIndex;
+                    break;
+                }
+            }
+        }
+
+        if (!searchingNode) {
+            UBDocumentTreeNode *newChild = new UBDocumentTreeNode(UBDocumentTreeNode::Catalog, curLevelName);
+            parentIndex = addNode(newChild, parentIndex);
+        }
+    }
+
+    return parentIndex;
+}
+
+bool UBDocumentTreeModel::inTrash(const QModelIndex &index) const
+{
+    return isDescendantOf(index, trashIndex());
+}
+
+bool UBDocumentTreeModel::inModel(const QModelIndex &index) const
+{
+    return isDescendantOf(index, modelsIndex());
+}
+
+bool UBDocumentTreeModel::inUntitledDocuments(const QModelIndex &index) const
+{
+    return isDescendantOf(index, untitledDocumentsIndex());
+}
+
+void UBDocumentTreeModel::addDocument(UBDocumentProxy *pProxyData, const QModelIndex &pParent)
+{
+    if (!pProxyData) {
+        return;
+    }
+    QString docName = pProxyData->metaData(UBSettings::documentName).toString();
+    QString docGroupName = pProxyData->metaData(UBSettings::documentGroupName).toString();
+
+    if (docName.isEmpty()) {
+        return;
+    }
+
+    QModelIndex lParent = pParent;
+    UBDocumentTreeNode *freeNode = new UBDocumentTreeNode(UBDocumentTreeNode::Document
+                                                          , docName
+                                                          , QString()
+                                                          , pProxyData);
+    if (!pParent.isValid()) {
+        lParent = goTo(docGroupName);
+    }
+
+    addNode(freeNode, lParent);
+}
+
+void UBDocumentTreeModel::addNewDocument(UBDocumentProxy *pProxyData, const QModelIndex &pParent)
+{
+    addDocument(pProxyData, pParent);
+    mNewDocuments << pProxyData;
+}
+
+void UBDocumentTreeModel::addCatalog(const QString &pName, const QModelIndex &pParent)
+{
+    if (pName.isEmpty() || !pParent.isValid()) {
+        return;
+    }
+
+    UBDocumentTreeNode *catalogNode = new UBDocumentTreeNode(UBDocumentTreeNode::Catalog, pName);
+    addNode(catalogNode, pParent);
+}
+
+void UBDocumentTreeModel::setNewName(const QModelIndex &index, const QString &newName)
+{
+    if (!index.isValid()) {
+        return;
+    }
+
+    UBDocumentTreeNode *indexNode = nodeFromIndex(index);
+
+    QString magicSeparator = "+!##s";
+    if (isCatalog(index)) {
+        QString fullNewName = newName;
+        if (!newName.contains(magicSeparator)) {
+            indexNode->setNodeName(newName);
+            QString virtualDir = virtualDirForIndex(index);
+            fullNewName.prepend(virtualDir.isEmpty() ? "" : virtualDir + magicSeparator);
+        }
+        for (int i = 0; i < rowCount(index); i++) {
+            QModelIndex subIndex = this->index(i, 0, index);
+            setNewName(subIndex, fullNewName + magicSeparator + subIndex.data().toString());
+        }
+
+    } else if (isDocument(index)) {
+        Q_ASSERT(indexNode->proxyData());
+
+        int prefixIndex = newName.lastIndexOf(magicSeparator);
+        if (prefixIndex != -1) {
+            QString newDocumentGroupName = newName.left(prefixIndex).replace(magicSeparator, "/");
+            indexNode->proxyData()->setMetaData(UBSettings::documentGroupName, newDocumentGroupName);
+        } else {
+            indexNode->setNodeName(newName);
+            indexNode->proxyData()->setMetaData(UBSettings::documentName, newName);
+        }
+
+        UBPersistenceManager::persistenceManager()->persistDocumentMetadata(indexNode->proxyData());
+    }
+}
+
+QString UBDocumentTreeModel::adjustNameForParentIndex(const QString &pName, const QModelIndex &pIndex)
+{
+    int i = 0;
+    QString newName = pName;
+    QStringList siblingNames = nodeNameList(pIndex);
+    while (siblingNames.contains(newName)) {
+        newName = pName + " " + QVariant(++i).toString();
+    }
+
+    return newName;
+}
+
+bool UBDocumentTreeModel::isDescendantOf(const QModelIndex &pPossibleDescendant, const QModelIndex &pPossibleAncestor) const
+{
+    if (!pPossibleDescendant.isValid()) {
+        return false;
+    }
+
+    QModelIndex ancestor = pPossibleDescendant;
+    while (ancestor.parent().isValid()) {
+        ancestor = ancestor.parent();
+        if (ancestor == pPossibleAncestor) {
+            return true;
+        }
+    }
+
+    return false;
+}
+
+QModelIndex UBDocumentTreeModel::addNode(UBDocumentTreeNode *pFreeNode, const QModelIndex &pParent, eAddItemMode pMode)
+{
+    UBDocumentTreeNode *tstParent = nodeFromIndex(pParent);
+
+    if (!pParent.isValid() || tstParent->nodeType() != UBDocumentTreeNode::Catalog) {
+        return QModelIndex();
+    }
+    int newIndex = pMode == aDetectPosition ? positionForParent(pFreeNode, tstParent): tstParent->children().size();
+    beginInsertRows(pParent, newIndex, newIndex);
+    tstParent->insertChild(newIndex, pFreeNode);
+    endInsertRows();
+
+    return createIndex(newIndex, 0, pFreeNode);
+}
+
+int UBDocumentTreeModel::positionForParent(UBDocumentTreeNode *pFreeNode, UBDocumentTreeNode *pParentNode)
+{
+    Q_ASSERT(pFreeNode);
+    Q_ASSERT(pParentNode);
+    Q_ASSERT(pParentNode->nodeType() == UBDocumentTreeNode::Catalog);
+
+    int c = -1;
+    int childCount = pParentNode->children().count();
+    while (c <= childCount) {
+        if (++c == childCount || lessThan(pFreeNode, pParentNode->children().at(c))) {
+            break;
+        }
+    }
+    return c == -1 ? childCount : c;
+}
+
+UBDocumentTreeNode *UBDocumentTreeModel::nodeFromIndex(const QModelIndex &pIndex) const
+{
+    if (pIndex.isValid()) {
+        return static_cast<UBDocumentTreeNode*>(pIndex.internalPointer());
+    } else {
+        return mRootNode;
+    }
+}
+
+void UBDocumentTreeModel::sort(int column, Qt::SortOrder order)
+{
+    Q_UNUSED(order)
+    Q_UNUSED(column)
+
+//  QModelIndex parentIndex = index(0, column, QModelIndex());
+    sortChilds(mRoot);
+}
+
+void UBDocumentTreeModel::sortChilds(const QModelIndex &parentIndex)
+{
+    int current_column = 0;
+    int current_row = 0;
+
+    QList <UBDocumentTreeNode*> catalogsForSort;
+    QList <UBDocumentTreeNode*> documentsForSort;
+
+    for (current_row = 0; current_row < rowCount(parentIndex); current_row++)
+    {
+        QModelIndex currentIndex = index(current_row, current_column, parentIndex);
+        if (isCatalog(currentIndex))
+            catalogsForSort << nodeFromIndex(currentIndex);
+        else
+            documentsForSort << nodeFromIndex(currentIndex);
+    }
+
+    sortIndexes(catalogsForSort);
+    sortIndexes(documentsForSort);
+
+
+
+    foreach (UBDocumentTreeNode *node, catalogsForSort)
+    {
+        sortChilds(indexForNode(node));
+    }
+
+    foreach(UBDocumentTreeNode *node, catalogsForSort)
+    {
+        QModelIndex currentIndex = indexForNode(node);
+        moveIndex(currentIndex, parentIndex);
+    }
+
+    for (int i = documentsForSort.count()-1; i >= 0 ; i--)
+    {
+        QModelIndex currentIndex = indexForNode(documentsForSort.at(i));
+        moveIndex(currentIndex, parentIndex);
+    }
+}
+
+
+void UBDocumentTreeModel::sortIndexes(QList<UBDocumentTreeNode *> &unsortedIndexList)
+{
+    qStableSort(unsortedIndexList.begin(), unsortedIndexList.end(), nodeLessThan);
+}
+
+bool UBDocumentTreeModel::nodeLessThan(const UBDocumentTreeNode *firstIndex, const UBDocumentTreeNode *secondIndex)
+{
+    return firstIndex->nodeName() < secondIndex->nodeName();
+}
+
+UBDocumentTreeModel::~UBDocumentTreeModel()
+{
+    delete mRootNode;
+}
+
+UBDocumentTreeView::UBDocumentTreeView(QWidget *parent) : QTreeView(parent)
+{
+    setObjectName("UBDocumentTreeView");
+    setRootIsDecorated(true);
+
+//    QScrollBar *hScroller = horizontalScrollBar();
+//    if (hScroller)
+//    {
+//        connect(hScroller, SIGNAL(rangeChanged(int, int)), this, SLOT(hSliderRangeChanged(int, int)));
+//    }
+
+    connect(verticalScrollBar(), SIGNAL(rangeChanged(int,int)), this, SLOT(adjustSize()));
+    connect(this, SIGNAL(collapsed(const QModelIndex&)), this, SLOT(adjustSize()));
+    connect(this, SIGNAL(expanded(const QModelIndex&)), this, SLOT(adjustSize()));
+}
+
+void UBDocumentTreeView::setSelectedAndExpanded(const QModelIndex &pIndex, bool pExpand)
+{
+    if (!pIndex.isValid()) {
+        return;
+    }
+
+    QModelIndex indexCurrentDoc = pIndex;
+    clearSelection();
+     selectionModel()->select(indexCurrentDoc, pExpand
+                             ? QItemSelectionModel::Select
+                             : QItemSelectionModel::Deselect);
+    setCurrentIndex(pExpand
+                    ? indexCurrentDoc
+                    : QModelIndex());
+
+    while (indexCurrentDoc.parent().isValid()) {
+        setExpanded(indexCurrentDoc.parent(), pExpand);
+        indexCurrentDoc = indexCurrentDoc.parent();
+    }
+}
+
+void UBDocumentTreeView::onModelIndexChanged(const QModelIndex &pNewIndex, const QModelIndex &pOldIndex)
+{
+    Q_UNUSED(pOldIndex)
+    setSelectedAndExpanded(pNewIndex, true);
+}
+
+void UBDocumentTreeView::hSliderRangeChanged(int min, int max)
+{
+    Q_UNUSED(min);
+    Q_UNUSED(max);
+
+    QScrollBar *hScroller = horizontalScrollBar();
+    if (hScroller)
+    {
+        hScroller->triggerAction(QAbstractSlider::SliderToMaximum);
+    }
+}
+
+void UBDocumentTreeView::dragEnterEvent(QDragEnterEvent *event)
+{
+    QTreeView::dragEnterEvent(event);
+    event->accept();
+    event->acceptProposedAction();
+}
+
+void UBDocumentTreeView::dragLeaveEvent(QDragLeaveEvent *event)
+{
+    Q_UNUSED(event);
+    UBDocumentTreeModel *docModel = qobject_cast<UBDocumentTreeModel*>(model());
+    docModel->setHighLighted(QModelIndex());
+    update();
+}
+
+void UBDocumentTreeView::dragMoveEvent(QDragMoveEvent *event)
+{
+    if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage)) {
+        UBDocumentTreeModel *docModel = qobject_cast<UBDocumentTreeModel*>(model());
+        QModelIndex targetIndex = indexAt(event->pos());
+        if (!docModel || !docModel->isDocument(targetIndex) || docModel->inTrash(targetIndex)) {
+            event->ignore();
+            docModel->setHighLighted(QModelIndex());
+            updateIndexEnvirons(targetIndex);
+            return;
+        }
+        docModel->setHighLighted(targetIndex);
+        updateIndexEnvirons(targetIndex);
+    }
+    QTreeView::dragMoveEvent(event);
+    event->setAccepted(isAcceptable(selectedIndexes().first(), indexAt(event->pos())));
+}
+
+void UBDocumentTreeView::dropEvent(QDropEvent *event)
+{
+    if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage)) {
+        UBDocumentTreeModel *docModel = qobject_cast<UBDocumentTreeModel*>(model());
+        QModelIndex targetIndex = indexAt(event->pos());
+        qDebug() << "target index drop event" << docModel->nodeFromIndex(targetIndex)->nodeName();
+        if (!docModel || !docModel->isDocument(targetIndex)) {
+            event->ignore();
+            return;
+        }
+        docModel->setHighLighted(QModelIndex());
+        event->setDropAction(Qt::CopyAction);
+    } else {
+        event->setDropAction(acceptableAction(selectedIndexes().first(), indexAt(event->pos())));
+    }
+    QTreeView::dropEvent(event);
+    adjustSize();
+}
+
+void UBDocumentTreeView::paintEvent(QPaintEvent *event)
+{
+    QTreeView::paintEvent(event);
+}
+
+void UBDocumentTreeView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
+{
+//    //managing current index inside the application. There is no common solution for that
+//    Q_UNUSED(parent)
+//    Q_UNUSED(start)
+//    Q_UNUSED(end)
+
+//    for (int i = start; i <= end; i++) {
+//        if (currentIndex() == model()->index(i, 0, parent)) {
+//            qDebug() << "catched";
+//        }
+//    }
+
+////    setState(CollapsingState);
+//    updateGeometries();
+
+    QTreeView::rowsAboutToBeRemoved(parent, start, end);
+}
+
+bool UBDocumentTreeView::isAcceptable(const QModelIndex &dragIndex, const QModelIndex &atIndex)
+{
+    if (fullModel()->inModel(dragIndex)) {
+        if (atIndex == fullModel()->modelsIndex() || fullModel()->inModel(atIndex)) {
+            return false; //do not accept drop from model to itself
+        }
+    }
+
+    return true;
+}
+
+Qt::DropAction UBDocumentTreeView::acceptableAction(const QModelIndex &dragIndex, const QModelIndex &atIndex)
+{
+    if (fullModel()->inModel(dragIndex)) {
+        if (atIndex == fullModel()->trashIndex() || fullModel()->inTrash(atIndex)) {
+            return Qt::MoveAction; //do not accept drop from model to trash, only "delete" command accepted
+        }
+        return Qt::CopyAction;
+    } else {
+        return Qt::MoveAction;
+    }
+
+    return Qt::IgnoreAction;
+}
+
+void UBDocumentTreeView::updateIndexEnvirons(const QModelIndex &index)
+{
+    QRect updateRect = visualRect(index);
+    const int multipler = 3;
+    updateRect.adjust(0, -updateRect.height() * multipler, 0, updateRect.height() * multipler);
+    update(updateRect);
+}
+
+void UBDocumentTreeView::adjustSize()
+{
+    resizeColumnToContents(0);
+
+    int headerSizeHint = width();
+
+    if (verticalScrollBar()->isVisible() && verticalScrollBar()->maximum() > 0)
+        headerSizeHint -= verticalScrollBar()->width();
+
+    if (columnWidth(0) < headerSizeHint)
+        setColumnWidth(0, headerSizeHint);
+}
+
+UBDocumentTreeItemDelegate::UBDocumentTreeItemDelegate(QObject *parent)
+    : QStyledItemDelegate(parent)
+{
+
+}
+
+void UBDocumentTreeItemDelegate::commitAndCloseEditor()
+{
+    QLineEdit *lineEditor = qobject_cast<QLineEdit*>(sender());
+    if (lineEditor) {
+        emit commitData(lineEditor);
+        emit closeEditor(lineEditor);
+    }
+}
+
+void UBDocumentTreeItemDelegate::processChangedText(const QString &str) const
+{
+    QLineEdit *editor = qobject_cast<QLineEdit*>(sender());
+    if (!editor) {
+        return;
+    }
+
+    if (!validateString(str)) {
+        editor->setStyleSheet("background-color: #FFB3C8;");
+    } else {
+        editor->setStyleSheet("background-color: #FFFFFF;");
+    }
+}
+
+bool UBDocumentTreeItemDelegate::validateString(const QString &str) const
+{
+    return QRegExp("[^\\/\\:\\?\\*\\|\\<\\>\\\"]{1,}").exactMatch(str)
+            && !mExistingFileNames.contains(str);
+
+}
+
+QWidget *UBDocumentTreeItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
+{
+    Q_UNUSED(option);
+    Q_UNUSED(index);
+
+    mExistingFileNames.clear();
+    const UBDocumentTreeModel *indexModel = qobject_cast<const UBDocumentTreeModel*>(index.model());
+    if (indexModel) {
+        mExistingFileNames = indexModel->nodeNameList(index.parent());
+        mExistingFileNames.removeOne(index.data().toString());
+    }
+
+    QLineEdit *nameEditor = new QLineEdit(parent);
+    connect(nameEditor, SIGNAL(editingFinished()), this, SLOT(commitAndCloseEditor()));
+    connect(nameEditor, SIGNAL(textChanged(QString)), this, SLOT(processChangedText(QString)));
+    return nameEditor;
+}
+
+void UBDocumentTreeItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
+{
+    if (index.column() == 0) {
+        QLineEdit *lineEditor = qobject_cast<QLineEdit*>(editor);
+        lineEditor->setText(index.data().toString());
+        lineEditor->selectAll();
+    }
+}
+
+void UBDocumentTreeItemDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
+{
+    QLineEdit *lineEditor = qobject_cast<QLineEdit*>(editor);
+    if (validateString(lineEditor->text())) {
+        model->setData(index, lineEditor->text());
+    }
+}
+
+void UBDocumentTreeItemDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex &index) const
+{
+    QStyledItemDelegate::paint(painter, option, index);
+}
+
+UBDocumentController::UBDocumentController(UBMainWindow* mainWindow)
+   : UBDocumentContainer(mainWindow->centralWidget())
+   , mSelectionType(None)
+   , mParentWidget(mainWindow->centralWidget())
+   , mBoardController(UBApplication::boardController)
+   , mDocumentUI(0)
+   , mMainWindow(mainWindow)
+   , mDocumentWidget(0)
+   , mIsClosing(false)
+   , mToolsPalette(0)
+   , mToolsPalettePositionned(false)
+   , mTrashTi(0)
+   , mDocumentTrashGroupName(tr("Trash"))
+   , mDefaultDocumentGroupName(tr("Untitled Documents"))
+   , mCurrentTreeDocument(0)
+   , mCurrentIndexMoved(false)
+{
+
+    setupViews();
+    setupToolbar();
+//    this->selectDocument(UBApplication::boardController->selectedDocument());
+    connect(this, SIGNAL(exportDone()), mMainWindow, SLOT(onExportDone()));
+    connect(this, SIGNAL(documentThumbnailsUpdated(UBDocumentContainer*)), this, SLOT(refreshDocumentThumbnailsView(UBDocumentContainer*)));
+}
+
+UBDocumentController::~UBDocumentController()
+{
+   if (mDocumentUI)
+       delete mDocumentUI;
+}
+
+void UBDocumentController::createNewDocument()
+{
+    UBPersistenceManager *pManager = UBPersistenceManager::persistenceManager();
+    UBDocumentTreeModel *docModel = pManager->mDocumentTreeStructureModel;
+    QModelIndex selectedIndex = firstSelectedTreeIndex();
+    if (selectedIndex.isValid()) {
+        QString groupName = docModel->isCatalog(selectedIndex)
+                ? docModel->virtualPathForIndex(selectedIndex)
+                : docModel->virtualDirForIndex(selectedIndex);
+
+
+        /* disabled model sorting. We cannot use it because of lot os troubles with internal Qt implementation related QPerisstentModelIndex which becomes invalid on index move.
+        UBDocumentProxy *document = new UBDocumentProxy(*pManager->createDocument(groupName)); // work around with memory leak.
+        mBoardController->setActiveDocumentScene(document);
+        UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel->sort(0);
+        */
+
+        UBDocumentProxy *document = pManager->createDocument(groupName);
+        selectDocument(document);
+
+        if (document)
+            UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel->markDocumentAsNew(document);
+    }
+}
+
+
+UBDocumentProxyTreeItem* UBDocumentController::findDocument(UBDocumentProxy* proxy)
+{
+    QTreeWidgetItemIterator it(mDocumentUI->documentTreeWidget);
+
+    while (*it)
+    {
+        UBDocumentProxyTreeItem *treeItem = dynamic_cast<UBDocumentProxyTreeItem*>((*it));
+
+        if (treeItem && treeItem->proxy() == proxy)
+            return treeItem;
+
+        ++it;
+    }
+
+    return 0;
+}
+
+void UBDocumentController::selectDocument(UBDocumentProxy* proxy, bool setAsCurrentDocument)
+{
+    if (proxy==NULL)
+    {
+        setDocument(NULL);
+        return;
+    }
+
+    if (setAsCurrentDocument) {
+        QModelIndex treeIndex = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel->indexForProxy(proxy);
+        if (treeIndex.isValid()) {
+            qDebug() << "valid index";
+        }
+
+        UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel->setCurrentDocument(proxy);
+        QModelIndex indexCurrentDoc = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel->indexForProxy(proxy);
+        mDocumentUI->documentTreeView->setSelectedAndExpanded(indexCurrentDoc, true);
+    }
+
+    mSelectionType = Document;
+    setDocument(proxy);
+}
+
+void UBDocumentController::createNewDocumentGroup()
+{
+    UBPersistenceManager *pManager = UBPersistenceManager::persistenceManager();
+    UBDocumentTreeModel *docModel = pManager->mDocumentTreeStructureModel;
+    QModelIndex selectedIndex = firstSelectedTreeIndex();
+    if (!selectedIndex.isValid()) {
+        return;
+    }
+    QModelIndex parentIndex = docModel->isCatalog(selectedIndex)
+            ? selectedIndex
+            : selectedIndex.parent();
+
+    QString newFolderName = docModel->adjustNameForParentIndex(tr("New Folder"), parentIndex);
+
+    docModel->addCatalog(newFolderName, parentIndex);
+/*  disabled model sorting. We cannot use it because of lot os troubles with internal Qt implementation related QPerisstentModelIndex which becomes invalid on index move.
+    UBDocumentProxy *document = new UBDocumentProxy(*selectedDocument()); // work around with memory leak.
+    mBoardController->setActiveDocumentScene(document);
+    UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel->sort(0);
+    selectDocument(document);
+*/
+}
+
+
+UBDocumentProxy* UBDocumentController::selectedDocumentProxy()
+{
+    return UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel->proxyForIndex(firstSelectedTreeIndex());
+}
+
+QList<UBDocumentProxy*> UBDocumentController::selectedProxies()
+{
+    QList<UBDocumentProxy*> result;
+
+    foreach (QModelIndex curIndex, mDocumentUI->documentTreeView->selectionModel()->selectedIndexes()) {
+        result << UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel->proxyForIndex(curIndex);
+    }
+
+    return result;
+}
+
+QModelIndexList UBDocumentController::selectedTreeIndexes()
+{
+    return mDocumentUI->documentTreeView->selectionModel()->selectedIndexes();
+}
+
+UBDocumentProxy* UBDocumentController::firstSelectedTreeProxy()
+{
+    return selectedProxies().count() ? selectedProxies().first() : 0;
+}
+
+UBDocumentProxyTreeItem* UBDocumentController::selectedDocumentProxyTreeItem()
+{
+    if (mDocumentUI && mDocumentUI->documentTreeWidget)
+    {
+        QList<QTreeWidgetItem *> selectedItems = mDocumentUI->documentTreeWidget->selectedItems();
+
+        foreach (QTreeWidgetItem * item, selectedItems)
+        {
+            UBDocumentProxyTreeItem* proxyItem = dynamic_cast<UBDocumentProxyTreeItem*>(item);
+
+            if (proxyItem)
+            {
+                return proxyItem;
+            }
+        }
+    }
+
+    return 0;
+}
+
+
+UBDocumentGroupTreeItem* UBDocumentController::selectedDocumentGroupTreeItem()
+{
+    QList<QTreeWidgetItem *> selectedItems = mDocumentUI->documentTreeWidget->selectedItems();
+
+    foreach (QTreeWidgetItem * item, selectedItems)
+    {
+        UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+
+        if (groupItem)
+        {
+            return groupItem;
+        }
+        else
+        {
+            UBDocumentGroupTreeItem* parent = dynamic_cast<UBDocumentGroupTreeItem*>(item->parent());
+            if (parent)
+            {
+                return parent;
+            }
+        }
+    }
+
+    return 0;
+}
+
+void UBDocumentController::TreeViewSelectionChanged(const QModelIndex &current, const QModelIndex &previous)
+{
+    Q_UNUSED(previous)
+
+    UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel;
+    UBDocumentProxy *currentDocumentProxy = docModel->proxyData(current);
+    setDocument(currentDocumentProxy, false);
+
+    if (mCurrentIndexMoved) {
+        if (docModel->isDocument(current)) {
+            docModel->setCurrentDocument(currentDocumentProxy);
+        } else if (docModel->isCatalog(current)) {
+            docModel->setCurrentDocument(0);
+        }
+        mCurrentIndexMoved = false;
+    }
+
+    itemSelectionChanged(docModel->isCatalog(current) ? Folder : Document);
+}
+
+void UBDocumentController::TreeViewSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
+{
+    Q_UNUSED(deselected)
+
+    if (selected.indexes().count()) {
+        QModelIndex NewSelectedRow = selected.indexes().first();
+        TreeViewSelectionChanged(NewSelectedRow, QModelIndex());
+    }
+
+}
+
+void UBDocumentController::itemSelectionChanged(LastSelectedElementType newSelection)
+{
+    mSelectionType = newSelection;
+    updateActions();
+}
+
+
+void UBDocumentController::setupViews()
+{
+
+    if (!mDocumentWidget)
+    {
+        mDocumentWidget = new QWidget(mMainWindow->centralWidget());
+        mMainWindow->addDocumentsWidget(mDocumentWidget);
+
+        mDocumentUI = new Ui::documents();
+
+        mDocumentUI->setupUi(mDocumentWidget);
+
+        int thumbWidth = UBSettings::settings()->documentThumbnailWidth->get().toInt();
+
+        mDocumentUI->documentZoomSlider->setValue(thumbWidth);
+        mDocumentUI->thumbnailWidget->setThumbnailWidth(thumbWidth);
+
+        connect(mDocumentUI->documentZoomSlider, SIGNAL(valueChanged(int)), this,
+                SLOT(documentZoomSliderValueChanged(int)));
+
+        connect(mMainWindow->actionOpen, SIGNAL(triggered()), this, SLOT(openSelectedItem()));
+        connect(mMainWindow->actionNewFolder, SIGNAL(triggered()), this, SLOT(createNewDocumentGroup()));
+        connect(mMainWindow->actionNewDocument, SIGNAL(triggered()), this, SLOT(createNewDocument()));
+
+        connect(mMainWindow->actionImport, SIGNAL(triggered(bool)), this, SLOT(importFile()));
+
+        QMenu* addMenu = new QMenu(mDocumentWidget);
+        mAddFolderOfImagesAction = addMenu->addAction(tr("Add Folder of Images"));
+        mAddImagesAction = addMenu->addAction(tr("Add Images"));
+        mAddFileToDocumentAction = addMenu->addAction(tr("Add Pages from File"));
+
+        connect(mAddFolderOfImagesAction, SIGNAL(triggered(bool)), this, SLOT(addFolderOfImages()));
+        connect(mAddFileToDocumentAction, SIGNAL(triggered(bool)), this, SLOT(addFileToDocument()));
+        connect(mAddImagesAction, SIGNAL(triggered(bool)), this, SLOT(addImages()));
+
+        foreach (QWidget* menuWidget,  mMainWindow->actionDocumentAdd->associatedWidgets())
+        {
+            QToolButton *tb = qobject_cast<QToolButton*>(menuWidget);
+
+            if (tb && !tb->menu())
+            {
+                tb->setObjectName("ubButtonMenu");
+                tb->setPopupMode(QToolButton::InstantPopup);
+
+                QMenu* menu = new QMenu(mDocumentWidget);
+
+                menu->addAction(mAddFolderOfImagesAction);
+                menu->addAction(mAddImagesAction);
+                menu->addAction(mAddFileToDocumentAction);
+
+                tb->setMenu(menu);
+            }
+        }
+
+        QMenu* exportMenu = new QMenu(mDocumentWidget);
+
+        UBDocumentManager *documentManager = UBDocumentManager::documentManager();
+        for (int i = 0; i < documentManager->supportedExportAdaptors().length(); i++)
+        {
+            UBExportAdaptor* adaptor = documentManager->supportedExportAdaptors()[i];
+            QAction *currentExportAction = exportMenu->addAction(adaptor->exportName());
+            currentExportAction->setData(i);
+            connect(currentExportAction, SIGNAL(triggered (bool)), this, SLOT(exportDocument()));
+            exportMenu->addAction(currentExportAction);
+            adaptor->setAssociatedAction(currentExportAction);
+        }
+
+        foreach (QWidget* menuWidget,  mMainWindow->actionExport->associatedWidgets())
+        {
+            QToolButton *tb = qobject_cast<QToolButton*>(menuWidget);
+
+            if (tb && !tb->menu())
+            {
+                tb->setObjectName("ubButtonMenu");
+                tb->setPopupMode(QToolButton::InstantPopup);
+
+                tb->setMenu(exportMenu);
+            }
+        }
+
+#ifdef Q_WS_MAC
+        mMainWindow->actionDelete->setShortcut(QKeySequence(Qt::Key_Backspace));
+#endif
+
+        connect(mMainWindow->actionDelete, SIGNAL(triggered()), this, SLOT(deleteSelectedItem()));
+        connect(mMainWindow->actionDuplicate, SIGNAL(triggered()), this, SLOT(duplicateSelectedItem()));
+        connect(mMainWindow->actionRename, SIGNAL(triggered()), this, SLOT(renameSelectedItem()));
+        connect(mMainWindow->actionAddToWorkingDocument, SIGNAL(triggered()), this, SLOT(addToDocument()));
+
+        mDocumentUI->documentTreeWidget->setSelectionMode(QAbstractItemView::SingleSelection);
+        mDocumentUI->documentTreeWidget->setDragEnabled(true);
+        mDocumentUI->documentTreeWidget->viewport()->setAcceptDrops(true);
+        mDocumentUI->documentTreeWidget->setDropIndicatorShown(true);
+        mDocumentUI->documentTreeWidget->setIndentation(18); // 1.5 * /resources/style/treeview-branch-closed.png width
+        mDocumentUI->documentTreeWidget->setDragDropMode(QAbstractItemView::InternalMove);
+
+//        connect(mDocumentUI->documentTreeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelectionChanged()));
+//        connect(mDocumentUI->documentTreeWidget, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(itemChanged(QTreeWidgetItem *, int)));
+//        connect(mDocumentUI->documentTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem *, int)), this, SLOT(itemClicked(QTreeWidgetItem *, int)));
+
+        mDocumentUI->documentTreeView->setModel(UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel);
+        mDocumentUI->documentTreeView->setItemDelegate(new UBDocumentTreeItemDelegate(this));
+//        mDocumentUI->documentTreeView->setDragDropMode(QAbstractItemView::InternalMove);
+        mDocumentUI->documentTreeView->setDragEnabled(true);
+        mDocumentUI->documentTreeView->setAcceptDrops(true);
+        mDocumentUI->documentTreeView->viewport()->setAcceptDrops(true);
+        mDocumentUI->documentTreeView->setDropIndicatorShown(true);
+        mDocumentUI->documentTreeView->header()->setStretchLastSection(false);
+        mDocumentUI->documentTreeView->header()->setResizeMode(0, QHeaderView::Interactive);
+
+        mDocumentUI->documentTreeView->resizeColumnToContents(0);
+
+        int headerSizeHint = mDocumentUI->documentTreeView->width();
+
+        if (mDocumentUI->documentTreeView->verticalScrollBar()->isVisible())
+            headerSizeHint = mDocumentUI->documentTreeView->width() - mDocumentUI->documentTreeView->verticalScrollBar()->width();
+
+        if (mDocumentUI->documentTreeView->columnWidth(0) < headerSizeHint)
+            mDocumentUI->documentTreeView->setColumnWidth(0, headerSizeHint);
+
+        connect(mDocumentUI->documentTreeView->itemDelegate(), SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint) ), mDocumentUI->documentTreeView, SLOT(adjustSize()));
+//        connect(mDocumentUI->documentTreeView->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), this, SLOT(TreeViewSelectionChanged(QModelIndex,QModelIndex)));
+        connect(mDocumentUI->documentTreeView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(TreeViewSelectionChanged(QItemSelection,QItemSelection)));
+        connect(UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel, SIGNAL(indexChanged(QModelIndex,QModelIndex))
+                ,mDocumentUI->documentTreeView, SLOT(onModelIndexChanged(QModelIndex,QModelIndex)));
+        connect(UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel, SIGNAL(currentIndexMoved(QModelIndex,QModelIndex))
+                ,this, SLOT(currentIndexMoved(QModelIndex,QModelIndex)));
+
+        connect(mDocumentUI->thumbnailWidget, SIGNAL(sceneDropped(UBDocumentProxy*, int, int)), this, SLOT(moveSceneToIndex ( UBDocumentProxy*, int, int)));
+        connect(mDocumentUI->thumbnailWidget, SIGNAL(resized()), this, SLOT(thumbnailViewResized()));
+//        connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseDoubleClick(QGraphicsItem*, int)), this, SLOT(pageDoubleClicked(QGraphicsItem*, int)));
+        connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseDoubleClick(QGraphicsItem*,int)), this, SLOT(thumbnailPageDoubleClicked(QGraphicsItem*,int)));
+        connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseClick(QGraphicsItem*, int)), this, SLOT(pageClicked(QGraphicsItem*, int)));
+
+        connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
+
+//        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentCreated(UBDocumentProxy*)), this, SLOT(addDocumentInTree(UBDocumentProxy*)));
+//        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)), this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
+
+        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneCreated(UBDocumentProxy*, int)), this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
+        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneWillBeDeleted(UBDocumentProxy*, int)), this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
+
+        mDocumentUI->thumbnailWidget->setBackgroundBrush(UBSettings::documentViewLightColor);
+
+/*disabled model sorting. We cannot use it because of lot os troubles with internal Qt implementation related QPerisstentModelIndex which becomes invalid on index move.
+        selectDocument(new UBDocumentProxy (*mBoardController->selectedDocument())); // work around with memory leak
+        UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel->sort(0);
+*/
+        #ifdef Q_WS_MACX
+            mMessageWindow = new UBMessageWindow(NULL);
+        #else
+            mMessageWindow = new UBMessageWindow(mDocumentUI->thumbnailWidget);
+        #endif
+
+        mMessageWindow->hide();
+        mDocumentUI->documentTreeWidget->hide();
+    }
+}
+
+
+QWidget* UBDocumentController::controlView()
+{
+    return mDocumentWidget;
+}
+
+
+void UBDocumentController::setupToolbar()
+{
+    UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->documentToolBar, mMainWindow->actionBoard);
+    connect(mMainWindow->actionDocumentTools, SIGNAL(triggered()), this, SLOT(toggleDocumentToolsPalette()));
+}
+
+void UBDocumentController::setupPalettes()
+{
+
+    mToolsPalette = new UBDocumentToolsPalette(controlView());
+
+    mToolsPalette->hide();
+
+    bool showToolsPalette = !mToolsPalette->isEmpty();
+    mMainWindow->actionDocumentTools->setVisible(showToolsPalette);
+
+    if (showToolsPalette)
+    {
+        mMainWindow->actionDocumentTools->trigger();
+    }
+}
+
+void UBDocumentController::show()
+{
+    selectDocument(mBoardController->selectedDocument());
+
+//    selectionChanged();
+    updateActions();
+
+    if(!mToolsPalette)
+        setupPalettes();
+}
+
+
+void UBDocumentController::hide()
+{
+    // NOOP
+}
+
+
+void UBDocumentController::openSelectedItem()
+{
+    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+    QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
+
+    if (selectedItems.count() > 0)
+    {
+        UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (selectedItems.last());
+
+        if (thumb)
+        {
+            UBDocumentProxy* proxy = thumb->proxy();
+
+            if (proxy && isOKToOpenDocument(proxy))
+            {
+                mBoardController->setActiveDocumentScene(proxy, thumb->sceneIndex());
+                UBApplication::applicationController->showBoard();
+            }
+        }
+    }
+    else
+    {
+        UBDocumentProxy* proxy = selectedDocumentProxy();
+
+        if (proxy && isOKToOpenDocument(proxy))
+        {
+            mBoardController->setActiveDocumentScene(proxy);
+            UBApplication::applicationController->showBoard();
+        }
+    }
+
+    QApplication::restoreOverrideCursor();
+}
+
+void UBDocumentController::duplicateSelectedItem()
+{
+    if (UBApplication::applicationController->displayMode() != UBApplicationController::Document)
+        return;
+
+    if (mSelectionType == Page)
+    {
+        QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
+        QList<int> selectedSceneIndexes;
+        foreach (QGraphicsItem *item, selectedItems)
+        {
+            UBSceneThumbnailPixmap *thumb = dynamic_cast<UBSceneThumbnailPixmap*>(item);
+            if (thumb)
+            {
+                UBDocumentProxy *proxy = thumb->proxy();
+
+                if (proxy)
+                {
+                    int sceneIndex = thumb->sceneIndex();
+                    selectedSceneIndexes << sceneIndex;
+                }
+            }
+        }
+        if (selectedSceneIndexes.count() > 0)
+        {
+            duplicatePages(selectedSceneIndexes);
+            emit documentThumbnailsUpdated(this);
+            selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+            UBMetadataDcSubsetAdaptor::persist(selectedDocument());
+            mDocumentUI->thumbnailWidget->selectItemAt(selectedSceneIndexes.last() + selectedSceneIndexes.size());
+        }
+    }
+    else
+    {
+        UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel;
+        QModelIndex selectedIndex = firstSelectedTreeIndex();
+
+        Q_ASSERT(!docModel->isConstant(selectedIndex) && !docModel->inTrash(selectedIndex));
+
+        //        UBDocumentProxy* source = selectedDocumentProxy();
+        //        UBDocumentGroupTreeItem* group = selectedDocumentGroupTreeItem();
+
+//        QString docName = docModel->proxyData(selectedIndex)->metaData(UBSettings::documentName).toString();
+
+        showMessage(tr("Duplicating Document %1").arg(""), true);
+
+        docModel->copyIndexToNewParent(selectedIndex, selectedIndex.parent(), UBDocumentTreeModel::aContentCopy);
+
+        //            UBDocumentProxy* duplicatedDoc = UBPersistenceManager::persistenceManager()->duplicateDocument(source);
+        //            duplicatedDoc->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+        //            UBMetadataDcSubsetAdaptor::persist(duplicatedDoc);
+
+        //            selectDocument(duplicatedDoc, false);
+
+        showMessage(tr("Document %1 copied").arg(""), false);
+    }
+}
+
+void UBDocumentController::moveDocumentToTrash(UBDocumentGroupTreeItem* groupTi, UBDocumentProxyTreeItem *proxyTi)
+{
+    int index = proxyTi->parent()->indexOfChild(proxyTi);
+    index --;
+
+    if (index >= 0)
+    {
+        if (proxyTi->proxy() == mBoardController->selectedDocument())
+        {
+            selectDocument(((UBDocumentProxyTreeItem*)proxyTi->parent()->child(index))->proxy(), true);
+        }
+        else
+            proxyTi->parent()->child(index)->setSelected(true);
+    }
+    else if (proxyTi->parent()->childCount() > 1)
+    {
+        if (proxyTi->proxy() == mBoardController->selectedDocument())
+        {
+            selectDocument(((UBDocumentProxyTreeItem*)proxyTi->parent()->child(1))->proxy(), true);
+        }
+        else
+            proxyTi->parent()->child(1)->setSelected(true);
+    }
+    else
+    {
+        if (proxyTi->proxy() == mBoardController->selectedDocument())
+        {
+            bool documentFound = false;
+            for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
+            {
+                QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
+                UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+                if (!groupItem->isTrashFolder())
+                {
+                    for(int j=0; j<groupItem->childCount(); j++)
+                    {
+                        if (((UBDocumentProxyTreeItem*)groupItem->child(j))->proxy() != mBoardController->selectedDocument())
+                        {
+                            selectDocument(((UBDocumentProxyTreeItem*)groupItem->child(0))->proxy(), true);
+                            documentFound = true;
+                            break;
+                        }
+                    }
+                }
+                if (documentFound)
+                    break;
+            }
+            if (!documentFound)
+            {
+                UBDocumentProxy *document = UBPersistenceManager::persistenceManager()->createDocument(groupTi->groupName());
+                selectDocument(document, true);
+            }
+        }
+        else
+            proxyTi->parent()->setSelected(true);
+    }
+
+    QString oldGroupName = proxyTi->proxy()->metaData(UBSettings::documentGroupName).toString();
+    proxyTi->proxy()->setMetaData(UBSettings::documentGroupName, UBSettings::trashedDocumentGroupNamePrefix + oldGroupName);
+    UBPersistenceManager::persistenceManager()->persistDocumentMetadata(proxyTi->proxy());
+
+    proxyTi->parent()->removeChild(proxyTi);
+    mTrashTi->addChild(proxyTi);
+    proxyTi->setFlags(proxyTi->flags() ^ Qt::ItemIsEditable);
+}
+
+void UBDocumentController::moveFolderToTrash(UBDocumentGroupTreeItem* groupTi)
+{
+    bool changeCurrentDocument = false;
+    for (int i = 0; i < groupTi->childCount(); i++)
+    {
+        UBDocumentProxyTreeItem* proxyTi  = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
+        if (proxyTi && proxyTi->proxy() && proxyTi->proxy() == mBoardController->selectedDocument())
+        {
+            changeCurrentDocument = true;
+            break;
+        }
+    }
+
+    QList<UBDocumentProxyTreeItem*> toBeDeleted;
+
+    for (int i = 0; i < groupTi->childCount(); i++)
+    {
+        UBDocumentProxyTreeItem* proxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
+        if (proxyTi && proxyTi->proxy())
+            toBeDeleted << proxyTi;
+    }
+
+    for (int i = 0; i < toBeDeleted.count(); i++)
+    {
+        UBDocumentProxyTreeItem* proxyTi = toBeDeleted.at(i);
+
+        showMessage(QString("Deleting %1").arg(proxyTi->proxy()->metaData(UBSettings::documentName).toString()));
+        // Move document to trash
+        QString oldGroupName = proxyTi->proxy()->metaData(UBSettings::documentGroupName).toString();
+        proxyTi->proxy()->setMetaData(UBSettings::documentGroupName, UBSettings::trashedDocumentGroupNamePrefix + oldGroupName);
+        UBPersistenceManager::persistenceManager()->persistDocumentMetadata(proxyTi->proxy());
+
+        groupTi->removeChild(proxyTi);
+        mTrashTi->addChild(proxyTi);
+        proxyTi->setFlags(proxyTi->flags() ^ Qt::ItemIsEditable);
+
+        showMessage(QString("%1 deleted").arg(groupTi->groupName()));
+    }
+
+    // dont remove default group
+    if (!groupTi->isDefaultFolder())
+    {
+        int index = mDocumentUI->documentTreeWidget->indexOfTopLevelItem(groupTi);
+
+        if (index >= 0)
+        {
+            mDocumentUI->documentTreeWidget->takeTopLevelItem(index);
+        }
+    }
+
+    if (changeCurrentDocument)
+    {
+        bool documentFound = false;
+        for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
+        {
+            QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
+            UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+            if (!groupItem->isTrashFolder() && groupItem != groupTi)
+            {
+                for(int j=0; j<groupItem->childCount(); j++)
+                {
+                    if (((UBDocumentProxyTreeItem*)groupItem->child(j))->proxy() != mBoardController->selectedDocument())
+                    {
+                        selectDocument(((UBDocumentProxyTreeItem*)groupItem->child(0))->proxy(), true);
+                        documentFound = true;
+                        break;
+                    }
+                }
+            }
+            if (documentFound)
+                break;
+        }
+        if (!documentFound)
+        {
+            UBDocumentProxy *document = UBPersistenceManager::persistenceManager()->createDocument( mDefaultDocumentGroupName );
+            selectDocument(document, true);
+        }
+    }
+
+    reloadThumbnails();
+}
+
+void UBDocumentController::deleteSelectedItem()
+{
+    UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel;
+    QModelIndex currentIndex = firstSelectedTreeIndex();
+    DeletionType deletionForSelection = deletionTypeForSelection(mSelectionType, currentIndex, docModel);
+
+    switch (static_cast<int>(deletionForSelection)) {
+    case DeletePage :
+        deletePages(mDocumentUI->thumbnailWidget->selectedItems());
+        break;
+
+    case MoveToTrash :
+        docModel->moveIndex(currentIndex, docModel->trashIndex());
+        break;
+
+    case CompleteDelete :
+        deleteIndexAndAssociatedData(currentIndex);
+        break;
+
+    case EmptyFolder :
+        if (currentIndex == docModel->myDocumentsIndex()) { //Emptying "My documents". Keeping Untitled Documents
+            int startInd = 0;
+            while (docModel->rowCount(currentIndex)) {
+                QModelIndex testSubINdecurrentIndex = docModel->index(startInd, 0, currentIndex);
+                if (testSubINdecurrentIndex == docModel->untitledDocumentsIndex()) {
+                    emptyFolder(testSubINdecurrentIndex, MoveToTrash);
+                    startInd++;
+                    continue;
+                }
+                if (!testSubINdecurrentIndex.isValid()) {
+                    break;
+                }
+                docModel->moveIndex(testSubINdecurrentIndex, docModel->trashIndex());
+            }
+        } else {
+            emptyFolder(currentIndex, MoveToTrash); //Empty constant folder
+        }
+        break;
+
+    case EmptyTrash :
+         emptyFolder(currentIndex, CompleteDelete); // Empty trahs folder
+        break;
+    }
+
+
+
+//    if (mSelectionType == Page)
+//    {
+//        QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
+//        deletePages(selectedItems);
+
+//    } else {
+
+//        UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel;
+//        QModelIndex currentIndex = firstSelectedTreeIndex();
+
+//        if (docModel->isConstant(currentIndex)) { //Constant folder
+//            if (currentIndex == docModel->myDocumentsIndex()) { //Emptying "My documents". Keeping Untitled Documents
+//                int startInd = 0;
+//                while (docModel->rowCount(currentIndex)) {
+//                    QModelIndex testSubINdecurrentIndex = docModel->index(startInd, 0, currentIndex);
+//                    if (testSubINdecurrentIndex == docModel->untitledDocumentsIndex()) {
+//                        emptyFolder(testSubINdecurrentIndex, MoveToTrash);
+//                        startInd++;
+//                        continue;
+//                    }
+//                    if (!testSubINdecurrentIndex.isValid()) {
+//                        break;
+//                    }
+//                    docModel->copyIndexToNewParent(testSubINdecurrentIndex, docModel->trashIndex());
+//                    docModel->removeRow(startInd, testSubINdecurrentIndex.parent());
+//                }
+//            } else {
+//                emptyFolder(currentIndex, MoveToTrash); //Empty constant folder
+//            }
+
+//        } else if (currentIndex == docModel->trashIndex()) { //Trash folder
+//            emptyFolder(currentIndex, CompleteDelete); // Empty trahs folder
+
+//        } else if (!docModel->inTrash(currentIndex)) { //Within trash
+//            docModel->copyIndexToNewParent(currentIndex, docModel->trashIndex());
+//            docModel->removeRow(currentIndex.row(), currentIndex.parent());
+
+//        } else {
+//            deleteIndexAndAssociatedData(currentIndex);
+//        }
+
+
+//        if (docModel->isDocument(currentIndex))
+//        {
+//            UBDocumentProxy *docProxy = docModel->proxyData(currentIndex);
+//            if (!docProxy) {
+//                return;
+//            }
+
+//            if( UBApplication::mainWindow->yesNoQuestion(tr("Remove Document")
+//                                                         , tr("Are you sure you want to remove the document '%1'?")
+//                                                         .arg(docProxy->metaData(UBSettings::documentName).toString()))) {
+//                if (!docModel->inTrash(currentIndex)) {
+
+////                    moveDocumentToTrash(groupTi, proxyTi);
+
+//                } else {
+//                    // We have to physically delete document
+//                    proxyTi->parent()->removeChild(proxyTi);
+//                    UBPersistenceManager::persistenceManager()->deleteDocument(proxyTi->proxy());
+
+//                    if (mTrashTi->childCount()==0)
+//                        selectDocument(NULL);
+//                    else
+//                        selectDocument(((UBDocumentProxyTreeItem*)mTrashTi->child(0))->proxy());
+//                    reloadThumbnails();
+//                }
+//            }
+
+//        } else if (groupTi) {
+
+//            if (groupTi == mTrashTi) {
+//                if(UBApplication::mainWindow->yesNoQuestion(tr("Empty Trash"), tr("Are you sure you want to empty trash?"))) {
+//                    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+//                    QList<UBDocumentProxyTreeItem*> toBeDeleted;
+
+//                    for (int i = 0; i < groupTi->childCount(); i++) {
+//                        UBDocumentProxyTreeItem* proxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
+//                        if (proxyTi && proxyTi->proxy())
+//                            toBeDeleted << proxyTi;
+//                    }
+
+//                    showMessage(tr("Emptying trash"));
+
+//                    for (int i = 0; i < toBeDeleted.count(); i++) {
+//                        UBDocumentProxyTreeItem* proxyTi = toBeDeleted.at(i);
+
+//                        proxyTi->parent()->removeChild(proxyTi);
+//                        UBPersistenceManager::persistenceManager()->deleteDocument(proxyTi->proxy());
+//                    }
+
+//                    showMessage(tr("Emptied trash"));
+
+//                    QApplication::restoreOverrideCursor();
+//                    mMainWindow->actionDelete->setEnabled(false);
+//                }
+
+//            } else {
+//                if(UBApplication::mainWindow->yesNoQuestion(tr("Remove Folder")
+//                                                            , tr("Are you sure you want to remove the folder '%1' and all its content?")
+//                                                            .arg(groupTi->groupName()))) {
+//                    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+//                    moveFolderToTrash(groupTi);
+//                    QApplication::restoreOverrideCursor();
+//                }
+//            }
+//        }
+//    }
+}
+
+void UBDocumentController::emptyFolder(const QModelIndex &index, DeletionType pDeletionType)
+{
+    UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel;
+    if (!docModel->isCatalog(index)) {
+        return;
+    }
+    while (docModel->rowCount(index)) {
+        QModelIndex subIndex = docModel->index(0, 0, index);
+        switch (static_cast<int>(pDeletionType)) {
+        case MoveToTrash :
+            docModel->moveIndex(subIndex, docModel->trashIndex());
+            break;
+
+        case CompleteDelete :
+            deleteIndexAndAssociatedData(subIndex);
+            break;
+        }
+    }
+}
+
+void UBDocumentController::deleteIndexAndAssociatedData(const QModelIndex &pIndex)
+{
+    UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel;
+    while (docModel->rowCount(pIndex)) {
+        QModelIndex subIndex = docModel->index(0, 0, pIndex);
+        deleteIndexAndAssociatedData(subIndex);
+    }
+
+    if (docModel->isDocument(pIndex)) {
+        UBDocumentProxy *proxyData = docModel->proxyData(pIndex);
+        if (proxyData) {
+            UBPersistenceManager::persistenceManager()->deleteDocument(proxyData);
+        }
+    }
+    docModel->removeRow(pIndex.row(), pIndex.parent());
+}
+
+
+void UBDocumentController::exportDocument()
+{
+    QAction *currentExportAction = qobject_cast<QAction *>(sender());
+    QVariant actionData = currentExportAction->data();
+    UBExportAdaptor* selectedExportAdaptor = UBDocumentManager::documentManager()->supportedExportAdaptors()[actionData.toInt()];
+
+//    UBDocumentProxy* proxy = selectedDocumentProxy();
+    UBDocumentProxy* proxy = firstSelectedTreeProxy();
+
+//    if (proxy)
+//    {
+        selectedExportAdaptor->persist(proxy);
+        emit exportDone();
+//    }
+//    else
+//    {
+//       showMessage(tr("No document selected!"));
+//    }
+}
+
+void UBDocumentController::exportDocumentSet()
+{
+
+}
+
+void UBDocumentController::documentZoomSliderValueChanged (int value)
+{
+    mDocumentUI->thumbnailWidget->setThumbnailWidth(value);
+
+    UBSettings::settings()->documentThumbnailWidth->set(value);
+}
+
+void UBDocumentController::itemChanged(QTreeWidgetItem * item, int column)
+{
+    UBDocumentProxyTreeItem* proxyItem = dynamic_cast<UBDocumentProxyTreeItem*>(item);
+
+    disconnect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*))
+            , this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
+
+    if (proxyItem)
+    {
+        if (proxyItem->proxy()->metaData(UBSettings::documentName).toString() != item->text(column))
+        {
+            proxyItem->proxy()->setMetaData(UBSettings::documentName, item->text(column));
+            UBPersistenceManager::persistenceManager()->persistDocumentMetadata(proxyItem->proxy());
+        }
+    }
+    else
+    {
+        // it is a group
+        UBDocumentGroupTreeItem* editedGroup = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+        if (editedGroup)
+        {
+            for (int i = 0; i < item->childCount(); i++)
+            {
+                UBDocumentProxyTreeItem* childItem = dynamic_cast<UBDocumentProxyTreeItem*>(item->child(i));
+
+                if (childItem)
+                {
+                    QString groupName;
+                    if (0 != (item->flags() & Qt::ItemIsEditable))
+                    {
+                        childItem->proxy()->setMetaData(UBSettings::documentGroupName, item->text(column));
+                        UBPersistenceManager::persistenceManager()->persistDocumentMetadata(childItem->proxy());
+                    }
+                }
+            }
+        }
+    }
+
+    connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)),
+            this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
+}
+
+
+void UBDocumentController::importFile()
+{
+//    UBDocumentGroupTreeItem* group = selectedDocumentGroupTreeItem();
+    UBDocumentManager *docManager = UBDocumentManager::documentManager();
+
+    QString defaultPath = UBSettings::settings()->lastImportFilePath->get().toString();
+    QString filePath = QFileDialog::getOpenFileName(mParentWidget, tr("Open Supported File"),
+                                                    defaultPath, docManager->importFileFilter());
+
+    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+    QApplication::processEvents();
+    QFileInfo fileInfo(filePath);
+
+    if (fileInfo.suffix().toLower() == "ubx") {
+        UBPersistenceManager::persistenceManager()->createDocumentProxiesStructure(docManager->importUbx(filePath, UBSettings::userDocumentDirectory()), true);
+
+    } else {
+        UBSettings::settings()->lastImportFilePath->set(QVariant(fileInfo.absolutePath()));
+
+        if (filePath.length() > 0)
+        {
+            UBDocumentProxy* createdDocument = 0;
+            QApplication::processEvents();
+            QFile selectedFile(filePath);
+
+            QString groupName = UBPersistenceManager::myDocumentsName;
+
+//            if (groupName == mDefaultDocumentGroupName || fileInfo.suffix() != "ubz")
+                groupName = "";
+
+            showMessage(tr("Importing file %1...").arg(fileInfo.baseName()), true);
+
+            createdDocument = docManager->importFile(selectedFile, groupName);
+
+
+            if (createdDocument) {
+                selectDocument(createdDocument, true);
+
+            } else {
+                showMessage(tr("Failed to import file ... "));
+            }
+        }
+    }
+
+    QApplication::restoreOverrideCursor();
+
+}
+
+void UBDocumentController::addFolderOfImages()
+{
+    UBDocumentProxy* document = selectedDocumentProxy();
+
+    if (document)
+    {
+        QString defaultPath = UBSettings::settings()->lastImportFolderPath->get().toString();
+
+        QString imagesDir = QFileDialog::getExistingDirectory(mParentWidget, tr("Import all Images from Folder"), defaultPath);
+        QDir parentImageDir(imagesDir);
+        parentImageDir.cdUp();
+
+        UBSettings::settings()->lastImportFolderPath->set(QVariant(parentImageDir.absolutePath()));
+
+        if (imagesDir.length() > 0)
+        {
+            QDir dir(imagesDir);
+
+            int importedImageNumber
+                  = UBDocumentManager::documentManager()->addImageDirToDocument(dir, document);
+
+            if (importedImageNumber == 0)
+            {
+                showMessage(tr("Folder does not contain any image files"));
+                UBApplication::applicationController->showDocument();
+            }
+            else
+            {
+                document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+                UBMetadataDcSubsetAdaptor::persist(document);
+                reloadThumbnails();
+            }
+        }
+    }
+}
+
+
+void UBDocumentController::addFileToDocument()
+{
+    UBDocumentProxy* document = selectedDocumentProxy();
+
+    if (document)
+    {
+         addFileToDocument(document);
+         reloadThumbnails();
+    }
+}
+
+
+bool UBDocumentController::addFileToDocument(UBDocumentProxy* document)
+{
+    QString defaultPath = UBSettings::settings()->lastImportFilePath->get().toString();
+    QString filePath = QFileDialog::getOpenFileName(mParentWidget, tr("Open Supported File"), defaultPath, UBDocumentManager::documentManager()->importFileFilter());
+
+    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+    QApplication::processEvents();
+
+    QFileInfo fileInfo(filePath);
+    UBSettings::settings()->lastImportFilePath->set(QVariant(fileInfo.absolutePath()));
+
+    bool success = false;
+
+    if (filePath.length() > 0)
+    {
+        QApplication::processEvents(); // NOTE: We performed this just a few lines before. Is it really necessary to do it again here??
+        QFile selectedFile(filePath);
+
+        showMessage(tr("Importing file %1...").arg(fileInfo.baseName()), true);
+
+        QStringList fileNames;
+        fileNames << filePath;
+        success = UBDocumentManager::documentManager()->addFilesToDocument(document, fileNames);
+
+        if (success)
+        {
+            document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+            UBMetadataDcSubsetAdaptor::persist(document);
+        }
+        else
+        {
+            showMessage(tr("Failed to import file ... "));
+        }
+    }
+
+    QApplication::restoreOverrideCursor();
+
+    return success;
+}
+
+
+void UBDocumentController::moveSceneToIndex(UBDocumentProxy* proxy, int source, int target)
+{
+    if (UBDocumentContainer::movePageToIndex(source, target))
+    {
+        proxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+        UBMetadataDcSubsetAdaptor::persist(proxy);
+
+        mDocumentUI->thumbnailWidget->hightlightItem(target);
+    }
+}
+
+
+void UBDocumentController::thumbnailViewResized()
+{
+    int maxWidth = qMin(UBSettings::maxThumbnailWidth, mDocumentUI->thumbnailWidget->width());
+
+    mDocumentUI->documentZoomSlider->setMaximum(maxWidth);
+}
+
+
+void UBDocumentController::pageSelectionChanged()
+{
+    if (mIsClosing)
+        return;
+
+    bool pageSelected = mDocumentUI->thumbnailWidget->selectedItems().count() > 0;
+
+    if (pageSelected)
+        itemSelectionChanged(Page);
+    else
+        itemSelectionChanged(None);
+
+    updateActions();
+}
+
+
+void UBDocumentController::selectionChanged()
+{
+    if (mIsClosing)
+        return;
+
+    int pageCount = -1;
+
+    UBDocumentProxyTreeItem* proxyTi = selectedDocumentProxyTreeItem();
+
+    if (proxyTi && proxyTi->proxy())
+        pageCount = proxyTi->proxy()->pageCount();
+
+    bool pageSelected = (mSelectionType == Page);
+    bool groupSelected = (mSelectionType == Folder);
+    bool docSelected = (mSelectionType == Document);
+
+    bool trashSelected = false;
+    if (groupSelected && selectedDocumentGroupTreeItem())
+        trashSelected = selectedDocumentGroupTreeItem()->isTrashFolder();
+
+    if ((docSelected || pageSelected) && proxyTi)
+        trashSelected = dynamic_cast<UBDocumentGroupTreeItem*>(proxyTi->parent())->isTrashFolder();
+
+    bool defaultGroupSelected = false;
+    if (groupSelected && selectedDocumentGroupTreeItem())
+        defaultGroupSelected = selectedDocumentGroupTreeItem()->isDefaultFolder();
+
+    mMainWindow->actionNewDocument->setEnabled((groupSelected || docSelected || pageSelected) && !trashSelected);
+    mMainWindow->actionExport->setEnabled((docSelected || pageSelected) && !trashSelected);
+    bool firstSceneSelected = false;
+    if(docSelected)
+        mMainWindow->actionDuplicate->setEnabled(!trashSelected);
+    else if(pageSelected){
+        QList<QGraphicsItem*> selection = mDocumentUI->thumbnailWidget->selectedItems();
+        if(pageCount == 1)
+            mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(0)));
+        else{
+            for(int i = 0; i < selection.count() && !firstSceneSelected; i += 1){
+                if(dynamic_cast<UBSceneThumbnailPixmap*>(selection.at(i))->sceneIndex() == 0){
+                    mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(0)));
+                    firstSceneSelected = true;
+                }
+            }
+            if(!firstSceneSelected)
+                mMainWindow->actionDuplicate->setEnabled(!trashSelected);
+        }
+    }
+    else
+        mMainWindow->actionDuplicate->setEnabled(false);
+
+
+    bool isAModel = dynamic_cast<UBDocumentGroupTreeItem*>(proxyTi->parent())->groupName() == UBPersistenceManager::modelsName;
+    mMainWindow->actionOpen->setEnabled((docSelected || pageSelected) && !trashSelected && !isAModel);
+    mMainWindow->actionRename->setEnabled((groupSelected || docSelected) && !trashSelected && !defaultGroupSelected);
+
+    mMainWindow->actionAddToWorkingDocument->setEnabled(pageSelected
+            && !(selectedDocumentProxy() == mBoardController->selectedDocument()) && !trashSelected);
+
+    bool deleteEnabled = false;
+    if (trashSelected)
+    {
+        if (docSelected)
+            deleteEnabled = true;
+        else if (groupSelected && selectedDocumentGroupTreeItem())
+        {
+            if (selectedDocumentGroupTreeItem()->childCount() > 0)
+                deleteEnabled = true;
+        }
+    }
+    else
+    {
+        deleteEnabled = groupSelected || docSelected || pageSelected;
+    }
+
+    if (pageSelected && (pageCount == mDocumentUI->thumbnailWidget->selectedItems().count()))
+    {
+        deleteEnabled = false;
+    }
+
+    if(pageSelected && firstSceneSelected)
+        deleteEnabled = false;
+
+    mMainWindow->actionDelete->setEnabled(deleteEnabled);
+
+    if (trashSelected)
+    {
+        if (docSelected)
+        {
+            mMainWindow->actionDelete->setIcon(QIcon(":/images/toolbar/deleteDocument.png"));
+            mMainWindow->actionDelete->setText(tr("Delete"));
+        }
+        else
+        {
+            mMainWindow->actionDelete->setIcon(QIcon(":/images/trash.png"));
+            mMainWindow->actionDelete->setText(tr("Empty"));
+        }
+    }
+    else
+    {
+        mMainWindow->actionDelete->setIcon(QIcon(":/images/trash.png"));
+        mMainWindow->actionDelete->setText(tr("Trash"));
+    }
+
+    mMainWindow->actionDocumentAdd->setEnabled((docSelected || pageSelected) && !trashSelected);
+    mMainWindow->actionImport->setEnabled(!trashSelected);
+
+}
+
+
+void UBDocumentController::documentSceneChanged(UBDocumentProxy* proxy, int pSceneIndex)
+{
+    Q_UNUSED(pSceneIndex);
+
+    if (proxy == selectedDocumentProxy())
+    {
+        reloadThumbnails();
+    }
+    TreeViewSelectionChanged(firstSelectedTreeIndex(), QModelIndex());
+}
+
+
+void UBDocumentController::pageDoubleClicked(QGraphicsItem* item, int index)
+{
+    Q_UNUSED(item);
+    Q_UNUSED(index);
+
+    bool pageSelected = (mSelectionType == Page);
+    bool groupSelected = (mSelectionType == Folder);
+    bool docSelected = (mSelectionType == Document);
+
+    bool trashSelected = false;
+    if (groupSelected && selectedDocumentGroupTreeItem())
+        trashSelected = selectedDocumentGroupTreeItem()->isTrashFolder();
+    UBDocumentProxyTreeItem* proxyTi = selectedDocumentProxyTreeItem();
+    if ((docSelected || pageSelected) && proxyTi)
+        trashSelected = dynamic_cast<UBDocumentGroupTreeItem*>(proxyTi->parent())->isTrashFolder();
+    if (trashSelected) return;
+
+    openSelectedItem();
+}
+
+void UBDocumentController::thumbnailPageDoubleClicked(QGraphicsItem* item, int index)
+{
+    UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel;
+    QModelIndex selectedIndex = firstSelectedTreeIndex();
+
+    if (selectedIndex.isValid()) {
+        if (docModel->inModel(selectedIndex)) {
+            UBApplication::showMessage(tr("The model documents are not editable. Copy it to \"My documents\" to be able to work with"));
+            return;
+        } else if (docModel->inTrash(selectedIndex)) {
+            return;
+        }
+    }
+
+    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+    UBSceneThumbnailPixmap* thumb = qgraphicsitem_cast<UBSceneThumbnailPixmap*> (item);
+
+    if (thumb) {
+        UBDocumentProxy* proxy = thumb->proxy();
+        if (proxy && isOKToOpenDocument(proxy)) {
+            mBoardController->setActiveDocumentScene(proxy, index);
+            UBApplication::applicationController->showBoard();
+        }
+    }
+
+    QApplication::restoreOverrideCursor();
+}
+
+
+void UBDocumentController::pageClicked(QGraphicsItem* item, int index)
+{
+    Q_UNUSED(item);
+    Q_UNUSED(index);
+
+//    selectionChanged();
+
+    pageSelectionChanged();
+}
+
+
+void UBDocumentController::closing()
+{
+    mIsClosing = true;
+
+    QStringList emptyGroups;
+
+    for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
+    {
+        QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
+
+        if (item->childCount() == 0)
+        {
+            UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+            if (groupItem)
+            {
+                QString groupName = groupItem->groupName();
+                if (!emptyGroups.contains(groupName) && groupName != mDocumentTrashGroupName)
+                    emptyGroups << groupName;
+            }
+        }
+    }
+
+    UBSettings::settings()->setValue("Document/EmptyGroupNames", emptyGroups);
+
+    UBPersistenceManager::persistenceManager()->closing();
+}
+
+void UBDocumentController::addToDocument()
+{
+    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+    QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
+
+    if (selectedItems.count() > 0)
+    {
+        int oldActiveSceneIndex = mBoardController->activeSceneIndex();
+
+        QList<QPair<UBDocumentProxy*, int> > pageInfoList;
+
+        foreach (QGraphicsItem* item, selectedItems)
+        {
+            UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (item);
+
+            if (thumb &&  thumb->proxy())
+            {
+                QPair<UBDocumentProxy*, int> pageInfo(thumb->proxy(), thumb->sceneIndex());
+                pageInfoList << pageInfo;
+            }
+        }
+
+        for (int i = 0; i < pageInfoList.length(); i++)
+        {
+            mBoardController->addScene(pageInfoList.at(i).first, pageInfoList.at(i).second, false);
+        }
+
+        int newActiveSceneIndex = selectedItems.count() == mBoardController->selectedDocument()->pageCount() ? 0 : oldActiveSceneIndex + 1;
+        mDocumentUI->thumbnailWidget->selectItemAt(newActiveSceneIndex, false);
+        selectDocument(mBoardController->selectedDocument());
+        mBoardController->selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+        UBMetadataDcSubsetAdaptor::persist(mBoardController->selectedDocument());
+        mBoardController->reloadThumbnails();
+
+        UBApplication::boardController->documentNavigator()->generateThumbnails(this);
+        UBApplication::applicationController->showBoard();
+
+        mBoardController->setActiveDocumentScene(newActiveSceneIndex);
+    }
+
+    QApplication::restoreOverrideCursor();
+}
+
+
+void UBDocumentController::addDocumentInTree(UBDocumentProxy* pDocument)
+{
+    QString documentName = pDocument->name();
+    QString documentGroup = pDocument->groupName();
+    if (documentGroup.isEmpty())
+    {
+        documentGroup = mDefaultDocumentGroupName;
+    }
+    UBDocumentGroupTreeItem* group = 0;
+    if (documentGroup.startsWith(UBSettings::trashedDocumentGroupNamePrefix))
+    {
+        group = mTrashTi;
+    }
+    else
+    {
+        for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
+        {
+            QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
+            UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+            if (groupItem->groupName() == documentGroup)
+            {
+                group = groupItem;
+                break;
+            }
+        }
+    }
+
+    if (group == 0)
+    {
+        group = new UBDocumentGroupTreeItem(0); // deleted by the tree widget
+        group->setGroupName(documentGroup);
+        mDocumentUI->documentTreeWidget->addTopLevelItem(group);
+    }
+
+    UBDocumentProxyTreeItem *ti = new UBDocumentProxyTreeItem(group, pDocument, !group->isTrashFolder());
+    ti->setText(0, documentName);
+}
+
+
+void UBDocumentController::updateDocumentInTree(UBDocumentProxy* pDocument)
+{
+    QTreeWidgetItemIterator it(mDocumentUI->documentTreeWidget);
+    while (*it)
+    {
+        UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>((*it));
+
+        if (pi && pi->proxy() == pDocument)
+        {
+            pi->setText(0, pDocument->name());
+            break;
+        }
+        ++it;
+    }
+
+}
+
+
+QStringList UBDocumentController::allGroupNames()
+{
+    QStringList result;
+
+    for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
+    {
+        QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
+        UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+        result << groupItem->groupName();
+    }
+
+    return result;
+}
+
+
+void UBDocumentController::renameSelectedItem()
+{
+    QModelIndex selectedIndex = firstSelectedTreeIndex();
+    if (selectedIndex.isValid()) {
+        mDocumentUI->documentTreeView->edit(selectedIndex);
+    }
+}
+
+
+bool UBDocumentController::isOKToOpenDocument(UBDocumentProxy* proxy)
+{
+    //check version
+    QString docVersion = proxy->metaData(UBSettings::documentVersion).toString();
+
+    if (docVersion.isEmpty() || docVersion.startsWith("4.1") || docVersion.startsWith("4.2")
+            || docVersion.startsWith("4.3") || docVersion.startsWith("4.4") || docVersion.startsWith("4.5")
+            || docVersion.startsWith("4.6")) // TODO UB 4.7 update if necessary
+    {
+        return true;
+    }
+    else
+    {
+        if (UBApplication::mainWindow->yesNoQuestion(tr("Open Document"),
+                tr("The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?")
+                    .arg(proxy->metaData(UBSettings::documentName).toString())
+                    .arg(docVersion)))
+        {
+            return true;
+        }
+        else
+        {
+            return false;
+        }
+    }
+}
+
+
+void UBDocumentController::showMessage(const QString& message, bool showSpinningWheel)
+{
+    if (mMessageWindow)
+    {
+        int margin = UBSettings::boardMargin;
+
+        QRect newSize = mDocumentUI->thumbnailWidget->geometry();
+
+        #ifdef Q_WS_MACX
+            QPoint point(newSize.left() + margin, newSize.bottom() - mMessageWindow->height() - margin);
+            mMessageWindow->move(mDocumentUI->thumbnailWidget->mapToGlobal(point));
+        #else
+            mMessageWindow->move(margin, newSize.height() - mMessageWindow->height() - margin);
+        #endif
+
+        mMessageWindow->showMessage(message, showSpinningWheel);
+    }
+}
+
+
+void UBDocumentController::hideMessage()
+{
+    if (mMessageWindow)
+        mMessageWindow->hideMessage();
+}
+
+
+void UBDocumentController::addImages()
+{
+    UBDocumentProxy* document = selectedDocumentProxy();
+
+    if (document)
+    {
+        QString defaultPath = UBSettings::settings()->lastImportFolderPath->get().toString();
+
+        QString extensions;
+
+        foreach (QString ext, UBSettings::settings()->imageFileExtensions)
+        {
+            extensions += " *.";
+            extensions += ext;
+        }
+
+        QStringList images = QFileDialog::getOpenFileNames(mParentWidget, tr("Add all Images to Document"),
+                defaultPath, tr("All Images (%1)").arg(extensions));
+
+        if (images.length() > 0)
+        {
+            QFileInfo firstImage(images.at(0));
+
+            UBSettings::settings()->lastImportFolderPath->set(QVariant(firstImage.absoluteDir().absolutePath()));
+
+            int importedImageNumber
+                = UBDocumentManager::documentManager()->addFilesToDocument(document, images);
+
+            if (importedImageNumber == 0)
+            {
+                UBApplication::showMessage(tr("Selection does not contain any image files!"));
+                UBApplication::applicationController->showDocument();
+            }
+            else
+            {
+                document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+                UBMetadataDcSubsetAdaptor::persist(document);
+                reloadThumbnails();
+            }
+        }
+    }
+}
+
+void UBDocumentController::toggleDocumentToolsPalette()
+{
+    if (!mToolsPalette->isVisible() && !mToolsPalettePositionned)
+    {
+        mToolsPalette->adjustSizeAndPosition();
+        int left = controlView()->width() - 20 - mToolsPalette->width();
+        int top = (controlView()->height() - mToolsPalette->height()) / 2;
+
+        mToolsPalette->setCustomPosition(true);
+        mToolsPalette->move(left, top);
+
+        mToolsPalettePositionned = true;
+    }
+
+    bool visible = mToolsPalette->isVisible();
+    mToolsPalette->setVisible(!visible);
+}
+
+
+void UBDocumentController::cut()
+{
+    // TODO - implemented me
+}
+
+
+void UBDocumentController::copy()
+{
+    // TODO - implemented me
+}
+
+
+void UBDocumentController::paste()
+{
+    // TODO - implemented me
+}
+
+
+void UBDocumentController::focusChanged(QWidget *old, QWidget *current)
+{
+    Q_UNUSED(old);
+    UBDocumentTreeModel *treeModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel;
+
+    if (current == mDocumentUI->thumbnailWidget)
+    {
+        if (mDocumentUI->thumbnailWidget->selectedItems().count() > 0)
+            mSelectionType = Page;
+        else
+            mSelectionType = None;
+    }
+    else if (current == mDocumentUI->documentTreeView)
+    {
+        if (treeModel->isDocument(firstSelectedTreeIndex()))
+            mSelectionType = Document;
+        else if (treeModel->isCatalog(firstSelectedTreeIndex()))
+            mSelectionType = Folder;
+        else
+            mSelectionType = None;
+    }
+    else if (current == mDocumentUI->documentZoomSlider)
+    {
+        if (mDocumentUI->thumbnailWidget->selectedItems().count() > 0)
+            mSelectionType = Page;
+        else
+            mSelectionType = None;
+    }
+    else
+    {
+        if (old != mDocumentUI->thumbnailWidget &&
+            old != mDocumentUI->documentTreeView &&
+            old != mDocumentUI->documentZoomSlider)
+        {
+            mSelectionType = None;
+        }
+    }
+
+//    selectionChanged();
+//    updateActions();
+}
+
+void UBDocumentController::updateActions()
+{
+    if (mIsClosing)
+        return;
+
+    UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel;
+
+    QModelIndex selectedIndex = firstSelectedTreeIndex();
+    UBDocumentProxy *selectedProxy = docModel->proxyData(selectedIndex);
+    int pageCount = -1;
+    if (selectedProxy) {
+        pageCount = selectedProxy->pageCount();
+    }
+
+    bool pageSelected = false;
+    bool groupSelected = false;
+    bool docSelected = false;
+
+    if (mSelectionType == Page) {
+        pageSelected = true;
+    } else {
+        if (docModel->isDocument(firstSelectedTreeIndex())) {
+            docSelected = true;
+        } else if (docModel->isCatalog(firstSelectedTreeIndex())) {
+            groupSelected = true;
+        }
+    }
+
+    bool trashSelected = docModel->inTrash(selectedIndex) || selectedIndex == docModel->trashIndex()  ? true : false;
+    bool modelSelected = docModel->inModel(selectedIndex) || selectedIndex == docModel->modelsIndex() ? true : false;
+
+    mMainWindow->actionNewDocument->setEnabled(docModel->newNodeAllowed(selectedIndex) && !modelSelected);
+    mMainWindow->actionNewFolder->setEnabled(docModel->newNodeAllowed(selectedIndex));
+    mMainWindow->actionExport->setEnabled((docSelected || pageSelected || groupSelected) && !trashSelected);
+    updateExportSubActions(selectedIndex);
+
+    bool firstSceneSelected = false;
+
+    if (docSelected) {
+        mMainWindow->actionDuplicate->setEnabled(!trashSelected && !modelSelected);
+
+    } else if (pageSelected) {
+        QList<QGraphicsItem*> selection = mDocumentUI->thumbnailWidget->selectedItems();
+        if(pageCount == 1) {
+            mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(0)));
+
+        } else {
+            for (int i = 0; i < selection.count() && !firstSceneSelected; i += 1) {
+                if (qgraphicsitem_cast<UBSceneThumbnailPixmap*>(selection.at(i))->sceneIndex() == 0) {
+                    mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(0)));
+                    firstSceneSelected = true;
+                    break;
+                }
+            }
+            if (!firstSceneSelected) {
+                mMainWindow->actionDuplicate->setEnabled(!trashSelected);
+            }
+        }
+
+    } else {
+        mMainWindow->actionDuplicate->setEnabled(false);
+    }
+
+    mMainWindow->actionOpen->setEnabled((docSelected || pageSelected) && !trashSelected && !modelSelected);
+    mMainWindow->actionRename->setEnabled(docModel->isOkToRename(selectedIndex));
+
+    mMainWindow->actionAddToWorkingDocument->setEnabled(pageSelected
+            && !(selectedProxy == mBoardController->selectedDocument()) && !trashSelected);
+
+    DeletionType deletionForSelection = deletionTypeForSelection(mSelectionType, selectedIndex, docModel);
+    mMainWindow->actionDelete->setEnabled(deletionForSelection != NoDeletion);
+
+    switch (static_cast<int>(deletionForSelection)) {
+    case MoveToTrash :
+    case DeletePage :
+        mMainWindow->actionDelete->setIcon(QIcon(":/images/trash.png"));
+        mMainWindow->actionDelete->setText(tr("Trash"));
+        break;
+    case CompleteDelete :
+        mMainWindow->actionDelete->setIcon(QIcon(":/images/toolbar/deleteDocument.png"));
+        mMainWindow->actionDelete->setText(tr("Delete"));
+        break;
+    case EmptyFolder :
+        mMainWindow->actionDelete->setIcon(QIcon(":/images/trash.png"));
+        mMainWindow->actionDelete->setText(tr("Empty"));
+        break;
+    case EmptyTrash :
+        mMainWindow->actionDelete->setIcon(QIcon(":/images/toolbar/deleteDocument.png"));
+        mMainWindow->actionDelete->setText(tr("Empty"));
+        break;
+    }
+
+    mMainWindow->actionDocumentAdd->setEnabled((docSelected || pageSelected) && !trashSelected && !modelSelected);
+    mMainWindow->actionImport->setEnabled(!trashSelected);
+
+}
+
+void UBDocumentController::updateExportSubActions(const QModelIndex &selectedIndex)
+{
+    UBDocumentManager *documentManager = UBDocumentManager::documentManager();
+    for (int i = 0; i < documentManager->supportedExportAdaptors().length(); i++)
+    {
+        UBExportAdaptor* adaptor = documentManager->supportedExportAdaptors()[i];
+        if (adaptor->associatedAction()) {
+            adaptor->associatedAction()->setEnabled(adaptor->associatedActionactionAvailableFor(selectedIndex));
+        }
+    }
+}
+
+void UBDocumentController::currentIndexMoved(const QModelIndex &newIndex, const QModelIndex &PreviousIndex)
+{
+    Q_UNUSED(newIndex);
+    Q_UNUSED(PreviousIndex);
+
+    UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel;
+    UBDocumentProxy *newProxy = docModel->proxyData(newIndex);
+    if (newProxy) {
+        UBDocumentProxy *cp = new UBDocumentProxy(*newProxy); // we cannot use newProxy because it will be destroyed later
+        pureSetDocument(cp);
+        mBoardController->pureSetDocument(cp);
+        mBoardController->pureSetDocument(newProxy);
+    }
+    mCurrentIndexMoved = true;
+}
+
+void UBDocumentController::deletePages(QList<QGraphicsItem *> itemsToDelete)
+{
+    if (itemsToDelete.count() > 0)
+    {
+        QList<int> sceneIndexes;
+        UBDocumentProxy* proxy = 0;
+
+        foreach (QGraphicsItem* item, itemsToDelete)
+        {
+            UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (item);
+
+            if (thumb)
+            {
+                proxy = thumb->proxy();
+                if (proxy)
+                {
+                    sceneIndexes.append(thumb->sceneIndex());
+                }
+
+            }
+        }
+
+        if(UBApplication::mainWindow->yesNoQuestion(tr("Remove Page"),tr("This is an irreversible action!") +"\n\n" + tr("Are you sure you want to remove %n page(s) from the selected document '%1'?", "", sceneIndexes.count()).arg(proxy->metaData(UBSettings::documentName).toString())))
+        {
+//            UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel;
+//            if (docModel->proxyData(docModel->currentIndex()) == proxy) {
+
+//                int offset = 0;
+//                foreach(int index, sceneIndexes)
+//                {
+////                    if (UBPersistenceManager::persistenceManager()->isSceneInCached(proxy, index)) {
+//                        mBoardController->regenerateThumbnails();
+////                    }
+////                    mBoardController->deletePages(sceneIndexes);
+
+//                    deleteThumbPage(index - offset);
+//                    offset++;
+//                }
+
+//                emit UBDocumentContainer::documentThumbnailsUpdated(this);
+
+//            } else {
+                UBDocumentContainer::deletePages(sceneIndexes);
+                mBoardController->regenerateThumbnails();
+
+//            }
+
+
+            proxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+            UBMetadataDcSubsetAdaptor::persist(proxy);
+
+            int minIndex = proxy->pageCount() - 1;
+            foreach (int i, sceneIndexes)
+                 minIndex = qMin(i, minIndex);
+
+            mDocumentUI->thumbnailWidget->selectItemAt(minIndex);
+        }
+    }
+}
+
+int UBDocumentController::getSelectedItemIndex()
+{
+    QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
+
+    if (selectedItems.count() > 0)
+    {
+        UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (selectedItems.last());
+        return thumb->sceneIndex();
+    }
+    else return -1;
+}
+
+bool UBDocumentController::pageCanBeMovedUp(int page)
+{
+    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
+        return page >= 2;
+    else
+        return page >= 1;
+}
+
+bool UBDocumentController::pageCanBeMovedDown(int page)
+{
+    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
+        return page != 0 && page < selectedDocument()->pageCount() - 1;
+    else
+        return page < selectedDocument()->pageCount() - 1;
+}
+
+bool UBDocumentController::pageCanBeDuplicated(int page)
+{
+    return page != 0;
+}
+
+bool UBDocumentController::pageCanBeDeleted(int page)
+{
+    return page != 0;
+}
+
+void UBDocumentController::setDocument(UBDocumentProxy *document, bool forceReload)
+{
+    UBDocumentContainer::setDocument(document, forceReload);
+//    UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel->setCurrentDocument(document);
+}
+
+QModelIndex UBDocumentController::firstSelectedTreeIndex()
+{
+    return selectedTreeIndexes().count() ? selectedTreeIndexes().first() : QModelIndex();
+}
+
+UBDocumentController::DeletionType
+UBDocumentController::deletionTypeForSelection(LastSelectedElementType pTypeSelection
+                                               , const QModelIndex &selectedIndex
+                                               , UBDocumentTreeModel *docModel) const
+{
+    if (pTypeSelection == Page) {
+        if (!firstSceneSelected()) {
+            return DeletePage;
+        }
+    } else if (docModel->isConstant(selectedIndex)) {
+        if (selectedIndex == docModel->trashIndex()) {
+            return EmptyTrash;
+        }
+        return EmptyFolder;
+    } else if (pTypeSelection != None) {
+        if (docModel->inTrash(selectedIndex)) {
+            return CompleteDelete;
+        } else {
+            return MoveToTrash;
+        }
+    }
+
+    return NoDeletion;
+}
+
+bool UBDocumentController::firstSceneSelected() const
+{
+    bool firstSceneSelected = false;
+    QList<QGraphicsItem*> selection = mDocumentUI->thumbnailWidget->selectedItems();
+    for(int i = 0; i < selection.count() && !firstSceneSelected; i += 1){
+        if(dynamic_cast<UBSceneThumbnailPixmap*>(selection.at(i))->sceneIndex() == 0){
+            firstSceneSelected = true;
+        }
+    }
+
+    return firstSceneSelected;
+}
+
+void UBDocumentController::refreshDocumentThumbnailsView(UBDocumentContainer*)
+{
+    UBDocumentTreeModel *docModel = UBPersistenceManager::persistenceManager()->mDocumentTreeStructureModel;
+    UBDocumentProxy *currentDocumentProxy = selectedDocument();
+
+    QModelIndex current = docModel->indexForProxy(currentDocumentProxy);
+
+    if (!current.isValid()) {
+        mDocumentUI->thumbnailWidget->setGraphicsItems(QList<QGraphicsItem*>()
+                                                       , QList<QUrl>()
+                                                       , QStringList()
+                                                       , UBApplication::mimeTypeUniboardPage);
+        return;
+    }
+
+    QList<const QPixmap*> thumbs;
+
+    if (currentDocumentProxy)
+    {
+        UBThumbnailAdaptor::load(currentDocumentProxy, thumbs);
+        qDebug() << "document proxy taken" << currentDocumentProxy->name();
+    }
+
+    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+    QList<QGraphicsItem*> items;
+    QList<QUrl> itemsPath;
+
+    QGraphicsPixmapItem *selection = 0;
+
+    QStringList labels;
+
+    if (currentDocumentProxy)
+    {
+        for (int i = 0; i < currentDocumentProxy->pageCount(); i++)
+        {
+            const QPixmap* pix = thumbs.at(i);
+            QGraphicsPixmapItem *pixmapItem = new UBSceneThumbnailPixmap(*pix, currentDocumentProxy, i); // deleted by the tree widget
+
+            if (currentDocumentProxy == mBoardController->selectedDocument() && mBoardController->activeSceneIndex() == i)
+            {
+                selection = pixmapItem;
+            }
+
+            items << pixmapItem;
+            int pageIndex = pageFromSceneIndex(i);
+            if(pageIndex)
+                labels << tr("Page %1").arg(pageIndex);
+            else
+                labels << tr("Title page");
+
+            itemsPath.append(QUrl::fromLocalFile(currentDocumentProxy->persistencePath() + QString("/pages/%1").arg(UBDocumentContainer::pageFromSceneIndex(i))));
+        }
+    }
+
+    mDocumentUI->thumbnailWidget->setGraphicsItems(items, itemsPath, labels, UBApplication::mimeTypeUniboardPage);
+
+    if (docModel->inTrash(current) || docModel->inModel(current)) {
+        mDocumentUI->thumbnailWidget->setDragEnabled(false);
+    } else {
+        mDocumentUI->thumbnailWidget->setDragEnabled(true);
+    }
+
+    mDocumentUI->thumbnailWidget->ensureVisible(0, 0, 10, 10);
+
+    if (selection) {
+        disconnect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
+        UBSceneThumbnailPixmap *currentScene = dynamic_cast<UBSceneThumbnailPixmap*>(selection);
+        if (currentScene)
+            mDocumentUI->thumbnailWidget->hightlightItem(currentScene->sceneIndex());
+        connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
+    }
+
+    QApplication::restoreOverrideCursor();
+}
diff --git a/Sankore-3.1/src/document/UBDocumentController.h b/Sankore-3.1/src/document/UBDocumentController.h
index 0adc46c..3b52061 100644
--- a/Sankore-3.1/src/document/UBDocumentController.h
+++ b/Sankore-3.1/src/document/UBDocumentController.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,136 +18,420 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBDOCUMENTCONTROLLER_H_
-#define UBDOCUMENTCONTROLLER_H_
-
-#include <QtGui>
-#include "document/UBDocumentContainer.h"
-
-namespace Ui
-{
-    class documents;
-}
-
-#include "gui/UBMessageWindow.h"
-
-class UBGraphicsScene;
-class QDialog;
-class UBDocumentProxy;
-class UBBoardController;
-class UBThumbnailsScene;
-class UBDocumentGroupTreeItem;
-class UBDocumentProxyTreeItem;
-class UBMainWindow;
-class UBDocumentToolsPalette;
-
-class UBDocumentController : public UBDocumentContainer
-{
-    Q_OBJECT;
-
-    public:
-        UBDocumentController(UBMainWindow* mainWindow);
-        virtual ~UBDocumentController();
-
-        void closing();
-        QWidget* controlView();
-        UBDocumentProxyTreeItem* findDocument(UBDocumentProxy* proxy);
-        bool addFileToDocument(UBDocumentProxy* document);
-        void deletePages(QList<QGraphicsItem*> itemsToDelete);
-        int getSelectedItemIndex();
-
-        bool pageCanBeMovedUp(int page);
-        bool pageCanBeMovedDown(int page);
-        bool pageCanBeDuplicated(int page);
-        bool pageCanBeDeleted(int page);
-        QString documentTrashGroupName(){ return mDocumentTrashGroupName;}
-        QString defaultDocumentGroupName(){ return mDefaultDocumentGroupName;}
-
-    signals:
-        void exportDone();
-
-    public slots:
-        void createNewDocument();
-        void createNewDocumentGroup();
-        void deleteSelectedItem();
-        void renameSelectedItem();
-        void openSelectedItem();
-        void duplicateSelectedItem();
-        void importFile();
-        void moveSceneToIndex(UBDocumentProxy* proxy, int source, int target);
-        void selectDocument(UBDocumentProxy* proxy, bool setAsCurrentDocument = true);
-        void show();
-        void hide();
-        void showMessage(const QString& message, bool showSpinningWheel = false);
-        void hideMessage();
-        void toggleDocumentToolsPalette();
-        void cut();
-        void copy();
-        void paste();
-        void focusChanged(QWidget *old, QWidget *current);
-
-    protected:
-        virtual void setupViews();
-        virtual void setupToolbar();
-        void setupPalettes();
-        bool isOKToOpenDocument(UBDocumentProxy* proxy);
-        UBDocumentProxy* selectedDocumentProxy();
-        UBDocumentProxyTreeItem* selectedDocumentProxyTreeItem();
-        UBDocumentGroupTreeItem* selectedDocumentGroupTreeItem();
-        QStringList allGroupNames();
-
-        enum LastSelectedElementType
-        {
-            None = 0, Folder, Document, Page
-        };
-
-        LastSelectedElementType mSelectionType;
-
-    private:
-        QWidget *mParentWidget;
-        UBBoardController *mBoardController;
-        Ui::documents* mDocumentUI;
-        UBMainWindow* mMainWindow;
-        QWidget *mDocumentWidget;
-        QPointer<UBMessageWindow> mMessageWindow;
-        QAction* mAddFolderOfImagesAction;
-        QAction* mAddFileToDocumentAction;
-        QAction* mAddImagesAction;
-        bool mIsClosing;
-        UBDocumentToolsPalette *mToolsPalette;
-        bool mToolsPalettePositionned;
-        UBDocumentGroupTreeItem* mTrashTi;
-
-        void moveDocumentToTrash(UBDocumentGroupTreeItem* groupTi, UBDocumentProxyTreeItem *proxyTi);
-        void moveFolderToTrash(UBDocumentGroupTreeItem* groupTi);
-        QString mDocumentTrashGroupName;
-        QString mDefaultDocumentGroupName;
-
-    private slots:
-        void documentZoomSliderValueChanged (int value);
-        void loadDocumentProxies();
-        void itemSelectionChanged();
-        void exportDocument();
-        void itemChanged(QTreeWidgetItem * item, int column);
-        void thumbnailViewResized();
-        void pageSelectionChanged();
-        void selectionChanged();
-        void documentSceneChanged(UBDocumentProxy* proxy, int pSceneIndex);
-        void pageDoubleClicked(QGraphicsItem* item, int index);
-        void pageClicked(QGraphicsItem* item, int index);
-        void itemClicked(QTreeWidgetItem * item, int column );
-        void addToDocument();
-        void addDocumentInTree(UBDocumentProxy* pDocument);
-        void updateDocumentInTree(UBDocumentProxy* pDocument);
-        void addFolderOfImages();
-        void addFileToDocument();
-        void addImages();
-
-        void refreshDocumentThumbnailsView(UBDocumentContainer* source);
-};
-
-
-
-#endif /* UBDOCUMENTCONTROLLER_H_ */
+
+
+
+#ifndef UBDOCUMENTCONTROLLER_H_
+#define UBDOCUMENTCONTROLLER_H_
+
+#include <QtGui>
+#include "document/UBDocumentContainer.h"
+#include "core/UBApplicationController.h"
+#include "core/UBApplication.h"
+
+namespace Ui
+{
+    class documents;
+}
+
+#include "gui/UBMessageWindow.h"
+
+class UBGraphicsScene;
+class QDialog;
+class UBDocumentProxy;
+class UBBoardController;
+class UBThumbnailsScene;
+class UBDocumentGroupTreeItem;
+class UBDocumentProxyTreeItem;
+class UBMainWindow;
+class UBDocumentToolsPalette;
+
+
+class UBDocumentReplaceDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    UBDocumentReplaceDialog(const QString &pIncommingName, const QStringList &pFileList, QWidget *parent = 0, Qt::WindowFlags pFlags = 0);
+    void setRegexp(const QRegExp pRegExp);
+    bool validString(const QString &pStr);
+    void setFileNameAndList(const QString &fileName, const QStringList &pLst);
+    QString  labelTextWithName(const QString &documentName) const;
+    QString lineEditText() const {return mLineEdit->text();}
+
+signals:
+    void createNewFolder(QString str);
+    void closeDialog();
+
+private slots:
+    void accept();
+    void reject();
+
+    void reactOnTextChanged(const QString &pStr);
+
+private:
+    QLineEdit *mLineEdit;
+    QRegExpValidator *mValidator;
+    QStringList mFileNameList;
+    QString mIncommingName;
+    QPushButton *acceptButton;
+    const QString acceptText;
+    const QString replaceText;
+    const QString cancelText;
+    QLabel *mLabelText;
+};
+
+
+class UBDocumentTreeNode
+{
+public:
+    friend class UBDocumentTreeModel;
+
+    enum Type {
+        Catalog = 0
+        , Document
+    };
+
+    UBDocumentTreeNode(Type pType, const QString &pName, const QString &pDisplayName = QString(), UBDocumentProxy *pProxy = 0);
+    UBDocumentTreeNode() : mType(Catalog), mParent(0), mProxy(0) {;}
+    ~UBDocumentTreeNode();
+
+    QList<UBDocumentTreeNode*> children() const {return mChildren;}
+    UBDocumentTreeNode *parentNode() {return mParent;}
+    Type nodeType() const {return mType;}
+    QString nodeName() const {return mName;}
+    QString displayName() const {return mDisplayName;}
+    void setNodeName(const QString &str) {mName = str; mDisplayName = str;}
+    void addChild(UBDocumentTreeNode *pChild);
+    void insertChild(int pIndex, UBDocumentTreeNode *pChild);
+    void removeChild(int index);
+    UBDocumentProxy *proxyData() const {return mProxy;}
+    bool isRoot() {return !mParent;}
+    bool isTopLevel() {return mParent && !mParent->mParent;}
+    UBDocumentTreeNode *clone();
+    QString dirPathInHierarchy();
+
+private:
+    Type mType;
+    QString mName;
+    QString mDisplayName;
+    UBDocumentTreeNode *mParent;
+    QList<UBDocumentTreeNode*> mChildren;
+    QPointer<UBDocumentProxy> mProxy;
+};
+Q_DECLARE_METATYPE(UBDocumentTreeNode*)
+
+class UBDocumentTreeModel : public QAbstractItemModel {
+    Q_OBJECT
+
+public:
+    enum eAncestors {
+        aMyDocuments
+        , aUntitledDocuments
+        , aModel
+        , aTrash
+    };
+
+    enum eCopyMode {
+        aReference
+        , aContentCopy
+    };
+
+    enum eAddItemMode {
+        aEnd = 0          //Add to the end of the children list
+        , aDetectPosition //Detect the appropriate position (sorting)
+    };
+
+    UBDocumentTreeModel(QObject *parent = 0);
+    ~UBDocumentTreeModel();
+
+    QModelIndex index(int row, int column, const QModelIndex &parent) const;
+    QModelIndex parent(const QModelIndex &child) const;
+
+    int rowCount(const QModelIndex &parent) const;
+    int columnCount(const QModelIndex &parent) const;
+    QVariant data(const QModelIndex &index, int role) const;
+    bool setData(const QModelIndex &index, const QVariant &value, int role);
+    Qt::ItemFlags flags ( const QModelIndex & index ) const;
+    Qt::DropActions supportedDropActions() const {return Qt::MoveAction | Qt::CopyAction;}
+    QStringList mimeTypes() const;
+    QMimeData *mimeData (const QModelIndexList &indexes) const;
+    bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent);
+    bool removeRows(int row, int count, const QModelIndex &parent);
+
+    QModelIndex indexForNode(UBDocumentTreeNode *pNode) const;
+    QPersistentModelIndex persistentIndexForNode(UBDocumentTreeNode *pNode);
+//    bool insertRow(int row, const QModelIndex &parent);
+
+    QPersistentModelIndex copyIndexToNewParent(const QModelIndex &source, const QModelIndex &newParent, eCopyMode pMode = aReference);
+    void moveIndex(const QModelIndex &source, const QModelIndex &newParent);
+    void moveNode(const QModelIndex &source, const QModelIndex &newParent);
+    UBDocumentTreeNode *currentNode() const {return mCurrentNode;} //work around for sorting model.
+    void setCurrentNode(UBDocumentTreeNode *pNode) {mCurrentNode = pNode;}
+    QModelIndex currentIndex() {return indexForNode(mCurrentNode);} //index representing a current document
+    QModelIndex indexForProxy(UBDocumentProxy *pSearch) const;
+    void setCurrentDocument(UBDocumentProxy *pDocument);
+    void setRootNode(UBDocumentTreeNode *pRoot);
+    UBDocumentTreeNode *rootNode() const {return mRootNode;}
+    UBDocumentProxy *proxyForIndex(const QModelIndex &pIndex) const;
+    QString virtualDirForIndex(const QModelIndex &pIndex) const;
+    QString virtualPathForIndex(const QModelIndex &pIndex) const;
+    QStringList nodeNameList(const QModelIndex &pIndex) const;
+    bool newNodeAllowed(const QModelIndex &pSelectedIndex)  const;
+    QModelIndex goTo(const QString &dir);
+    bool inTrash(const QModelIndex &index) const;
+    bool inModel(const QModelIndex &index) const;
+    bool inUntitledDocuments(const QModelIndex &index) const;
+    bool isCatalog(const QModelIndex &index) const {return nodeFromIndex(index)->nodeType() == UBDocumentTreeNode::Catalog;}
+    bool isDocument(const QModelIndex &index) const {return nodeFromIndex(index)->nodeType() == UBDocumentTreeNode::Document;}
+    bool isToplevel(const QModelIndex &index) const {return nodeFromIndex(index) ? nodeFromIndex(index)->isTopLevel() : false;}
+    bool isConstant(const QModelIndex &index) const {return isToplevel(index) || (index == mUntitledDocuments);}
+    bool isOkToRename(const QModelIndex &index) const {return flags(index) & Qt::ItemIsEditable;}
+    UBDocumentProxy *proxyData(const QModelIndex &index) const {return nodeFromIndex(index)->proxyData();}
+    void addDocument(UBDocumentProxy *pProxyData, const QModelIndex &pParent = QModelIndex());
+    void addNewDocument(UBDocumentProxy *pProxyData, const QModelIndex &pParent = QModelIndex());
+    void addCatalog(const QString &pName, const QModelIndex &pParent);
+    QList<UBDocumentProxy*> newDocuments() {return mNewDocuments;}
+    void markDocumentAsNew(UBDocumentProxy *pDoc) {if (indexForProxy(pDoc).isValid()) mNewDocuments << pDoc;}
+    void setNewName(const QModelIndex &index, const QString &newName);
+    QString adjustNameForParentIndex(const QString &pName, const QModelIndex &pIndex);
+
+    QPersistentModelIndex myDocumentsIndex() const {return mMyDocuments;}
+    QPersistentModelIndex modelsIndex() const {return mModels;}
+    QPersistentModelIndex trashIndex() const {return mTrash;}
+    QPersistentModelIndex untitledDocumentsIndex() const {return mUntitledDocuments;}
+    UBDocumentTreeNode *nodeFromIndex(const QModelIndex &pIndex) const;
+    virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
+    void sortChilds(const QModelIndex &parentIndex);
+    void sortIndexes(QList<UBDocumentTreeNode *> &unsortedIndexList);
+    static bool nodeLessThan(const UBDocumentTreeNode *firstIndex, const UBDocumentTreeNode *secondIndex);
+    void setHighLighted(const QModelIndex &newHighLighted) {mHighLighted = newHighLighted;}
+    QModelIndex highLighted() {return mHighLighted;}
+
+signals:
+    void indexChanged(const QModelIndex &newIndex, const QModelIndex &oldIndex);
+    void currentIndexMoved(const QModelIndex &newIndex, const QModelIndex &previous); /* Be aware that when you got the signal
+                                                                                       "previous" index would have allready been deleted.
+                                                                                        check it for "valid" first */
+
+private:
+    UBDocumentTreeNode *mRootNode;
+    UBDocumentTreeNode *mCurrentNode;
+
+    UBDocumentTreeNode *findProxy(UBDocumentProxy *pSearch, UBDocumentTreeNode *pParent) const;
+    QModelIndex pIndexForNode(const QModelIndex &parent, UBDocumentTreeNode *pNode) const;
+    bool isDescendantOf(const QModelIndex &pPossibleDescendant, const QModelIndex &pPossibleAncestor) const;
+    QModelIndex addNode(UBDocumentTreeNode *pFreeNode, const QModelIndex &pParent, eAddItemMode pMode = aDetectPosition);
+    int positionForParent(UBDocumentTreeNode *pFreeNode, UBDocumentTreeNode *pParentNode);
+    QPersistentModelIndex mRoot;
+    QPersistentModelIndex mMyDocuments;
+    QPersistentModelIndex mModels;
+    QPersistentModelIndex mTrash;
+    QPersistentModelIndex mUntitledDocuments;
+    QList<UBDocumentProxy*> mNewDocuments;
+    QModelIndex mHighLighted;
+
+};
+
+class UBDocumentTreeMimeData : public QMimeData
+{
+    Q_OBJECT
+
+    public:
+        QList<QModelIndex> indexes() const {return mIndexes;}
+        void setIndexes (const QList<QModelIndex> &pIndexes) {mIndexes = pIndexes;}
+
+    private:
+        QList<QModelIndex> mIndexes;
+};
+
+class UBDocumentTreeView : public QTreeView
+{
+    Q_OBJECT
+
+public:
+    UBDocumentTreeView (QWidget *parent = 0);
+
+public slots:
+    void setSelectedAndExpanded(const QModelIndex &pIndex, bool pExpand = true);
+    void onModelIndexChanged(const QModelIndex &pNewIndex, const QModelIndex &pOldIndex);
+    void hSliderRangeChanged(int min, int max);
+    void adjustSize();
+
+protected:
+    void dragEnterEvent(QDragEnterEvent *event);
+    void dragLeaveEvent(QDragLeaveEvent *event);
+    void dragMoveEvent(QDragMoveEvent *event);
+    void dropEvent(QDropEvent *event);
+    void paintEvent(QPaintEvent *event);
+
+
+    UBDocumentTreeModel *fullModel() {return qobject_cast<UBDocumentTreeModel*>(model());}
+    void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end);
+
+private:
+    bool isAcceptable(const QModelIndex &dragIndex, const QModelIndex &atIndex);
+    Qt::DropAction acceptableAction(const QModelIndex &dragIndex, const QModelIndex &atIndex);
+    void updateIndexEnvirons(const QModelIndex &index);
+};
+
+class UBDocumentTreeItemDelegate : public QStyledItemDelegate
+{
+    Q_OBJECT
+
+public:
+    UBDocumentTreeItemDelegate(QObject *parent = 0);
+
+private slots:
+    void commitAndCloseEditor();
+    void processChangedText(const QString &str) const;
+    bool validateString(const QString &str) const;
+
+protected:
+    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
+    void setEditorData(QWidget *editor, const QModelIndex &index) const;
+    void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
+    void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex &index) const;
+
+private:
+    mutable QStringList mExistingFileNames;
+};
+
+class UBDocumentController : public UBDocumentContainer
+{
+    Q_OBJECT
+
+    public:
+
+    enum DeletionType {
+        MoveToTrash = 0
+        , CompleteDelete
+        , EmptyFolder
+        , EmptyTrash
+        , DeletePage
+        , NoDeletion
+    };
+
+    enum LastSelectedElementType
+    {
+        None = 0, Folder, Document, Page
+    };
+
+        UBDocumentController(UBMainWindow* mainWindow);
+        virtual ~UBDocumentController();
+
+        void closing();
+        QWidget* controlView();
+        UBDocumentProxyTreeItem* findDocument(UBDocumentProxy* proxy);
+        bool addFileToDocument(UBDocumentProxy* document);
+        void deletePages(QList<QGraphicsItem*> itemsToDelete);
+        int getSelectedItemIndex();
+
+        bool pageCanBeMovedUp(int page);
+        bool pageCanBeMovedDown(int page);
+        bool pageCanBeDuplicated(int page);
+        bool pageCanBeDeleted(int page);
+        QString documentTrashGroupName(){ return mDocumentTrashGroupName;}
+        QString defaultDocumentGroupName(){ return mDefaultDocumentGroupName;}
+
+        void setDocument(UBDocumentProxy *document, bool forceReload = false);
+        QModelIndex firstSelectedTreeIndex();
+        UBDocumentProxy *firstSelectedTreeProxy();
+        inline DeletionType deletionTypeForSelection(LastSelectedElementType pTypeSelection
+                                                     , const QModelIndex &selectedIndex
+                                                     , UBDocumentTreeModel *docModel) const;
+        bool firstSceneSelected() const;
+        QWidget *mainWidget() const {return mDocumentWidget;}
+
+    signals:
+        void exportDone();
+
+    public slots:
+        void createNewDocument();
+        void createNewDocumentGroup();
+        void deleteSelectedItem();
+        void emptyFolder(const QModelIndex &index, DeletionType pDeletionType = MoveToTrash);
+        void deleteIndexAndAssociatedData(const QModelIndex &pIndex);
+        void renameSelectedItem();
+        void openSelectedItem();
+        void duplicateSelectedItem();
+        void importFile();
+        void moveSceneToIndex(UBDocumentProxy* proxy, int source, int target);
+        void selectDocument(UBDocumentProxy* proxy, bool setAsCurrentDocument = true);
+        void show();
+        void hide();
+        void showMessage(const QString& message, bool showSpinningWheel = false);
+        void hideMessage();
+        void toggleDocumentToolsPalette();
+        void cut();
+        void copy();
+        void paste();
+        void focusChanged(QWidget *old, QWidget *current);
+        void updateActions();
+        void updateExportSubActions(const QModelIndex &selectedIndex);
+        void currentIndexMoved(const QModelIndex &newIndex, const QModelIndex &PreviousIndex);
+
+protected:
+        virtual void setupViews();
+        virtual void setupToolbar();
+        void setupPalettes();
+        bool isOKToOpenDocument(UBDocumentProxy* proxy);
+        UBDocumentProxy* selectedDocumentProxy();
+        QList<UBDocumentProxy*> selectedProxies();
+        QModelIndexList selectedTreeIndexes();
+        UBDocumentProxyTreeItem* selectedDocumentProxyTreeItem();
+        UBDocumentGroupTreeItem* selectedDocumentGroupTreeItem();
+        QStringList allGroupNames();
+
+        LastSelectedElementType mSelectionType;
+
+    private:
+        QWidget *mParentWidget;
+        UBBoardController *mBoardController;
+        Ui::documents* mDocumentUI;
+        UBMainWindow* mMainWindow;
+        QWidget *mDocumentWidget;
+        QPointer<UBMessageWindow> mMessageWindow;
+        QAction* mAddFolderOfImagesAction;
+        QAction* mAddFileToDocumentAction;
+        QAction* mAddImagesAction;
+        bool mIsClosing;
+        UBDocumentToolsPalette *mToolsPalette;
+        bool mToolsPalettePositionned;
+        UBDocumentGroupTreeItem* mTrashTi;
+
+        void moveDocumentToTrash(UBDocumentGroupTreeItem* groupTi, UBDocumentProxyTreeItem *proxyTi);
+        void moveFolderToTrash(UBDocumentGroupTreeItem* groupTi);
+        QString mDocumentTrashGroupName;
+        QString mDefaultDocumentGroupName;
+
+        UBDocumentProxy *mCurrentTreeDocument;
+        bool mCurrentIndexMoved;
+
+    private slots:
+        void documentZoomSliderValueChanged (int value);
+        void TreeViewSelectionChanged(const QModelIndex &current, const QModelIndex &previous);
+        void TreeViewSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
+        void itemSelectionChanged(LastSelectedElementType newSelection);
+        void exportDocument();
+        void exportDocumentSet();
+        void itemChanged(QTreeWidgetItem * item, int column);
+        void thumbnailViewResized();
+        void pageSelectionChanged();
+        void selectionChanged();
+        void documentSceneChanged(UBDocumentProxy* proxy, int pSceneIndex);
+        void pageDoubleClicked(QGraphicsItem* item, int index);
+        void thumbnailPageDoubleClicked(QGraphicsItem* item, int index);
+        void pageClicked(QGraphicsItem* item, int index);
+        void addToDocument();
+        void addDocumentInTree(UBDocumentProxy* pDocument);
+        void updateDocumentInTree(UBDocumentProxy* pDocument);
+        void addFolderOfImages();
+        void addFileToDocument();
+        void addImages();
+        void refreshDocumentThumbnailsView(UBDocumentContainer* source);
+};
+
+
+
+#endif /* UBDOCUMENTCONTROLLER_H_ */
diff --git a/Sankore-3.1/src/document/UBDocumentProxy.cpp b/Sankore-3.1/src/document/UBDocumentProxy.cpp
index 82f95df..a716c0a 100644
--- a/Sankore-3.1/src/document/UBDocumentProxy.cpp
+++ b/Sankore-3.1/src/document/UBDocumentProxy.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,222 +18,235 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBDocumentProxy.h"
-
-#include "frameworks/UBStringUtils.h"
-
-#include "core/UBApplication.h"
-#include "core/UBPersistenceManager.h"
-#include "core/UBSettings.h"
-#include "core/UBDocumentManager.h"
-
-#include "core/memcheck.h"
-
-UBDocumentProxy::UBDocumentProxy()
-    : mPageCount(0)
-{
-    init();
-}
-
-
-UBDocumentProxy::UBDocumentProxy(const QString& pPersistancePath)
-    : mPageCount(0)
-{
-    init();
-    setPersistencePath(pPersistancePath);
-}
-
-
-void UBDocumentProxy::init()
-{
-    setMetaData(UBSettings::documentGroupName, "");
-
-    QDateTime now = QDateTime::currentDateTime();
-    setMetaData(UBSettings::documentName, now.toString(Qt::SystemLocaleShortDate));
-
-    setUuid(QUuid::createUuid());
-
-    setDefaultDocumentSize(UBSettings::settings()->pageSize->get().toSize());
-
-    //teacherGuide metadata
-    setMetaData(UBSettings::sessionTitle,"");
-    setMetaData(UBSettings::sessionAuthors,"");
-    setMetaData(UBSettings::sessionObjectives,"");
-    setMetaData(UBSettings::sessionKeywords,"");
-    setMetaData(UBSettings::sessionGradeLevel,"");
-    setMetaData(UBSettings::sessionSubjects,"");
-    setMetaData(UBSettings::sessionType,"");
-    setMetaData(UBSettings::sessionLicence,"");
-}
-
-
-UBDocumentProxy::~UBDocumentProxy()
-{
-    // NOOP
-}
-
-
-int UBDocumentProxy::pageCount()
-{
-    return mPageCount;
-}
-
-
-void UBDocumentProxy::setPageCount(int pPageCount)
-{
-    mPageCount = pPageCount;
-}
-
-
-int UBDocumentProxy::incPageCount()
-{
-    if (mPageCount <= 0)
-    {
-        mPageCount = 1;
-    }
-    else
-    {
-        mPageCount++;
-    }
-
-    return mPageCount;
-
-}
-
-
-int UBDocumentProxy::decPageCount()
-{
-    mPageCount --;
-
-    if (mPageCount < 0)
-    {
-        mPageCount = 0;
-    }
-
-    return mPageCount;
-}
-
-QString UBDocumentProxy::persistencePath() const
-{
-    return mPersistencePath;
-}
-
-void UBDocumentProxy::setPersistencePath(const QString& pPersistencePath)
-{
-    if (pPersistencePath != mPersistencePath)
-    {
-        mIsModified = true;
-        mPersistencePath = pPersistencePath;
-    }
-}
-
-void UBDocumentProxy::setMetaData(const QString& pKey, const QVariant& pValue)
-{
-    if (mMetaDatas.contains(pKey) && mMetaDatas.value(pKey) == pValue)
-        return;
-    else
-    {
-        mIsModified = true;
-        mMetaDatas.insert(pKey, pValue);
-        if (pKey == UBSettings::documentUpdatedAt)
-        {
-            UBDocumentManager *documentManager = UBDocumentManager::documentManager();
-            if (documentManager)
-                documentManager->emitDocumentUpdated(this);
-        }
-    }
-}
-
-QVariant UBDocumentProxy::metaData(const QString& pKey) const
-{
-    if (mMetaDatas.contains(pKey))
-    {
-        return mMetaDatas.value(pKey);
-    }
-    else
-    {
-        qDebug() << "Unknown metadata key" << pKey;
-        return QString(""); // failsafe
-    }
-}
-
-QHash<QString, QVariant> UBDocumentProxy::metaDatas() const
-{
-    return mMetaDatas;
-}
-
-QString UBDocumentProxy::name() const
-{
-    return metaData(UBSettings::documentName).toString();
-}
-
-QString UBDocumentProxy::groupName() const
-{
-    return metaData(UBSettings::documentGroupName).toString();
-}
-
-QSize UBDocumentProxy::defaultDocumentSize() const
-{
-    if (mMetaDatas.contains(UBSettings::documentSize))
-        return metaData(UBSettings::documentSize).toSize();
-    else
-        return UBSettings::settings()->pageSize->get().toSize();
-}
-
-void UBDocumentProxy::setDefaultDocumentSize(QSize pSize)
-{
-    if (defaultDocumentSize() != pSize)
-    {
-        setMetaData(UBSettings::documentSize, QVariant(pSize));
-        emit defaultDocumentSizeChanged();
-
-        mIsModified = true;
-    }
-}
-
-void UBDocumentProxy::setDefaultDocumentSize(int pWidth, int pHeight)
-{
-    setDefaultDocumentSize(QSize(pWidth, pHeight));
-}
-
-
-QUuid UBDocumentProxy::uuid() const
-{
-    QString id = metaData(UBSettings::documentIdentifer).toString();
-    QString sUuid = id.replace(UBSettings::uniboardDocumentNamespaceUri + "/", "");
-
-    return QUuid(sUuid);
-}
-
-void UBDocumentProxy::setUuid(const QUuid& uuid)
-{
-    setMetaData(UBSettings::documentIdentifer,
-            UBSettings::uniboardDocumentNamespaceUri + "/" + UBStringUtils::toCanonicalUuid(uuid));
-}
-
-
-QDateTime UBDocumentProxy::documentDate()
-{
-    if(mMetaDatas.contains(UBSettings::documentDate))
-        return UBStringUtils::fromUtcIsoDate(metaData(UBSettings::documentDate).toString());
-    return QDateTime::currentDateTime();
-}
-
-QDateTime UBDocumentProxy::lastUpdate()
-{
-    if(mMetaDatas.contains(UBSettings::documentUpdatedAt))
-        return UBStringUtils::fromUtcIsoDate(metaData(UBSettings::documentUpdatedAt).toString());
-    return QDateTime().currentDateTime();
-}
-
-bool UBDocumentProxy::isModified() const
-{
-    return mIsModified;
-}
-
-
-
-
-
+
+
+
+#include "UBDocumentProxy.h"
+
+#include "frameworks/UBStringUtils.h"
+
+#include "core/UBApplication.h"
+#include "core/UBPersistenceManager.h"
+#include "core/UBSettings.h"
+#include "core/UBDocumentManager.h"
+
+#include "core/memcheck.h"
+
+UBDocumentProxy::UBDocumentProxy()
+    : mPageCount(0)
+{
+    init();
+}
+
+UBDocumentProxy::UBDocumentProxy(const UBDocumentProxy &rValue) :
+    QObject()
+{
+    mPersistencePath = rValue.mPersistencePath;
+    mMetaDatas = rValue.mMetaDatas;
+    mIsModified = rValue.mIsModified;
+    mPageCount = rValue.mPageCount;
+}
+
+UBDocumentProxy::UBDocumentProxy(const QString& pPersistancePath)
+    : mPageCount(0)
+{
+    init();
+    setPersistencePath(pPersistancePath);
+}
+
+bool UBDocumentProxy::theSameDocument(UBDocumentProxy *proxy)
+{
+    return  proxy && mPersistencePath == proxy->mPersistencePath;
+}
+
+void UBDocumentProxy::init()
+{
+    setMetaData(UBSettings::documentGroupName, "");
+
+    QDateTime now = QDateTime::currentDateTime();
+    setMetaData(UBSettings::documentName, now.toString(Qt::SystemLocaleShortDate));
+
+    setUuid(QUuid::createUuid());
+
+    setDefaultDocumentSize(UBSettings::settings()->pageSize->get().toSize());
+
+    //teacherGuide metadata
+    setMetaData(UBSettings::sessionTitle,"");
+    setMetaData(UBSettings::sessionAuthors,"");
+    setMetaData(UBSettings::sessionObjectives,"");
+    setMetaData(UBSettings::sessionKeywords,"");
+    setMetaData(UBSettings::sessionGradeLevel,"");
+    setMetaData(UBSettings::sessionSubjects,"");
+    setMetaData(UBSettings::sessionType,"");
+    setMetaData(UBSettings::sessionLicence,"");
+}
+
+
+UBDocumentProxy::~UBDocumentProxy()
+{
+    // NOOP
+}
+
+
+int UBDocumentProxy::pageCount()
+{
+    return mPageCount;
+}
+
+
+void UBDocumentProxy::setPageCount(int pPageCount)
+{
+    mPageCount = pPageCount;
+}
+
+
+int UBDocumentProxy::incPageCount()
+{
+    if (mPageCount <= 0)
+    {
+        mPageCount = 1;
+    }
+    else
+    {
+        mPageCount++;
+    }
+
+    return mPageCount;
+
+}
+
+
+int UBDocumentProxy::decPageCount()
+{
+    mPageCount --;
+
+    if (mPageCount < 0)
+    {
+        mPageCount = 0;
+    }
+
+    return mPageCount;
+}
+
+QString UBDocumentProxy::persistencePath() const
+{
+    return mPersistencePath;
+}
+
+void UBDocumentProxy::setPersistencePath(const QString& pPersistencePath)
+{
+    if (pPersistencePath != mPersistencePath)
+    {
+        mIsModified = true;
+        mPersistencePath = pPersistencePath;
+    }
+}
+
+void UBDocumentProxy::setMetaData(const QString& pKey, const QVariant& pValue)
+{
+    if (mMetaDatas.contains(pKey) && mMetaDatas.value(pKey) == pValue)
+        return;
+    else
+    {
+        mIsModified = true;
+        mMetaDatas.insert(pKey, pValue);
+        if (pKey == UBSettings::documentUpdatedAt)
+        {
+            UBDocumentManager *documentManager = UBDocumentManager::documentManager();
+            if (documentManager)
+                documentManager->emitDocumentUpdated(this);
+        }
+    }
+}
+
+QVariant UBDocumentProxy::metaData(const QString& pKey) const
+{
+    if (mMetaDatas.contains(pKey))
+    {
+        return mMetaDatas.value(pKey);
+    }
+    else
+    {
+        qDebug() << "Unknown metadata key" << pKey;
+        return QString(""); // failsafe
+    }
+}
+
+QHash<QString, QVariant> UBDocumentProxy::metaDatas() const
+{
+    return mMetaDatas;
+}
+
+QString UBDocumentProxy::name() const
+{
+    return metaData(UBSettings::documentName).toString();
+}
+
+QString UBDocumentProxy::groupName() const
+{
+    return metaData(UBSettings::documentGroupName).toString();
+}
+
+QSize UBDocumentProxy::defaultDocumentSize() const
+{
+    if (mMetaDatas.contains(UBSettings::documentSize))
+        return metaData(UBSettings::documentSize).toSize();
+    else
+        return UBSettings::settings()->pageSize->get().toSize();
+}
+
+void UBDocumentProxy::setDefaultDocumentSize(QSize pSize)
+{
+    if (defaultDocumentSize() != pSize)
+    {
+        setMetaData(UBSettings::documentSize, QVariant(pSize));
+        emit defaultDocumentSizeChanged();
+
+        mIsModified = true;
+    }
+}
+
+void UBDocumentProxy::setDefaultDocumentSize(int pWidth, int pHeight)
+{
+    setDefaultDocumentSize(QSize(pWidth, pHeight));
+}
+
+
+QUuid UBDocumentProxy::uuid() const
+{
+    QString id = metaData(UBSettings::documentIdentifer).toString();
+    QString sUuid = id.replace(UBSettings::uniboardDocumentNamespaceUri + "/", "");
+
+    return QUuid(sUuid);
+}
+
+void UBDocumentProxy::setUuid(const QUuid& uuid)
+{
+    setMetaData(UBSettings::documentIdentifer,
+            UBSettings::uniboardDocumentNamespaceUri + "/" + UBStringUtils::toCanonicalUuid(uuid));
+}
+
+
+QDateTime UBDocumentProxy::documentDate()
+{
+    if(mMetaDatas.contains(UBSettings::documentDate))
+        return UBStringUtils::fromUtcIsoDate(metaData(UBSettings::documentDate).toString());
+    return QDateTime::currentDateTime();
+}
+
+QDateTime UBDocumentProxy::lastUpdate()
+{
+    if(mMetaDatas.contains(UBSettings::documentUpdatedAt))
+        return UBStringUtils::fromUtcIsoDate(metaData(UBSettings::documentUpdatedAt).toString());
+    return QDateTime().currentDateTime();
+}
+
+bool UBDocumentProxy::isModified() const
+{
+    return mIsModified;
+}
+
+
+
+
+
diff --git a/Sankore-3.1/src/document/UBDocumentProxy.h b/Sankore-3.1/src/document/UBDocumentProxy.h
index 8273501..14331b3 100644
--- a/Sankore-3.1/src/document/UBDocumentProxy.h
+++ b/Sankore-3.1/src/document/UBDocumentProxy.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,89 +18,93 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBDOCUMENTPROXY_H_
-#define UBDOCUMENTPROXY_H_
-
-#include <QtGui>
-
-#include "frameworks/UBStringUtils.h"
-
-#include "core/UBSettings.h"
-
-class UBGraphicsScene;
-
-class UBDocumentProxy : public QObject
-{
-    Q_OBJECT
-
-    friend class UBPersistenceManager;
-
-    public:
-
-        UBDocumentProxy();
-        UBDocumentProxy(const QString& pPersistencePath);
-
-        virtual ~UBDocumentProxy();
-
-        QString persistencePath() const;
-
-        void setPersistencePath(const QString& pPersistencePath);
-
-        void setMetaData(const QString& pKey , const QVariant& pValue);
-        QVariant metaData(const QString& pKey) const;
-        QHash<QString, QVariant> metaDatas() const;
-
-        QString name() const;
-        QString groupName() const;
-        QDateTime documentDate();
-
-        QDateTime lastUpdate();
-
-
-        QSize defaultDocumentSize() const;
-        void setDefaultDocumentSize(QSize pSize);
-        void setDefaultDocumentSize(int pWidth, int pHeight);
-
-        QUuid uuid() const;
-        void setUuid(const QUuid& uuid);
-
-        bool isModified() const;
-
-        int pageCount();
-
-    protected:
-        void setPageCount(int pPageCount);
-        int incPageCount();
-        int decPageCount();
-
-    signals:
-        void defaultDocumentSizeChanged();
-
-    private:
-
-        void init();
-
-        QString mPersistencePath;
-
-        QHash<QString, QVariant> mMetaDatas;
-
-        bool mIsModified;
-
-        int mPageCount;
-
-};
-
-inline bool operator==(const UBDocumentProxy &proxy1, const UBDocumentProxy &proxy2)
-{
-    return proxy1.persistencePath() == proxy2.persistencePath();
-}
-
-inline uint qHash(const UBDocumentProxy &key)
-{
-    return qHash(key.persistencePath());
-}
-
-
-#endif /* UBDOCUMENTPROXY_H_ */
+
+
+
+#ifndef UBDOCUMENTPROXY_H_
+#define UBDOCUMENTPROXY_H_
+
+#include <QtGui>
+
+#include "frameworks/UBStringUtils.h"
+
+#include "core/UBSettings.h"
+
+class UBGraphicsScene;
+
+class UBDocumentProxy : public QObject
+{
+    Q_OBJECT
+
+    friend class UBPersistenceManager;
+
+    public:
+
+        UBDocumentProxy();
+        UBDocumentProxy(const UBDocumentProxy &rValue);
+        UBDocumentProxy(const QString& pPersistencePath);
+
+        virtual ~UBDocumentProxy();
+
+        QString persistencePath() const;
+
+        void setPersistencePath(const QString& pPersistencePath);
+
+        void setMetaData(const QString& pKey , const QVariant& pValue);
+        QVariant metaData(const QString& pKey) const;
+        QHash<QString, QVariant> metaDatas() const;
+
+        QString name() const;
+        QString groupName() const;
+        QDateTime documentDate();
+
+        QDateTime lastUpdate();
+
+
+        QSize defaultDocumentSize() const;
+        void setDefaultDocumentSize(QSize pSize);
+        void setDefaultDocumentSize(int pWidth, int pHeight);
+
+        QUuid uuid() const;
+        void setUuid(const QUuid& uuid);
+
+        bool isModified() const;
+
+        int pageCount();
+
+        bool theSameDocument(UBDocumentProxy *proxy);
+
+    protected:
+        void setPageCount(int pPageCount);
+        int incPageCount();
+        int decPageCount();
+
+    signals:
+        void defaultDocumentSizeChanged();
+
+    private:
+
+        void init();
+
+        QString mPersistencePath;
+
+        QHash<QString, QVariant> mMetaDatas;
+
+        bool mIsModified;
+
+        int mPageCount;
+
+};
+
+inline bool operator==(const UBDocumentProxy &proxy1, const UBDocumentProxy &proxy2)
+{
+    return proxy1.persistencePath() == proxy2.persistencePath();
+}
+
+inline uint qHash(const UBDocumentProxy &key)
+{
+    return qHash(key.persistencePath());
+}
+
+
+#endif /* UBDOCUMENTPROXY_H_ */
diff --git a/Sankore-3.1/src/domain/UBAbstractUndoCommand.cpp b/Sankore-3.1/src/domain/UBAbstractUndoCommand.cpp
index 628c92c..5408321 100644
--- a/Sankore-3.1/src/domain/UBAbstractUndoCommand.cpp
+++ b/Sankore-3.1/src/domain/UBAbstractUndoCommand.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBAbstractUndoCommand.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/domain/UBAbstractUndoCommand.h b/Sankore-3.1/src/domain/UBAbstractUndoCommand.h
index 9fa03df..15c25ae 100644
--- a/Sankore-3.1/src/domain/UBAbstractUndoCommand.h
+++ b/Sankore-3.1/src/domain/UBAbstractUndoCommand.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBABSTRACTUNDOCOMMAND_H_
 #define UBABSTRACTUNDOCOMMAND_H_
 
diff --git a/Sankore-3.1/src/domain/UBDocumentUndoCommand.cpp b/Sankore-3.1/src/domain/UBDocumentUndoCommand.cpp
index b1eacd2..880afcd 100644
--- a/Sankore-3.1/src/domain/UBDocumentUndoCommand.cpp
+++ b/Sankore-3.1/src/domain/UBDocumentUndoCommand.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBDocumentUndoCommand.h"
 
 #include "document/UBDocumentProxy.h"
diff --git a/Sankore-3.1/src/domain/UBDocumentUndoCommand.h b/Sankore-3.1/src/domain/UBDocumentUndoCommand.h
index 90d079a..a839b15 100644
--- a/Sankore-3.1/src/domain/UBDocumentUndoCommand.h
+++ b/Sankore-3.1/src/domain/UBDocumentUndoCommand.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDOCUMENTUNDOCOMMAND_H_
 #define UBDOCUMENTUNDOCOMMAND_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsAudioItem.h b/Sankore-3.1/src/domain/UBGraphicsAudioItem.h
index f1d2d6b..f55fd45 100644
--- a/Sankore-3.1/src/domain/UBGraphicsAudioItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsAudioItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
diff --git a/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.cpp
index f1d2d6b..f55fd45 100644
--- a/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
diff --git a/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.h
index 812b015..5173ce2 100644
--- a/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.h
+++ b/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
diff --git a/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.cpp b/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.cpp
index 70b7617..9305d01 100644
--- a/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,987 +18,988 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBGraphicsDelegateFrame.h"
-
-#include <QtGui>
-#include <QtSvg>
-
-#include "core/UBApplication.h"
-#include "core/UBSettings.h"
-
-#include "board/UBBoardController.h"
-#include "board/UBBoardView.h"
-
-#include "domain/UBGraphicsItemDelegate.h"
-#include "domain/UBGraphicsScene.h"
-#include "domain/UBGraphicsProxyWidget.h"
-
-#include "gui/UBResources.h"
-
-#include "core/memcheck.h"
-
-UBGraphicsDelegateFrame::UBGraphicsDelegateFrame(UBGraphicsItemDelegate* pDelegate, QRectF pRect, qreal pFrameWidth, bool respectRatio)
-    : QGraphicsRectItem(), QObject(pDelegate)
-    , mCurrentTool(None)
-    , mDelegate(pDelegate)
-    , mVisible(true)
-    , mFrameWidth(pFrameWidth)
-    , mNominalFrameWidth(pFrameWidth)
-    , mRespectRatio(respectRatio)
-    , mAngle(0)
-    , mAngleOffset(0)
-    , mTotalScaleX(-1)
-    , mTotalScaleY(-1)
-    , mTranslateX(0)
-    , mTranslateY(0)
-    , mTotalTranslateX(0)
-    , mTotalTranslateY(0)
-    , mOperationMode(Scaling)
-    , mFlippedX(false)
-    , mFlippedY(false)
-    , mMirrorX(false)
-    , mMirrorY(false)
-{
-    mAngleTolerance = UBSettings::settings()->angleTolerance->get().toReal();
-
-    setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
-
-    setAcceptedMouseButtons(Qt::LeftButton);
-    setRect(pRect.adjusted(mFrameWidth, mFrameWidth, mFrameWidth * -1, mFrameWidth * -1));
-
-    setBrush(QBrush(UBSettings::paletteColor));
-    setPen(Qt::NoPen);
-    setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
-
-    mBottomRightResizeGripSvgItem = new QGraphicsSvgItem(":/images/resize.svg", this);
-    mBottomResizeGripSvgItem = new QGraphicsSvgItem(":/images/resizeBottom.svg", this);
-    mLeftResizeGripSvgItem = new QGraphicsSvgItem(":/images/resizeLeft.svg", this);
-    mRightResizeGripSvgItem = new QGraphicsSvgItem(":/images/resizeRight.svg", this);
-    mTopResizeGripSvgItem = new QGraphicsSvgItem(":/images/resizeTop.svg", this);
-
-    mBottomRightResizeGrip = new QGraphicsRectItem(this);
-    mBottomRightResizeGrip->setPen(Qt::NoPen);
-    mBottomResizeGrip = new QGraphicsRectItem(this);
-    mBottomResizeGrip->setPen(Qt::NoPen);
-    mLeftResizeGrip = new QGraphicsRectItem(this);
-    mLeftResizeGrip->setPen(Qt::NoPen);
-    mRightResizeGrip = new QGraphicsRectItem(this);
-    mRightResizeGrip->setPen(Qt::NoPen);
-    mTopResizeGrip = new QGraphicsRectItem(this);
-    mTopResizeGrip->setPen(Qt::NoPen);
-
-    mRotateButton = new QGraphicsSvgItem(":/images/rotate.svg", this);
-    mRotateButton->setCursor(UBResources::resources()->rotateCursor);
-    mRotateButton->setVisible(mDelegate->canRotate());
-
-    updateResizeCursors();
-
-    setAntiScale(1.0);
-
-    positionHandles();
-
-    this->setAcceptHoverEvents(true);
-}
-
-
-UBGraphicsDelegateFrame::~UBGraphicsDelegateFrame()
-{
-    // NOOP
-}
-
-void UBGraphicsDelegateFrame::setAntiScale(qreal pAntiScale)
-{
-    mFrameWidth = mNominalFrameWidth * pAntiScale;
-
-    QTransform tr;
-    tr.scale(pAntiScale, pAntiScale);
-
-    mBottomRightResizeGripSvgItem->setTransform(tr);
-    mBottomResizeGripSvgItem->setTransform(tr);
-    mLeftResizeGripSvgItem->setTransform(tr);
-    mRightResizeGripSvgItem->setTransform(tr);
-    mTopResizeGripSvgItem->setTransform(tr);
-    mRotateButton->setTransform(tr);
-}
-
-
-void UBGraphicsDelegateFrame::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
-{
-    Q_UNUSED(option);
-    Q_UNUSED(widget);
-
-    QPainterPath path;
-    path.addRoundedRect(rect(), mFrameWidth / 2, mFrameWidth / 2);
-
-    if (rect().width() > 1 && rect().height() > 1)
-    {
-        QPainterPath extruded;
-        extruded.addRect(rect().adjusted(mFrameWidth, mFrameWidth, (mFrameWidth * -1), (mFrameWidth * -1)));
-        path = path.subtracted(extruded);
-    }
-
-    painter->fillPath(path, brush());
-}
-
-
-QPainterPath UBGraphicsDelegateFrame::shape() const
-{
-    QPainterPath path;
-
-    //We do not use the rounded rect here because we want the bottom right corner
-    //to be included in the frame (for resize grip handling : #702)
-    path.addRect(rect());
-
-    if (rect().width() > 0 && rect().height() > 0)
-    {
-        QPainterPath extruded;
-        extruded.addRect(rect().adjusted(mFrameWidth, mFrameWidth, mFrameWidth * -1, mFrameWidth * -1));
-        path = path.subtracted(extruded);
-    }
-
-    return path;
-}
-
-
-void UBGraphicsDelegateFrame::initializeTransform()
-{
-    QTransform itemTransform = delegated()->sceneTransform();
-    QRectF itemRect = delegated()->boundingRect();
-    QPointF topLeft = itemTransform.map(itemRect.topLeft());
-    QPointF topRight = itemTransform.map(itemRect.topRight());
-    QPointF  bottomLeft = itemTransform.map(itemRect.bottomLeft());
-
-    qreal horizontalFlip = (topLeft.x() > topRight.x()) ? -1 : 1;
-    mMirrorX = horizontalFlip < 0 ;
-    if(horizontalFlip < 0){
-        // why this is because of the way of calculating the translations that checks which side is the most is the
-        // nearest instead of checking which one is the left side.
-        QPointF tmp = topLeft;
-        topLeft = topRight;
-        topRight = tmp;
-
-        // because of the calculation of the height is done by lenght and not deltaY
-        bottomLeft = itemTransform.map(itemRect.bottomRight());
-    }
-
-    qreal verticalFlip = (bottomLeft.y() < topLeft.y()) ? -1 : 1;
-    // not sure that is usefull
-    mMirrorY = verticalFlip < 0;
-    if(verticalFlip < 0 && !mMirrorX){
-        topLeft = itemTransform.map(itemRect.bottomLeft());
-        topRight = itemTransform.map(itemRect.bottomRight());
-        bottomLeft = itemTransform.map(itemRect.topLeft());
-    }
-
-    QLineF topLine(topLeft, topRight);
-    QLineF leftLine(topLeft, bottomLeft);
-    qreal width = topLine.length();
-    qreal height = leftLine.length();
-
-    mAngle = topLine.angle();
-
-    // the fact the the length is used we loose the horizontalFlip information
-    // a better way to do this is using DeltaX that preserve the direction information.
-    mTotalScaleX = (width / itemRect.width()) * horizontalFlip;
-    mTotalScaleY = height / itemRect.height() * verticalFlip;
-
-    QTransform tr;
-    QPointF center = delegated()->boundingRect().center();
-    tr.translate(center.x() * mTotalScaleX, center.y() * mTotalScaleY);
-    tr.rotate(-mAngle);
-    tr.translate(-center.x() * mTotalScaleX, -center.y() * mTotalScaleY);
-    tr.scale(mTotalScaleX, mTotalScaleY);
-
-    mTotalTranslateX = delegated()->transform().dx() - tr.dx();
-    mTotalTranslateY = delegated()->transform().dy() - tr.dy();
-}
-
-
-void UBGraphicsDelegateFrame::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    mDelegate->startUndoStep();
-
-    mStartingPoint = event->scenePos();
-
-    initializeTransform();
-
-    mScaleX = 1;
-    mScaleY = 1;
-    mTranslateX = 0;
-    mTranslateY = 0;
-    mAngleOffset = 0;
-
-    mInitialTransform = buildTransform();
-    mOriginalSize = delegated()->boundingRect().size();
-
-    mCurrentTool = toolFromPos(event->pos());
-    setCursorFromAngle(QString::number((int)mAngle % 360));
-    event->accept();
-
-    if (moving())
-        prepareFramesToMove(getLinkedFrames());
-
-}
-
-void UBGraphicsDelegateFrame::setCursorFromAngle(QString angle)
-{
-    if (mCurrentTool == Rotate)
-    {
-        QWidget *controlViewport = UBApplication::boardController->controlView()->viewport();
-
-        QSize cursorSize(45,30);
-
-
-        QImage mask_img(cursorSize, QImage::Format_Mono);
-        mask_img.fill(0xff);
-        QPainter mask_ptr(&mask_img);
-        mask_ptr.setBrush( QBrush( QColor(0, 0, 0) ) );
-        mask_ptr.drawRoundedRect(0,0, cursorSize.width()-1, cursorSize.height()-1, 6, 6);
-        QBitmap bmpMask = QBitmap::fromImage(mask_img);
-
-
-        QPixmap pixCursor(cursorSize);
-        pixCursor.fill(QColor(Qt::white));
-
-        QPainter painter(&pixCursor);
-
-        painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
-        painter.setBrush(QBrush(Qt::white));
-        painter.setPen(QPen(QColor(Qt::black)));
-        painter.drawRoundedRect(1,1,cursorSize.width()-2,cursorSize.height()-2,6,6);
-        painter.setFont(QFont("Arial", 10));
-        painter.drawText(1,1,cursorSize.width(),cursorSize.height(), Qt::AlignCenter, angle.append(QChar(176)));
-        painter.end();
-
-        pixCursor.setMask(bmpMask);
-        controlViewport->setCursor(pixCursor);
-    }
-}
-
-
-bool UBGraphicsDelegateFrame::canResizeBottomRight(qreal width, qreal height, qreal scaleFactor)
-{
-    bool res = false;
-
-    if(!mMirrorX && !mMirrorX && ((width * scaleFactor) > 2*mFrameWidth && (height * scaleFactor) > 2*mFrameWidth)){
-        res = true;
-    }else if(mMirrorX && !mMirrorY && (-width * scaleFactor) > 2*mFrameWidth && (height*scaleFactor) > 2*mFrameWidth){
-        res = true;
-    }else if(!mMirrorX && mMirrorY && (width * scaleFactor) > 2*mFrameWidth && (-height*scaleFactor) > 2*mFrameWidth){
-        res = true;
-    }else if(mMirrorX && mMirrorY && (-width * scaleFactor) > 2*mFrameWidth && (-height*scaleFactor) > 2*mFrameWidth){
-        res = true;
-    }
-
-    return res;
-}
-
-QPointF UBGraphicsDelegateFrame::getFixedPointFromPos()
-{
-    QPointF fixedPoint;
-    if (!moving() && !rotating())
-    {
-        if (resizingTop())
-        {
-            if (mMirrorX && mMirrorY)
-            {
-                if ((0 < mAngle) && (mAngle < 90))
-                    fixedPoint = delegated()->sceneBoundingRect().topLeft();
-                else
-                    fixedPoint = delegated()->sceneBoundingRect().topRight();
-            }
-            else
-            {
-                if ((0 < mAngle) && (mAngle <= 90))
-                    fixedPoint = delegated()->sceneBoundingRect().bottomRight();
-                else
-                    fixedPoint = delegated()->sceneBoundingRect().bottomLeft();
-            }
-        }
-        else if (resizingLeft())
-        {
-            if (mMirrorX && mMirrorY)
-            {
-                if ((0 < mAngle) && (mAngle < 90))
-                    fixedPoint = delegated()->sceneBoundingRect().bottomLeft();
-                else
-                    fixedPoint = delegated()->sceneBoundingRect().topLeft();
-            }
-            else
-            {
-                if ((0 < mAngle) && (mAngle <= 90))
-                    fixedPoint = delegated()->sceneBoundingRect().topRight();
-                else
-                    fixedPoint = delegated()->sceneBoundingRect().bottomRight();
-            }
-        }
-    }
-    return fixedPoint;
-}
-
-
-QSizeF UBGraphicsDelegateFrame::getResizeVector(qreal moveX, qreal moveY)
-{
-    qreal dPosX = 0;
-    qreal dPosY = 0;
-
-    if (resizingTop())
-    {
-        if (mMirrorX && mMirrorY)
-            dPosY = moveY;
-        else
-            dPosY = -moveY;
-    }
-    else if (resizingLeft())
-    {
-        if (mMirrorX && mMirrorY)
-            dPosX = moveX;
-        else
-            dPosX = -moveX;
-    }
-
-    else if (resizingRight())
-        dPosX = (mMirrorX) ?  -moveX : moveX;
-    else if (resizingBottom())
-        dPosY = mMirrorY ? -moveY : moveY;
-
-    return QSizeF(dPosX, dPosY);
-}
-
-QSizeF UBGraphicsDelegateFrame::resizeDelegate(qreal moveX, qreal moveY)
-{
-    QSizeF incVector;
-    mFixedPoint = getFixedPointFromPos();
-
-    UBResizableGraphicsItem* resizableItem = dynamic_cast<UBResizableGraphicsItem*>(delegated());
-    if (resizableItem)
-    {
-        incVector = getResizeVector(moveX, moveY);
-        resizableItem->resize(mOriginalSize + incVector);
-
-        if (resizingTop() || resizingLeft() || ((mMirrorX || mMirrorY) && resizingBottomRight()))
-        {
-            QPointF pos1 = getFixedPointFromPos();
-            delegated()->setPos(delegated()->pos()-pos1+mFixedPoint);
-        }
-    }
-
-    return incVector;
-}
-
-void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
-    if (None == mCurrentTool)
-        return;
-
-    QLineF move = QLineF(mStartingPoint, event->scenePos());
-    qreal moveX = move.length() * cos((move.angle() - mAngle) * PI / 180);
-    qreal moveY = -move.length() * sin((move.angle() - mAngle) * PI / 180);
-    qreal width = delegated()->boundingRect().width() * mTotalScaleX;
-    qreal height = delegated()->boundingRect().height() * mTotalScaleY;
-
-    if (mOperationMode == Scaling)
-    {
-        if(!rotating())
-        {
-            mTranslateX = moveX;
-            // Perform the resize
-            if (resizingBottomRight())
-            {
-                // -----------------------------------------------------
-                // ! We want to keep the aspect ratio with this resize !
-                // -----------------------------------------------------
-                qreal scaleX;
-                qreal scaleY;
-
-                if(!mMirrorX){
-                    scaleX = (width + moveX) / width;
-                }else{
-                    scaleX = (width - moveX) / width;
-                }
-
-                if(!mMirrorY){
-                    scaleY = (height + moveY) / height;
-                }else{
-                    scaleY = (height - moveY) / height;
-                }
-
-                qreal scaleFactor = (scaleX + scaleY) / 2;
-
-                // Do not allow resizing of image size under frame size
-                if (canResizeBottomRight(width, height, scaleFactor))
-                {
-                    if (mRespectRatio)
-                    {
-                        mScaleX = scaleFactor;
-                        mScaleY = scaleFactor;
-                    }
-                    else
-                    {
-                        mScaleX = scaleX;
-                        mScaleY = scaleY;
-                    }
-                }
-            }else if (resizingLeft() || resizingRight())
-            {
-                if(width != 0){
-                    qreal scaleX = 0.0;
-                    if(resizingLeft()){
-                        scaleX = (width - moveX) / width;
-                    }else if(resizingRight()){
-                        scaleX = (width + moveX) / width;
-                    }
-                    if(mDelegate->isFlippable() && qAbs(scaleX) != 0){
-                        if((qAbs(width * scaleX)) < 2*mFrameWidth){
-                            bool negative = (scaleX < 0)?true:false;
-                            if(negative){
-                                if(mMirrorX)
-                                    scaleX = 2*mFrameWidth/width;
-                                else
-                                    scaleX = -2*mFrameWidth/width;
-                            }else{
-                                scaleX = -1;
-                                mFlippedX = !mFlippedX;
-                            }
-                        }
-                        mScaleX = scaleX;
-                    }else if (scaleX > 1 || (width * scaleX) > 2 * mFrameWidth){
-                        mScaleX = scaleX;
-                        if(resizingLeft()){
-                            mTranslateX = moveX;
-                        }
-                    }
-                }
-            }else if(resizingTop() || resizingBottom()){
-                if(height != 0){
-                    qreal scaleY = 0.0;
-                    if(resizingTop()){
-                        scaleY = (height - moveY) / height;
-                    }else if(resizingBottom()){
-                        scaleY = (height + moveY) / height;
-                    }
-
-                    if(mDelegate->isFlippable() && qAbs(scaleY) != 0){
-                        if((qAbs(height * scaleY)) < 2*mFrameWidth){
-                            bool negative = (scaleY < 0)?true:false;
-                            if(negative){
-                                if(mMirrorY)
-                                    scaleY = 2*mFrameWidth/width;
-                                else
-                                    scaleY = -2*mFrameWidth/width;
-                            }else{
-                                scaleY = -1;
-                                mFlippedY = !mFlippedY;
-                            }
-                        }
-                        mScaleY = scaleY;
-                    }else if (scaleY > 1 || (height * scaleY) > 2 * mFrameWidth)
-                    {
-                        mScaleY = scaleY;
-                        if(resizingTop()){
-                            mTranslateY = moveY;
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    if (rotating())
-    {
-        mTranslateX = 0;
-        mTranslateY = 0;
-
-        QLineF startLine(sceneBoundingRect().center(), event->lastScenePos());
-        QLineF currentLine(sceneBoundingRect().center(), event->scenePos());
-        mAngle += startLine.angleTo(currentLine);
-
-        if ((int)mAngle % 45 >= 45 - mAngleTolerance || (int)mAngle % 45 <= mAngleTolerance)
-        {
-            mAngle = qRound(mAngle / 45) * 45;
-            mAngleOffset += startLine.angleTo(currentLine);
-            if ((int)mAngleOffset % 360 > mAngleTolerance && (int)mAngleOffset % 360 < 360 - mAngleTolerance)
-            {
-                mAngle += mAngleOffset;
-                mAngleOffset = 0;
-            }
-        }
-        else if ((int)mAngle % 30 >= 30 - mAngleTolerance || (int)mAngle % 30 <= mAngleTolerance)
-        {
-            mAngle = qRound(mAngle / 30) * 30;
-            mAngleOffset += startLine.angleTo(currentLine);
-            if ((int)mAngleOffset % 360 > mAngleTolerance && (int)mAngleOffset % 360 < 360 - mAngleTolerance)
-            {
-                mAngle += mAngleOffset;
-                mAngleOffset = 0;
-            }
-        }
-
-        setCursorFromAngle(QString::number((int)mAngle % 360));
-    }
-    else if (moving())
-    {
-        mTranslateX = move.dx();
-        mTranslateY = move.dy();
-        moveLinkedItems(move);
-    }
-
-    if (mOperationMode == Scaling || moving() || rotating())
-    {
-        QTransform tr = buildTransform();
-
-        if (resizingRight() || resizingBottom() || resizingBottomRight())
-        {
-            QPointF ref;
-
-            // we just detects coordinates of corner before and after scaling and then moves object at diff between them.
-            if (resizingBottomRight() && (mMirrorX || mMirrorY))
-            {
-                if (mFlippedX && !mMirrorX && mFlippedY)// && !mMirrorY)
-                {
-                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().bottomLeft()).x() - tr.map(delegated()->boundingRect().bottomLeft()).x();
-                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().bottomLeft()).y() - tr.map(delegated()->boundingRect().bottomLeft()).y();
-                }
-                else if ((mFlippedX || mMirrorX) && (mFlippedY || mMirrorY))
-                {
-                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().bottomRight()).x() - tr.map(delegated()->boundingRect().bottomRight()).x();
-                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().bottomRight()).y() - tr.map(delegated()->boundingRect().bottomRight()).y();
-                }
-                else if (mFlippedX || mMirrorX)
-                {
-                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().topRight()).x() - tr.map(delegated()->boundingRect().topRight()).x();
-                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().topRight()).y() - tr.map(delegated()->boundingRect().topRight()).y();
-                }
-                else if (mFlippedY || mMirrorY)
-                {
-                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().bottomLeft()).x() - tr.map(delegated()->boundingRect().bottomLeft()).x();
-                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().bottomLeft()).y() - tr.map(delegated()->boundingRect().bottomLeft()).y();
-                }
-                else
-                {
-                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().bottomRight()).x() - tr.map(delegated()->boundingRect().bottomRight()).x();
-                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().bottomRight()).y() - tr.map(delegated()->boundingRect().bottomRight()).y();
-                }
-            }
-            else
-            {
-                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().topLeft()).x() - tr.map(delegated()->boundingRect().topLeft()).x();
-                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().topLeft()).y() - tr.map(delegated()->boundingRect().topLeft()).y();
-            }
-        }
-        else if (resizingTop() || resizingLeft())
-        {
-            QPointF bottomRight = tr.map(delegated()->boundingRect().bottomRight());
-            QPointF fixedPoint = mInitialTransform.map(delegated()->boundingRect().bottomRight());
-            mTranslateX += fixedPoint.x() - bottomRight.x();
-            mTranslateY += fixedPoint.y() - bottomRight.y();
-        }
-        delegated()->setTransform(buildTransform());
-    }
-    else // resizing/resizing horizontally
-    {
-
-        if (resizingBottomRight())
-        {
-            static QSizeF incV = QSizeF();
-            static QSizeF incH = QSizeF();
-
-            if (mMirrorX && mMirrorY)
-                mCurrentTool = ResizeTop;
-            else
-                mCurrentTool = ResizeBottom;
-
-            incV = resizeDelegate(moveX, moveY);
-            mOriginalSize += incV;
-
-            if (mMirrorX && mMirrorY)
-                mCurrentTool = ResizeLeft;
-            else
-                mCurrentTool = ResizeRight;
-
-            move = QLineF(event->lastScenePos(), event->scenePos());
-            moveX = move.length() * cos((move.angle() - mAngle) * PI / 180);
-            moveY = -move.length() * sin((move.angle() - mAngle) * PI / 180);
-
-            mFixedPoint = getFixedPointFromPos();
-
-            incH = resizeDelegate(moveX, moveY);
-
-            mOriginalSize -= incV;
-            mOriginalSize += incH;
-
-            mCurrentTool = ResizeBottomRight;
-        }
-        else
-            resizeDelegate(moveX, moveY);
-    }
-    event->accept();
-}
-
-QList<UBGraphicsDelegateFrame *> UBGraphicsDelegateFrame::getLinkedFrames()
-{
-    QList<UBGraphicsDelegateFrame*> linkedFrames;
-    QList<QGraphicsItem*> sItems = mDelegate->delegated()->scene()->selectedItems();
-    if (sItems.count())
-    {
-        sItems.removeAll(delegated());
-
-        foreach(QGraphicsItem *item, sItems)
-        {
-            UBGraphicsItem *gitem = dynamic_cast<UBGraphicsItem*>(item);
-            if (gitem)
-                linkedFrames << gitem->Delegate()->frame();
-        }
-    }
-    return linkedFrames;
-}
-
-void UBGraphicsDelegateFrame::prepareFramesToMove(QList<UBGraphicsDelegateFrame *> framesToMove)
-{
-    mLinkedFrames = framesToMove;
-    foreach (UBGraphicsDelegateFrame *frame, mLinkedFrames)
-    {
-        frame->prepareLinkedFrameToMove();
-    }
-}
-
-void UBGraphicsDelegateFrame::prepareLinkedFrameToMove()
-{
-    mDelegate->startUndoStep();
-
-    mStartingPoint = QPointF(0,0);
-
-    initializeTransform();
-
-    mScaleX = 1;
-    mScaleY = 1;
-    mTranslateX = 0;
-    mTranslateY = 0;
-    mAngleOffset = 0;
-
-    mInitialTransform = buildTransform();
-
-    mCurrentTool = Move;
-}
-
-void UBGraphicsDelegateFrame::moveLinkedItems(QLineF movingVector, bool bLinked)
-{
-    if (bLinked)
-    {
-        mCurrentTool = Move;
-
-        mTranslateX = movingVector.dx();
-        mTranslateY = movingVector.dy();
-
-        delegated()->setTransform(buildTransform(), false);
-    }
-    else
-    {
-        foreach(UBGraphicsDelegateFrame* frame, mLinkedFrames)
-        {
-           frame->moveLinkedItems(movingVector, true);
-        }
-    }
-}
-
-QTransform UBGraphicsDelegateFrame::buildTransform()
-{
-    QTransform tr;
-    QPointF center = delegated()->boundingRect().center();
-
-    // Translate
-    tr.translate(mTotalTranslateX + mTranslateX, mTotalTranslateY + mTranslateY);
-
-    // Set angle
-    tr.translate(center.x() * mTotalScaleX * mScaleX, center.y() * mTotalScaleY * mScaleY);
-    tr.rotate(-mAngle);
-    tr.translate(-center.x() * mTotalScaleX * mScaleX, -center.y() * mTotalScaleY * mScaleY);
-
-    // Scale
-    tr.scale(mTotalScaleX * mScaleX, mTotalScaleY * mScaleY);
-    return tr;
-}
-
-
-void UBGraphicsDelegateFrame::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-    updateResizeCursors();
-
-    mDelegate->commitUndoStep();
-    mTotalScaleX *= mScaleX;
-    mTotalScaleY *= mScaleY;
-    mTotalTranslateX += mTranslateX;
-    mTotalTranslateY += mTranslateY;
-    event->accept();
-
-    mCurrentTool = None;
-
-    QGraphicsRectItem::mouseReleaseEvent(event);
-
-    // Show the buttons
-    if(isResizing()){
-        mResizing = false;
-    }
-}
-
-
-void UBGraphicsDelegateFrame::updateResizeCursors()
-{
-    QPixmap pix(":/images/cursors/resize.png");
-    QTransform tr;
-
-    tr.rotate(-mAngle);
-    QCursor resizeCursor  = QCursor(pix.transformed(tr, Qt::SmoothTransformation), pix.width() / 2,  pix.height() / 2);
-    mLeftResizeGrip->setCursor(resizeCursor);
-    mRightResizeGrip->setCursor(resizeCursor);
-
-    tr.rotate(-90);
-    resizeCursor  = QCursor(pix.transformed(tr, Qt::SmoothTransformation), pix.width() / 2,  pix.height() / 2);
-    mBottomResizeGrip->setCursor(resizeCursor);
-    mTopResizeGrip->setCursor(resizeCursor);
-
-    tr.rotate(-45);
-    resizeCursor  = QCursor(pix.transformed(tr, Qt::SmoothTransformation), pix.width() / 2,  pix.height() / 2);
-    mBottomRightResizeGrip->setCursor(resizeCursor);
-}
-
-
-void UBGraphicsDelegateFrame::setVisible(bool visible)
-{
-    mVisible = visible;
-    if (mVisible)
-       setBrush(QBrush(UBSettings::paletteColor));
-    else
-       setBrush(Qt::NoBrush);
-}
-
-
-void UBGraphicsDelegateFrame::positionHandles()
-{
-    QRectF itemRect = delegated()->boundingRect();
-
-    if (mDelegate->getToolBarItem() && mDelegate->getToolBarItem()->isVisibleOnBoard()
-        && mDelegate->getToolBarItem()->isShifting())
-    {
-        QPointF graphicsItemPosition = itemRect.topLeft();
-        itemRect.setTopLeft(graphicsItemPosition-QPointF(0,mDelegate->getToolBarItem()->boundingRect().height()* mDelegate->antiScaleRatio()));
-    }
-
-    QTransform itemTransform = delegated()->sceneTransform();
-    QPointF topLeft = itemTransform.map(itemRect.topLeft());
-    QPointF topRight = itemTransform.map(itemRect.topRight());
-    QPointF bottomLeft = itemTransform.map(itemRect.bottomLeft());
-    QPointF bottomRight = itemTransform.map(itemRect.bottomRight());
-    QPointF center = itemTransform.map(itemRect.center());
-    int rotateHeight = QLineF(topLeft, bottomLeft).length();
-
-    // Handle the mirroring
-    if(topLeft.x() > topRight.x()){
-        QPointF topTmp = topRight;
-        QPointF bottomTmp = bottomRight;
-        topRight = topLeft;
-        topLeft = topTmp;
-        bottomRight = bottomLeft;
-        bottomLeft = bottomTmp;
-    }
-
-    if(bottomLeft.y() > topLeft.y()){
-        QPointF leftTmp = bottomLeft;
-        QPointF rightTmp = bottomRight;
-        bottomLeft = topLeft;
-        topLeft = leftTmp;
-        bottomRight = topRight;
-        topRight = rightTmp;
-    }
-
-    QLineF topLine(topLeft, topRight);
-    qreal angle = topLine.angle();
-    qreal width = topLine.length();
-
-    QLineF leftLine(topLeft, bottomLeft);
-    qreal height = leftLine.length();
-
-    int h = rotating()?rotateHeight:height;
-
-    if (mVisible)
-    {
-        setRect(center.x() - mFrameWidth - width / 2, center.y() - mFrameWidth - h / 2, width + 2 * mFrameWidth, h + 2 * mFrameWidth);
-    }
-    else
-    {
-        setRect(center.x() - width / 2, center.y() - h / 2, width, h);
-    }
-
-    resetTransform();
-    translate(center.x(), center.y());
-    rotate(-angle);
-    translate(-center.x(), -center.y());
-
-    mBottomRightResizeGripSvgItem->setParentItem(this);
-    mBottomResizeGripSvgItem->setParentItem(this);
-    mLeftResizeGripSvgItem->setParentItem(this);
-    mRightResizeGripSvgItem->setParentItem(this);
-    mTopResizeGripSvgItem->setParentItem(this);
-    mRotateButton->setParentItem(this);
-
-    mBottomRightResizeGrip->setParentItem(this);
-    mBottomResizeGrip->setParentItem(this);
-    mLeftResizeGrip->setParentItem(this);
-    mRightResizeGrip->setParentItem(this);
-    mTopResizeGrip->setParentItem(this);
-
-    QRectF brRect = mBottomRightResizeGripSvgItem->mapRectToParent(mBottomRightResizeGripSvgItem->boundingRect());
-    QRectF bRect = mBottomResizeGripSvgItem->mapRectToParent(mBottomResizeGripSvgItem->boundingRect());
-    QRectF lRect = mLeftResizeGripSvgItem->mapRectToParent(mLeftResizeGripSvgItem->boundingRect());
-    QRectF rRect = mRightResizeGripSvgItem->mapRectToParent(mRightResizeGripSvgItem->boundingRect());
-    QRectF trRect = mTopResizeGripSvgItem->mapRectToParent(mTopResizeGripSvgItem->boundingRect());
-
-    mBottomRightResizeGripSvgItem->setPos(rect().right() - brRect.width(), rect().bottom() - brRect.height());
-    mBottomResizeGripSvgItem->setPos(rect().center().x() - bRect.width() / 2, rect().bottom() - bRect.height());
-
-    mLeftResizeGripSvgItem->setPos(rect().left(), rect().center().y() - lRect.height() / 2);
-    mRightResizeGripSvgItem->setPos(rect().right() - rRect.width(), rect().center().y() - rRect.height() / 2);
-
-    mTopResizeGripSvgItem->setPos(rect().center().x() - trRect.width() / 2, rect().y());
-    mRotateButton->setPos(rect().right() - mFrameWidth - 5, rect().top() + 5);
-
-    mBottomRightResizeGrip->setRect(bottomRightResizeGripRect());
-    mBottomResizeGrip->setRect(bottomResizeGripRect());
-    mLeftResizeGrip->setRect(leftResizeGripRect());
-    mRightResizeGrip->setRect(rightResizeGripRect());
-    mTopResizeGrip->setRect(topResizeGripRect());
-
-    QVariant vLocked = delegated()->data(UBGraphicsItemData::ItemLocked);
-    bool isLocked = (vLocked.isValid() && vLocked.toBool());
-    bool bShowHorizontalResizers = ResizingHorizontally == mOperationMode;
-    bool bShowVerticalResizers   = ResizingHorizontally != mOperationMode;
-    bool bShowAllResizers        = Resizing == mOperationMode || Scaling == mOperationMode ;
-
-    mBottomRightResizeGripSvgItem->setVisible(!isLocked && bShowAllResizers);
-    mBottomResizeGripSvgItem->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
-    mLeftResizeGripSvgItem->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
-    mRightResizeGripSvgItem->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
-    mTopResizeGripSvgItem->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
-    mRotateButton->setVisible(mDelegate->canRotate() && !isLocked);
-
-    mBottomRightResizeGrip->setVisible(!isLocked && bShowAllResizers);
-    mBottomResizeGrip->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
-    mLeftResizeGrip->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
-    mRightResizeGrip->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
-    mTopResizeGrip->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
-
-    if (isLocked)
-    {
-        QColor baseColor = UBSettings::paletteColor;
-        baseColor.setAlphaF(baseColor.alphaF() / 3);
-        setBrush(QBrush(baseColor));
-    }
-    else
-    {
-        setBrush(QBrush(UBSettings::paletteColor));
-    }
-
-    //make frame interact like delegated item when selected. Maybe should be deleted if selection logic will change
-    setZValue(delegated()->zValue());
-}
-
-
-QGraphicsItem* UBGraphicsDelegateFrame::delegated()
-{
-    return mDelegate->delegated();
-}
-
-UBGraphicsDelegateFrame::FrameTool UBGraphicsDelegateFrame::toolFromPos(QPointF pos)
-{
-    if(mDelegate->isLocked())
-        return None;
-    else if (bottomRightResizeGripRect().contains(pos) && ResizingHorizontally != mOperationMode)
-        return ResizeBottomRight;
-    else if (bottomResizeGripRect().contains(pos) && ResizingHorizontally != mOperationMode){
-            if(mMirrorY){
-                return ResizeTop;
-            }else{
-                return ResizeBottom;
-            }
-        }
-    else if (leftResizeGripRect().contains(pos)){
-            if(mMirrorX){
-                return ResizeRight;
-            }else{
-                return ResizeLeft;
-            }
-            return ResizeLeft;
-        }
-    else if (rightResizeGripRect().contains(pos)){
-            if(mMirrorX){
-                return ResizeLeft;
-            }else{
-                return ResizeRight;
-            }
-        }
-    else if (topResizeGripRect().contains(pos) && ResizingHorizontally != mOperationMode){
-            if(mMirrorY){
-                return ResizeBottom;
-            }else{
-                return ResizeTop;
-            }
-        }
-    else if (rotateButtonBounds().contains(pos) && mDelegate && mDelegate->canRotate())
-        return Rotate;
-    else
-        return Move;
-}
-
-
-QRectF UBGraphicsDelegateFrame::bottomRightResizeGripRect() const
-{
-    return QRectF(rect().right() - mFrameWidth, rect().bottom() - mFrameWidth, mFrameWidth, mFrameWidth);
-}
-
-
-QRectF UBGraphicsDelegateFrame::bottomResizeGripRect() const
-{
-    return QRectF(rect().center().x() - mFrameWidth / 2, rect().bottom() - mFrameWidth, mFrameWidth, mFrameWidth);
-}
-
-
-QRectF UBGraphicsDelegateFrame::leftResizeGripRect() const
-{
-    return QRectF(rect().left(), rect().center().y() - mFrameWidth / 2, mFrameWidth, mFrameWidth);
-}
-
-
-QRectF UBGraphicsDelegateFrame::rightResizeGripRect() const
-{
-    return QRectF(rect().right() - mFrameWidth, rect().center().y() - mFrameWidth / 2, mFrameWidth, mFrameWidth);
-}
-
-
-QRectF UBGraphicsDelegateFrame::topResizeGripRect() const
-{
-    return QRectF(rect().center().x() - mFrameWidth / 2, rect().top(), mFrameWidth, mFrameWidth);
-}
-
-
-QRectF UBGraphicsDelegateFrame::rotateButtonBounds() const
-{
-    return QRectF(rect().right()- mFrameWidth, rect().top(), mFrameWidth, mFrameWidth);
-}
-
-void UBGraphicsDelegateFrame::refreshGeometry()
-{
-    // Here we want to have the left on the left, the right on the right, the top on the top and the bottom on the bottom!
-    QRectF itemRect = delegated()->boundingRect();
-    QTransform itemTransform = delegated()->sceneTransform();
-    QPointF topLeft = itemTransform.map(itemRect.topLeft());
-    QPointF topRight = itemTransform.map(itemRect.topRight());
-    QPointF bottomLeft = itemTransform.map(itemRect.bottomLeft());
-
-    QLineF topLine(topLeft, topRight);
-    qreal width = topLine.length();
-    QLineF leftLine(topLeft, bottomLeft);
-    qreal height = leftLine.length();
-    setRect(topRight.x() - mFrameWidth, topLeft.y() - mFrameWidth, width + 2*mFrameWidth, height + 2*mFrameWidth);
-}
+
+
+
+#include "UBGraphicsDelegateFrame.h"
+
+#include <QtGui>
+#include <QtSvg>
+
+#include "core/UBApplication.h"
+#include "core/UBSettings.h"
+
+#include "board/UBBoardController.h"
+#include "board/UBBoardView.h"
+
+#include "domain/UBGraphicsItemDelegate.h"
+#include "domain/UBGraphicsScene.h"
+#include "domain/UBGraphicsProxyWidget.h"
+
+#include "gui/UBResources.h"
+
+#include "core/memcheck.h"
+
+UBGraphicsDelegateFrame::UBGraphicsDelegateFrame(UBGraphicsItemDelegate* pDelegate, QRectF pRect, qreal pFrameWidth, bool respectRatio)
+    : QGraphicsRectItem(), QObject(pDelegate)
+    , mCurrentTool(None)
+    , mDelegate(pDelegate)
+    , mVisible(true)
+    , mFrameWidth(pFrameWidth)
+    , mNominalFrameWidth(pFrameWidth)
+    , mRespectRatio(respectRatio)
+    , mAngle(0)
+    , mAngleOffset(0)
+    , mTotalScaleX(-1)
+    , mTotalScaleY(-1)
+    , mTranslateX(0)
+    , mTranslateY(0)
+    , mTotalTranslateX(0)
+    , mTotalTranslateY(0)
+    , mOperationMode(Scaling)
+    , mFlippedX(false)
+    , mFlippedY(false)
+    , mMirrorX(false)
+    , mMirrorY(false)
+{
+    mAngleTolerance = UBSettings::settings()->angleTolerance->get().toReal();
+
+    setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
+
+    setAcceptedMouseButtons(Qt::LeftButton);
+    setRect(pRect.adjusted(mFrameWidth, mFrameWidth, mFrameWidth * -1, mFrameWidth * -1));
+
+    setBrush(QBrush(UBSettings::paletteColor));
+    setPen(Qt::NoPen);
+    setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
+
+    mBottomRightResizeGripSvgItem = new QGraphicsSvgItem(":/images/resize.svg", this);
+    mBottomResizeGripSvgItem = new QGraphicsSvgItem(":/images/resizeBottom.svg", this);
+    mLeftResizeGripSvgItem = new QGraphicsSvgItem(":/images/resizeLeft.svg", this);
+    mRightResizeGripSvgItem = new QGraphicsSvgItem(":/images/resizeRight.svg", this);
+    mTopResizeGripSvgItem = new QGraphicsSvgItem(":/images/resizeTop.svg", this);
+
+    mBottomRightResizeGrip = new QGraphicsRectItem(this);
+    mBottomRightResizeGrip->setPen(Qt::NoPen);
+    mBottomResizeGrip = new QGraphicsRectItem(this);
+    mBottomResizeGrip->setPen(Qt::NoPen);
+    mLeftResizeGrip = new QGraphicsRectItem(this);
+    mLeftResizeGrip->setPen(Qt::NoPen);
+    mRightResizeGrip = new QGraphicsRectItem(this);
+    mRightResizeGrip->setPen(Qt::NoPen);
+    mTopResizeGrip = new QGraphicsRectItem(this);
+    mTopResizeGrip->setPen(Qt::NoPen);
+
+    mRotateButton = new QGraphicsSvgItem(":/images/rotate.svg", this);
+    mRotateButton->setCursor(UBResources::resources()->rotateCursor);
+    mRotateButton->setVisible(mDelegate->canRotate());
+
+    updateResizeCursors();
+
+    setAntiScale(1.0);
+
+    positionHandles();
+
+    this->setAcceptHoverEvents(true);
+}
+
+
+UBGraphicsDelegateFrame::~UBGraphicsDelegateFrame()
+{
+    // NOOP
+}
+
+void UBGraphicsDelegateFrame::setAntiScale(qreal pAntiScale)
+{
+    mFrameWidth = mNominalFrameWidth * pAntiScale;
+
+    QTransform tr;
+    tr.scale(pAntiScale, pAntiScale);
+
+    mBottomRightResizeGripSvgItem->setTransform(tr);
+    mBottomResizeGripSvgItem->setTransform(tr);
+    mLeftResizeGripSvgItem->setTransform(tr);
+    mRightResizeGripSvgItem->setTransform(tr);
+    mTopResizeGripSvgItem->setTransform(tr);
+    mRotateButton->setTransform(tr);
+}
+
+
+void UBGraphicsDelegateFrame::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+    Q_UNUSED(option);
+    Q_UNUSED(widget);
+
+    QPainterPath path;
+    path.addRoundedRect(rect(), mFrameWidth / 2, mFrameWidth / 2);
+
+    if (rect().width() > 1 && rect().height() > 1)
+    {
+        QPainterPath extruded;
+        extruded.addRect(rect().adjusted(mFrameWidth, mFrameWidth, (mFrameWidth * -1), (mFrameWidth * -1)));
+        path = path.subtracted(extruded);
+    }
+
+    painter->fillPath(path, brush());
+}
+
+
+QPainterPath UBGraphicsDelegateFrame::shape() const
+{
+    QPainterPath path;
+
+    //We do not use the rounded rect here because we want the bottom right corner
+    //to be included in the frame (for resize grip handling : #702)
+    path.addRect(rect());
+
+    if (rect().width() > 0 && rect().height() > 0)
+    {
+        QPainterPath extruded;
+        extruded.addRect(rect().adjusted(mFrameWidth, mFrameWidth, mFrameWidth * -1, mFrameWidth * -1));
+        path = path.subtracted(extruded);
+    }
+
+    return path;
+}
+
+
+void UBGraphicsDelegateFrame::initializeTransform()
+{
+    QTransform itemTransform = delegated()->sceneTransform();
+    QRectF itemRect = delegated()->boundingRect();
+    QPointF topLeft = itemTransform.map(itemRect.topLeft());
+    QPointF topRight = itemTransform.map(itemRect.topRight());
+    QPointF  bottomLeft = itemTransform.map(itemRect.bottomLeft());
+
+    qreal horizontalFlip = (topLeft.x() > topRight.x()) ? -1 : 1;
+    mMirrorX = horizontalFlip < 0 ;
+    if(horizontalFlip < 0){
+        // why this is because of the way of calculating the translations that checks which side is the most is the
+        // nearest instead of checking which one is the left side.
+        QPointF tmp = topLeft;
+        topLeft = topRight;
+        topRight = tmp;
+
+        // because of the calculation of the height is done by lenght and not deltaY
+        bottomLeft = itemTransform.map(itemRect.bottomRight());
+    }
+
+    qreal verticalFlip = (bottomLeft.y() < topLeft.y()) ? -1 : 1;
+    // not sure that is usefull
+    mMirrorY = verticalFlip < 0;
+    if(verticalFlip < 0 && !mMirrorX){
+        topLeft = itemTransform.map(itemRect.bottomLeft());
+        topRight = itemTransform.map(itemRect.bottomRight());
+        bottomLeft = itemTransform.map(itemRect.topLeft());
+    }
+
+    QLineF topLine(topLeft, topRight);
+    QLineF leftLine(topLeft, bottomLeft);
+    qreal width = topLine.length();
+    qreal height = leftLine.length();
+
+    mAngle = topLine.angle();
+
+    // the fact the the length is used we loose the horizontalFlip information
+    // a better way to do this is using DeltaX that preserve the direction information.
+    mTotalScaleX = (width / itemRect.width()) * horizontalFlip;
+    mTotalScaleY = height / itemRect.height() * verticalFlip;
+
+    QTransform tr;
+    QPointF center = delegated()->boundingRect().center();
+    tr.translate(center.x() * mTotalScaleX, center.y() * mTotalScaleY);
+    tr.rotate(-mAngle);
+    tr.translate(-center.x() * mTotalScaleX, -center.y() * mTotalScaleY);
+    tr.scale(mTotalScaleX, mTotalScaleY);
+
+    mTotalTranslateX = delegated()->transform().dx() - tr.dx();
+    mTotalTranslateY = delegated()->transform().dy() - tr.dy();
+}
+
+
+void UBGraphicsDelegateFrame::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+    mDelegate->startUndoStep();
+
+    mStartingPoint = event->scenePos();
+
+    initializeTransform();
+
+    mScaleX = 1;
+    mScaleY = 1;
+    mTranslateX = 0;
+    mTranslateY = 0;
+    mAngleOffset = 0;
+
+    mInitialTransform = buildTransform();
+    mOriginalSize = delegated()->boundingRect().size();
+
+    mCurrentTool = toolFromPos(event->pos());
+    setCursorFromAngle(QString::number((int)mAngle % 360));
+    event->accept();
+
+    if (moving())
+        prepareFramesToMove(getLinkedFrames());
+
+}
+
+void UBGraphicsDelegateFrame::setCursorFromAngle(QString angle)
+{
+    if (mCurrentTool == Rotate)
+    {
+        QWidget *controlViewport = UBApplication::boardController->controlView()->viewport();
+
+        QSize cursorSize(45,30);
+
+
+        QImage mask_img(cursorSize, QImage::Format_Mono);
+        mask_img.fill(0xff);
+        QPainter mask_ptr(&mask_img);
+        mask_ptr.setBrush( QBrush( QColor(0, 0, 0) ) );
+        mask_ptr.drawRoundedRect(0,0, cursorSize.width()-1, cursorSize.height()-1, 6, 6);
+        QBitmap bmpMask = QBitmap::fromImage(mask_img);
+
+
+        QPixmap pixCursor(cursorSize);
+        pixCursor.fill(QColor(Qt::white));
+
+        QPainter painter(&pixCursor);
+
+        painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
+        painter.setBrush(QBrush(Qt::white));
+        painter.setPen(QPen(QColor(Qt::black)));
+        painter.drawRoundedRect(1,1,cursorSize.width()-2,cursorSize.height()-2,6,6);
+        painter.setFont(QFont("Arial", 10));
+        painter.drawText(1,1,cursorSize.width(),cursorSize.height(), Qt::AlignCenter, angle.append(QChar(176)));
+        painter.end();
+
+        pixCursor.setMask(bmpMask);
+        controlViewport->setCursor(pixCursor);
+    }
+}
+
+
+bool UBGraphicsDelegateFrame::canResizeBottomRight(qreal width, qreal height, qreal scaleFactor)
+{
+    bool res = false;
+
+    if(!mMirrorX && !mMirrorX && ((width * scaleFactor) > 2*mFrameWidth && (height * scaleFactor) > 2*mFrameWidth)){
+        res = true;
+    }else if(mMirrorX && !mMirrorY && (-width * scaleFactor) > 2*mFrameWidth && (height*scaleFactor) > 2*mFrameWidth){
+        res = true;
+    }else if(!mMirrorX && mMirrorY && (width * scaleFactor) > 2*mFrameWidth && (-height*scaleFactor) > 2*mFrameWidth){
+        res = true;
+    }else if(mMirrorX && mMirrorY && (-width * scaleFactor) > 2*mFrameWidth && (-height*scaleFactor) > 2*mFrameWidth){
+        res = true;
+    }
+
+    return res;
+}
+
+QPointF UBGraphicsDelegateFrame::getFixedPointFromPos()
+{
+    QPointF fixedPoint;
+    if (!moving() && !rotating())
+    {
+        if (resizingTop())
+        {
+            if (mMirrorX && mMirrorY)
+            {
+                if ((0 < mAngle) && (mAngle < 90))
+                    fixedPoint = delegated()->sceneBoundingRect().topLeft();
+                else
+                    fixedPoint = delegated()->sceneBoundingRect().topRight();
+            }
+            else
+            {
+                if ((0 < mAngle) && (mAngle <= 90))
+                    fixedPoint = delegated()->sceneBoundingRect().bottomRight();
+                else
+                    fixedPoint = delegated()->sceneBoundingRect().bottomLeft();
+            }
+        }
+        else if (resizingLeft())
+        {
+            if (mMirrorX && mMirrorY)
+            {
+                if ((0 < mAngle) && (mAngle < 90))
+                    fixedPoint = delegated()->sceneBoundingRect().bottomLeft();
+                else
+                    fixedPoint = delegated()->sceneBoundingRect().topLeft();
+            }
+            else
+            {
+                if ((0 < mAngle) && (mAngle <= 90))
+                    fixedPoint = delegated()->sceneBoundingRect().topRight();
+                else
+                    fixedPoint = delegated()->sceneBoundingRect().bottomRight();
+            }
+        }
+    }
+    return fixedPoint;
+}
+
+
+QSizeF UBGraphicsDelegateFrame::getResizeVector(qreal moveX, qreal moveY)
+{
+    qreal dPosX = 0;
+    qreal dPosY = 0;
+
+    if (resizingTop())
+    {
+        if (mMirrorX && mMirrorY)
+            dPosY = moveY;
+        else
+            dPosY = -moveY;
+    }
+    else if (resizingLeft())
+    {
+        if (mMirrorX && mMirrorY)
+            dPosX = moveX;
+        else
+            dPosX = -moveX;
+    }
+
+    else if (resizingRight())
+        dPosX = (mMirrorX) ?  -moveX : moveX;
+    else if (resizingBottom())
+        dPosY = mMirrorY ? -moveY : moveY;
+
+    return QSizeF(dPosX, dPosY);
+}
+
+QSizeF UBGraphicsDelegateFrame::resizeDelegate(qreal moveX, qreal moveY)
+{
+    QSizeF incVector;
+    mFixedPoint = getFixedPointFromPos();
+
+    UBResizableGraphicsItem* resizableItem = dynamic_cast<UBResizableGraphicsItem*>(delegated());
+    if (resizableItem)
+    {
+        incVector = getResizeVector(moveX, moveY);
+        resizableItem->resize(mOriginalSize + incVector);
+
+        if (resizingTop() || resizingLeft() || ((mMirrorX || mMirrorY) && resizingBottomRight()))
+        {
+            QPointF pos1 = getFixedPointFromPos();
+            delegated()->setPos(delegated()->pos()-pos1+mFixedPoint);
+        }
+    }
+
+    return incVector;
+}
+
+void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
+{
+    if (None == mCurrentTool)
+        return;
+
+    QLineF move = QLineF(mStartingPoint, event->scenePos());
+    qreal moveX = move.length() * cos((move.angle() - mAngle) * PI / 180);
+    qreal moveY = -move.length() * sin((move.angle() - mAngle) * PI / 180);
+    qreal width = delegated()->boundingRect().width() * mTotalScaleX;
+    qreal height = delegated()->boundingRect().height() * mTotalScaleY;
+
+    if (mOperationMode == Scaling)
+    {
+        if(!rotating())
+        {
+            mTranslateX = moveX;
+            // Perform the resize
+            if (resizingBottomRight())
+            {
+                // -----------------------------------------------------
+                // ! We want to keep the aspect ratio with this resize !
+                // -----------------------------------------------------
+                qreal scaleX;
+                qreal scaleY;
+
+                if(!mMirrorX){
+                    scaleX = (width + moveX) / width;
+                }else{
+                    scaleX = (width - moveX) / width;
+                }
+
+                if(!mMirrorY){
+                    scaleY = (height + moveY) / height;
+                }else{
+                    scaleY = (height - moveY) / height;
+                }
+
+                qreal scaleFactor = (scaleX + scaleY) / 2;
+
+                // Do not allow resizing of image size under frame size
+                if (canResizeBottomRight(width, height, scaleFactor))
+                {
+                    if (mRespectRatio)
+                    {
+                        mScaleX = scaleFactor;
+                        mScaleY = scaleFactor;
+                    }
+                    else
+                    {
+                        mScaleX = scaleX;
+                        mScaleY = scaleY;
+                    }
+                }
+            }else if (resizingLeft() || resizingRight())
+            {
+                if(width != 0){
+                    qreal scaleX = 0.0;
+                    if(resizingLeft()){
+                        scaleX = (width - moveX) / width;
+                    }else if(resizingRight()){
+                        scaleX = (width + moveX) / width;
+                    }
+                    if(mDelegate->isFlippable() && qAbs(scaleX) != 0){
+                        if((qAbs(width * scaleX)) < 2*mFrameWidth){
+                            bool negative = (scaleX < 0)?true:false;
+                            if(negative){
+                                if(mMirrorX)
+                                    scaleX = 2*mFrameWidth/width;
+                                else
+                                    scaleX = -2*mFrameWidth/width;
+                            }else{
+                                scaleX = -1;
+                                mFlippedX = !mFlippedX;
+                            }
+                        }
+                        mScaleX = scaleX;
+                    }else if (scaleX > 1 || (width * scaleX) > 2 * mFrameWidth){
+                        mScaleX = scaleX;
+                        if(resizingLeft()){
+                            mTranslateX = moveX;
+                        }
+                    }
+                }
+            }else if(resizingTop() || resizingBottom()){
+                if(height != 0){
+                    qreal scaleY = 0.0;
+                    if(resizingTop()){
+                        scaleY = (height - moveY) / height;
+                    }else if(resizingBottom()){
+                        scaleY = (height + moveY) / height;
+                    }
+
+                    if(mDelegate->isFlippable() && qAbs(scaleY) != 0){
+                        if((qAbs(height * scaleY)) < 2*mFrameWidth){
+                            bool negative = (scaleY < 0)?true:false;
+                            if(negative){
+                                if(mMirrorY)
+                                    scaleY = 2*mFrameWidth/width;
+                                else
+                                    scaleY = -2*mFrameWidth/width;
+                            }else{
+                                scaleY = -1;
+                                mFlippedY = !mFlippedY;
+                            }
+                        }
+                        mScaleY = scaleY;
+                    }else if (scaleY > 1 || (height * scaleY) > 2 * mFrameWidth)
+                    {
+                        mScaleY = scaleY;
+                        if(resizingTop()){
+                            mTranslateY = moveY;
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    if (rotating())
+    {
+        mTranslateX = 0;
+        mTranslateY = 0;
+
+        QLineF startLine(sceneBoundingRect().center(), event->lastScenePos());
+        QLineF currentLine(sceneBoundingRect().center(), event->scenePos());
+        mAngle += startLine.angleTo(currentLine);
+
+        if ((int)mAngle % 45 >= 45 - mAngleTolerance || (int)mAngle % 45 <= mAngleTolerance)
+        {
+            mAngle = qRound(mAngle / 45) * 45;
+            mAngleOffset += startLine.angleTo(currentLine);
+            if ((int)mAngleOffset % 360 > mAngleTolerance && (int)mAngleOffset % 360 < 360 - mAngleTolerance)
+            {
+                mAngle += mAngleOffset;
+                mAngleOffset = 0;
+            }
+        }
+        else if ((int)mAngle % 30 >= 30 - mAngleTolerance || (int)mAngle % 30 <= mAngleTolerance)
+        {
+            mAngle = qRound(mAngle / 30) * 30;
+            mAngleOffset += startLine.angleTo(currentLine);
+            if ((int)mAngleOffset % 360 > mAngleTolerance && (int)mAngleOffset % 360 < 360 - mAngleTolerance)
+            {
+                mAngle += mAngleOffset;
+                mAngleOffset = 0;
+            }
+        }
+
+        setCursorFromAngle(QString::number((int)mAngle % 360));
+    }
+    else if (moving())
+    {
+        mTranslateX = move.dx();
+        mTranslateY = move.dy();
+        moveLinkedItems(move);
+    }
+
+    if (mOperationMode == Scaling || moving() || rotating())
+    {
+        QTransform tr = buildTransform();
+
+        if (resizingRight() || resizingBottom() || resizingBottomRight())
+        {
+            QPointF ref;
+
+            // we just detects coordinates of corner before and after scaling and then moves object at diff between them.
+            if (resizingBottomRight() && (mMirrorX || mMirrorY))
+            {
+                if (mFlippedX && !mMirrorX && mFlippedY)// && !mMirrorY)
+                {
+                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().bottomLeft()).x() - tr.map(delegated()->boundingRect().bottomLeft()).x();
+                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().bottomLeft()).y() - tr.map(delegated()->boundingRect().bottomLeft()).y();
+                }
+                else if ((mFlippedX || mMirrorX) && (mFlippedY || mMirrorY))
+                {
+                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().bottomRight()).x() - tr.map(delegated()->boundingRect().bottomRight()).x();
+                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().bottomRight()).y() - tr.map(delegated()->boundingRect().bottomRight()).y();
+                }
+                else if (mFlippedX || mMirrorX)
+                {
+                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().topRight()).x() - tr.map(delegated()->boundingRect().topRight()).x();
+                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().topRight()).y() - tr.map(delegated()->boundingRect().topRight()).y();
+                }
+                else if (mFlippedY || mMirrorY)
+                {
+                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().bottomLeft()).x() - tr.map(delegated()->boundingRect().bottomLeft()).x();
+                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().bottomLeft()).y() - tr.map(delegated()->boundingRect().bottomLeft()).y();
+                }
+                else
+                {
+                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().bottomRight()).x() - tr.map(delegated()->boundingRect().bottomRight()).x();
+                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().bottomRight()).y() - tr.map(delegated()->boundingRect().bottomRight()).y();
+                }
+            }
+            else
+            {
+                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().topLeft()).x() - tr.map(delegated()->boundingRect().topLeft()).x();
+                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().topLeft()).y() - tr.map(delegated()->boundingRect().topLeft()).y();
+            }
+        }
+        else if (resizingTop() || resizingLeft())
+        {
+            QPointF bottomRight = tr.map(delegated()->boundingRect().bottomRight());
+            QPointF fixedPoint = mInitialTransform.map(delegated()->boundingRect().bottomRight());
+            mTranslateX += fixedPoint.x() - bottomRight.x();
+            mTranslateY += fixedPoint.y() - bottomRight.y();
+        }
+        delegated()->setTransform(buildTransform());
+    }
+    else // resizing/resizing horizontally
+    {
+
+        if (resizingBottomRight())
+        {
+            static QSizeF incV = QSizeF();
+            static QSizeF incH = QSizeF();
+
+            if (mMirrorX && mMirrorY)
+                mCurrentTool = ResizeTop;
+            else
+                mCurrentTool = ResizeBottom;
+
+            incV = resizeDelegate(moveX, moveY);
+            mOriginalSize += incV;
+
+            if (mMirrorX && mMirrorY)
+                mCurrentTool = ResizeLeft;
+            else
+                mCurrentTool = ResizeRight;
+
+            move = QLineF(event->lastScenePos(), event->scenePos());
+            moveX = move.length() * cos((move.angle() - mAngle) * PI / 180);
+            moveY = -move.length() * sin((move.angle() - mAngle) * PI / 180);
+
+            mFixedPoint = getFixedPointFromPos();
+
+            incH = resizeDelegate(moveX, moveY);
+
+            mOriginalSize -= incV;
+            mOriginalSize += incH;
+
+            mCurrentTool = ResizeBottomRight;
+        }
+        else
+            resizeDelegate(moveX, moveY);
+    }
+    event->accept();
+}
+
+QList<UBGraphicsDelegateFrame *> UBGraphicsDelegateFrame::getLinkedFrames()
+{
+    QList<UBGraphicsDelegateFrame*> linkedFrames;
+    QList<QGraphicsItem*> sItems = mDelegate->delegated()->scene()->selectedItems();
+    if (sItems.count())
+    {
+        sItems.removeAll(delegated());
+
+        foreach(QGraphicsItem *item, sItems)
+        {
+            UBGraphicsItem *gitem = dynamic_cast<UBGraphicsItem*>(item);
+            if (gitem)
+                linkedFrames << gitem->Delegate()->frame();
+        }
+    }
+    return linkedFrames;
+}
+
+void UBGraphicsDelegateFrame::prepareFramesToMove(QList<UBGraphicsDelegateFrame *> framesToMove)
+{
+    mLinkedFrames = framesToMove;
+    foreach (UBGraphicsDelegateFrame *frame, mLinkedFrames)
+    {
+        frame->prepareLinkedFrameToMove();
+    }
+}
+
+void UBGraphicsDelegateFrame::prepareLinkedFrameToMove()
+{
+    mDelegate->startUndoStep();
+
+    mStartingPoint = QPointF(0,0);
+
+    initializeTransform();
+
+    mScaleX = 1;
+    mScaleY = 1;
+    mTranslateX = 0;
+    mTranslateY = 0;
+    mAngleOffset = 0;
+
+    mInitialTransform = buildTransform();
+
+    mCurrentTool = Move;
+}
+
+void UBGraphicsDelegateFrame::moveLinkedItems(QLineF movingVector, bool bLinked)
+{
+    if (bLinked)
+    {
+        mCurrentTool = Move;
+
+        mTranslateX = movingVector.dx();
+        mTranslateY = movingVector.dy();
+
+        delegated()->setTransform(buildTransform(), false);
+    }
+    else
+    {
+        foreach(UBGraphicsDelegateFrame* frame, mLinkedFrames)
+        {
+           frame->moveLinkedItems(movingVector, true);
+        }
+    }
+}
+
+QTransform UBGraphicsDelegateFrame::buildTransform()
+{
+    QTransform tr;
+    QPointF center = delegated()->boundingRect().center();
+
+    // Translate
+    tr.translate(mTotalTranslateX + mTranslateX, mTotalTranslateY + mTranslateY);
+
+    // Set angle
+    tr.translate(center.x() * mTotalScaleX * mScaleX, center.y() * mTotalScaleY * mScaleY);
+    tr.rotate(-mAngle);
+    tr.translate(-center.x() * mTotalScaleX * mScaleX, -center.y() * mTotalScaleY * mScaleY);
+
+    // Scale
+    tr.scale(mTotalScaleX * mScaleX, mTotalScaleY * mScaleY);
+    return tr;
+}
+
+
+void UBGraphicsDelegateFrame::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+{
+    updateResizeCursors();
+
+    mDelegate->commitUndoStep();
+    mTotalScaleX *= mScaleX;
+    mTotalScaleY *= mScaleY;
+    mTotalTranslateX += mTranslateX;
+    mTotalTranslateY += mTranslateY;
+    event->accept();
+
+    mCurrentTool = None;
+
+    QGraphicsRectItem::mouseReleaseEvent(event);
+
+    // Show the buttons
+    if(isResizing()){
+        mResizing = false;
+    }
+}
+
+
+void UBGraphicsDelegateFrame::updateResizeCursors()
+{
+    QPixmap pix(":/images/cursors/resize.png");
+    QTransform tr;
+
+    tr.rotate(-mAngle);
+    QCursor resizeCursor  = QCursor(pix.transformed(tr, Qt::SmoothTransformation), pix.width() / 2,  pix.height() / 2);
+    mLeftResizeGrip->setCursor(resizeCursor);
+    mRightResizeGrip->setCursor(resizeCursor);
+
+    tr.rotate(-90);
+    resizeCursor  = QCursor(pix.transformed(tr, Qt::SmoothTransformation), pix.width() / 2,  pix.height() / 2);
+    mBottomResizeGrip->setCursor(resizeCursor);
+    mTopResizeGrip->setCursor(resizeCursor);
+
+    tr.rotate(-45);
+    resizeCursor  = QCursor(pix.transformed(tr, Qt::SmoothTransformation), pix.width() / 2,  pix.height() / 2);
+    mBottomRightResizeGrip->setCursor(resizeCursor);
+}
+
+
+void UBGraphicsDelegateFrame::setVisible(bool visible)
+{
+    mVisible = visible;
+    if (mVisible)
+       setBrush(QBrush(UBSettings::paletteColor));
+    else
+       setBrush(Qt::NoBrush);
+}
+
+
+void UBGraphicsDelegateFrame::positionHandles()
+{
+    QRectF itemRect = delegated()->boundingRect();
+
+    if (mDelegate->getToolBarItem() && mDelegate->getToolBarItem()->isVisibleOnBoard()
+        && mDelegate->getToolBarItem()->isShifting())
+    {
+        QPointF graphicsItemPosition = itemRect.topLeft();
+        itemRect.setTopLeft(graphicsItemPosition-QPointF(0,mDelegate->getToolBarItem()->boundingRect().height()* mDelegate->antiScaleRatio()));
+    }
+
+    QTransform itemTransform = delegated()->sceneTransform();
+    QPointF topLeft = itemTransform.map(itemRect.topLeft());
+    QPointF topRight = itemTransform.map(itemRect.topRight());
+    QPointF bottomLeft = itemTransform.map(itemRect.bottomLeft());
+    QPointF bottomRight = itemTransform.map(itemRect.bottomRight());
+    QPointF center = itemTransform.map(itemRect.center());
+    int rotateHeight = QLineF(topLeft, bottomLeft).length();
+
+    // Handle the mirroring
+    if(topLeft.x() > topRight.x()){
+        QPointF topTmp = topRight;
+        QPointF bottomTmp = bottomRight;
+        topRight = topLeft;
+        topLeft = topTmp;
+        bottomRight = bottomLeft;
+        bottomLeft = bottomTmp;
+    }
+
+    if(bottomLeft.y() > topLeft.y()){
+        QPointF leftTmp = bottomLeft;
+        QPointF rightTmp = bottomRight;
+        bottomLeft = topLeft;
+        topLeft = leftTmp;
+        bottomRight = topRight;
+        topRight = rightTmp;
+    }
+
+    QLineF topLine(topLeft, topRight);
+    qreal angle = topLine.angle();
+    qreal width = topLine.length();
+
+    QLineF leftLine(topLeft, bottomLeft);
+    qreal height = leftLine.length();
+
+    int h = rotating()?rotateHeight:height;
+
+    if (mVisible)
+    {
+        setRect(center.x() - mFrameWidth - width / 2, center.y() - mFrameWidth - h / 2, width + 2 * mFrameWidth, h + 2 * mFrameWidth);
+    }
+    else
+    {
+        setRect(center.x() - width / 2, center.y() - h / 2, width, h);
+    }
+
+    resetTransform();
+    translate(center.x(), center.y());
+    rotate(-angle);
+    translate(-center.x(), -center.y());
+
+    mBottomRightResizeGripSvgItem->setParentItem(this);
+    mBottomResizeGripSvgItem->setParentItem(this);
+    mLeftResizeGripSvgItem->setParentItem(this);
+    mRightResizeGripSvgItem->setParentItem(this);
+    mTopResizeGripSvgItem->setParentItem(this);
+    mRotateButton->setParentItem(this);
+
+    mBottomRightResizeGrip->setParentItem(this);
+    mBottomResizeGrip->setParentItem(this);
+    mLeftResizeGrip->setParentItem(this);
+    mRightResizeGrip->setParentItem(this);
+    mTopResizeGrip->setParentItem(this);
+
+    QRectF brRect = mBottomRightResizeGripSvgItem->mapRectToParent(mBottomRightResizeGripSvgItem->boundingRect());
+    QRectF bRect = mBottomResizeGripSvgItem->mapRectToParent(mBottomResizeGripSvgItem->boundingRect());
+    QRectF lRect = mLeftResizeGripSvgItem->mapRectToParent(mLeftResizeGripSvgItem->boundingRect());
+    QRectF rRect = mRightResizeGripSvgItem->mapRectToParent(mRightResizeGripSvgItem->boundingRect());
+    QRectF trRect = mTopResizeGripSvgItem->mapRectToParent(mTopResizeGripSvgItem->boundingRect());
+
+    mBottomRightResizeGripSvgItem->setPos(rect().right() - brRect.width(), rect().bottom() - brRect.height());
+    mBottomResizeGripSvgItem->setPos(rect().center().x() - bRect.width() / 2, rect().bottom() - bRect.height());
+
+    mLeftResizeGripSvgItem->setPos(rect().left(), rect().center().y() - lRect.height() / 2);
+    mRightResizeGripSvgItem->setPos(rect().right() - rRect.width(), rect().center().y() - rRect.height() / 2);
+
+    mTopResizeGripSvgItem->setPos(rect().center().x() - trRect.width() / 2, rect().y());
+    mRotateButton->setPos(rect().right() - mFrameWidth - 5, rect().top() + 5);
+
+    mBottomRightResizeGrip->setRect(bottomRightResizeGripRect());
+    mBottomResizeGrip->setRect(bottomResizeGripRect());
+    mLeftResizeGrip->setRect(leftResizeGripRect());
+    mRightResizeGrip->setRect(rightResizeGripRect());
+    mTopResizeGrip->setRect(topResizeGripRect());
+
+    QVariant vLocked = delegated()->data(UBGraphicsItemData::ItemLocked);
+    bool isLocked = (vLocked.isValid() && vLocked.toBool());
+    bool bShowHorizontalResizers = ResizingHorizontally == mOperationMode;
+    bool bShowVerticalResizers   = ResizingHorizontally != mOperationMode;
+    bool bShowAllResizers        = Resizing == mOperationMode || Scaling == mOperationMode ;
+
+    mBottomRightResizeGripSvgItem->setVisible(!isLocked && bShowAllResizers);
+    mBottomResizeGripSvgItem->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
+    mLeftResizeGripSvgItem->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
+    mRightResizeGripSvgItem->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
+    mTopResizeGripSvgItem->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
+    mRotateButton->setVisible(mDelegate->canRotate() && !isLocked);
+
+    mBottomRightResizeGrip->setVisible(!isLocked && bShowAllResizers);
+    mBottomResizeGrip->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
+    mLeftResizeGrip->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
+    mRightResizeGrip->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
+    mTopResizeGrip->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
+
+    if (isLocked)
+    {
+        QColor baseColor = UBSettings::paletteColor;
+        baseColor.setAlphaF(baseColor.alphaF() / 3);
+        setBrush(QBrush(baseColor));
+    }
+    else
+    {
+        setBrush(QBrush(UBSettings::paletteColor));
+    }
+
+    //make frame interact like delegated item when selected. Maybe should be deleted if selection logic will change
+    setZValue(delegated()->zValue());
+}
+
+
+QGraphicsItem* UBGraphicsDelegateFrame::delegated()
+{
+    return mDelegate->delegated();
+}
+
+UBGraphicsDelegateFrame::FrameTool UBGraphicsDelegateFrame::toolFromPos(QPointF pos)
+{
+    if(mDelegate->isLocked())
+        return None;
+    else if (bottomRightResizeGripRect().contains(pos) && ResizingHorizontally != mOperationMode)
+        return ResizeBottomRight;
+    else if (bottomResizeGripRect().contains(pos) && ResizingHorizontally != mOperationMode){
+            if(mMirrorY){
+                return ResizeTop;
+            }else{
+                return ResizeBottom;
+            }
+        }
+    else if (leftResizeGripRect().contains(pos)){
+            if(mMirrorX){
+                return ResizeRight;
+            }else{
+                return ResizeLeft;
+            }
+            return ResizeLeft;
+        }
+    else if (rightResizeGripRect().contains(pos)){
+            if(mMirrorX){
+                return ResizeLeft;
+            }else{
+                return ResizeRight;
+            }
+        }
+    else if (topResizeGripRect().contains(pos) && ResizingHorizontally != mOperationMode){
+            if(mMirrorY){
+                return ResizeBottom;
+            }else{
+                return ResizeTop;
+            }
+        }
+    else if (rotateButtonBounds().contains(pos) && mDelegate && mDelegate->canRotate())
+        return Rotate;
+    else
+        return Move;
+}
+
+
+QRectF UBGraphicsDelegateFrame::bottomRightResizeGripRect() const
+{
+    return QRectF(rect().right() - mFrameWidth, rect().bottom() - mFrameWidth, mFrameWidth, mFrameWidth);
+}
+
+
+QRectF UBGraphicsDelegateFrame::bottomResizeGripRect() const
+{
+    return QRectF(rect().center().x() - mFrameWidth / 2, rect().bottom() - mFrameWidth, mFrameWidth, mFrameWidth);
+}
+
+
+QRectF UBGraphicsDelegateFrame::leftResizeGripRect() const
+{
+    return QRectF(rect().left(), rect().center().y() - mFrameWidth / 2, mFrameWidth, mFrameWidth);
+}
+
+
+QRectF UBGraphicsDelegateFrame::rightResizeGripRect() const
+{
+    return QRectF(rect().right() - mFrameWidth, rect().center().y() - mFrameWidth / 2, mFrameWidth, mFrameWidth);
+}
+
+
+QRectF UBGraphicsDelegateFrame::topResizeGripRect() const
+{
+    return QRectF(rect().center().x() - mFrameWidth / 2, rect().top(), mFrameWidth, mFrameWidth);
+}
+
+
+QRectF UBGraphicsDelegateFrame::rotateButtonBounds() const
+{
+    return QRectF(rect().right()- mFrameWidth, rect().top(), mFrameWidth, mFrameWidth);
+}
+
+void UBGraphicsDelegateFrame::refreshGeometry()
+{
+    // Here we want to have the left on the left, the right on the right, the top on the top and the bottom on the bottom!
+    QRectF itemRect = delegated()->boundingRect();
+    QTransform itemTransform = delegated()->sceneTransform();
+    QPointF topLeft = itemTransform.map(itemRect.topLeft());
+    QPointF topRight = itemTransform.map(itemRect.topRight());
+    QPointF bottomLeft = itemTransform.map(itemRect.bottomLeft());
+
+    QLineF topLine(topLeft, topRight);
+    qreal width = topLine.length();
+    QLineF leftLine(topLeft, bottomLeft);
+    qreal height = leftLine.length();
+    setRect(topRight.x() - mFrameWidth, topLeft.y() - mFrameWidth, width + 2*mFrameWidth, height + 2*mFrameWidth);
+}
diff --git a/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.h b/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.h
index f52a38e..bab9b99 100644
--- a/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.h
+++ b/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSDELEGATEFRAME_H_
 #define UBGRAPHICSDELEGATEFRAME_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.cpp b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.cpp
index 6ff7bd0..a936a4e 100644
--- a/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsGroupContainerItem.h"
 
 #include <QtGui>
@@ -30,6 +31,15 @@
 #include "domain/UBGraphicsGroupContainerItemDelegate.h"
 #include "domain/UBGraphicsScene.h"
 
+#include "document/UBDocumentProxy.h"
+#include "core/UBApplication.h"
+#include "document/UBDocumentController.h"
+#include "board/UBBoardController.h"
+#include "document/UBDocumentProxy.h"
+#include "customWidgets/UBGraphicsItemAction.h"
+#include "frameworks/UBFileSystemUtils.h"
+#include "core/UBPersistenceManager.h"
+
 #include "core/memcheck.h"
 
 UBGraphicsGroupContainerItem::UBGraphicsGroupContainerItem(QGraphicsItem *parent)
@@ -38,12 +48,13 @@ UBGraphicsGroupContainerItem::UBGraphicsGroupContainerItem(QGraphicsItem *parent
 {
     setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
 
-   	setDelegate(new UBGraphicsGroupContainerItemDelegate(this, 0));
+    setDelegate(new UBGraphicsGroupContainerItemDelegate(this, 0));
     Delegate()->init();
 
     setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
     setFlag(QGraphicsItem::ItemIsSelectable, true);
     setFlag(QGraphicsItem::ItemIsMovable, true);
+    Delegate()->setCanTrigAnAction(true);
 
     UBGraphicsGroupContainerItem::setAcceptHoverEvents(true);
 
@@ -56,7 +67,7 @@ UBGraphicsGroupContainerItem::~UBGraphicsGroupContainerItem()
 {
 }
 
-void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item)
+void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item,bool removeAction)
 {
     if (!item) {
         qWarning("UBGraphicsGroupContainerItem::addToGroup: cannot add null item");
@@ -67,6 +78,12 @@ void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item)
         return;
     }
 
+    //TODO claudio
+    UBGraphicsItem* ubGraphics = dynamic_cast<UBGraphicsItem*>(item);
+    if(ubGraphics && ubGraphics->Delegate() && removeAction)
+        ubGraphics->Delegate()->setAction(0);
+
+
     //Check if group is allready rotatable or flippable
     if (childItems().count()) {
         if (UBGraphicsItem::isFlippable(this) && !UBGraphicsItem::isFlippable(item)) {
@@ -139,7 +156,7 @@ void UBGraphicsGroupContainerItem::removeFromGroup(QGraphicsItem *item)
 
     UBCoreGraphicsScene *groupScene = corescene();
     if (groupScene)
-    {    
+    {
         groupScene->addItemToDeletion(item);
     }
 
@@ -164,7 +181,7 @@ void UBGraphicsGroupContainerItem::deselectCurrentItem()
               {
                   dynamic_cast<UBGraphicsMediaItem*>(mCurrentItem)->Delegate()->getToolBarItem()->hide();
               }
-              break;                   
+              break;
 
         }
         mCurrentItem->setSelected(false);
@@ -226,6 +243,14 @@ void UBGraphicsGroupContainerItem::copyItemParameters(UBItem *copy) const
         cp->setFlag(QGraphicsItem::ItemIsSelectable, true);
         cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
         cp->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
+        if(Delegate()->action()){
+            if(Delegate()->action()->linkType() == eLinkToAudio){
+                UBGraphicsItemPlayAudioAction* action = new UBGraphicsItemPlayAudioAction(Delegate()->action()->path());
+                cp->Delegate()->setAction(action);
+            }
+            else
+                cp->Delegate()->setAction(Delegate()->action());
+        }
     }
 }
 
@@ -352,7 +377,7 @@ void UBGraphicsGroupContainerItem::pRemoveFromGroup(QGraphicsItem *item)
 
     UBGraphicsScene *Scene = dynamic_cast<UBGraphicsScene *>(item->scene());
     if (Scene)
-    {    
+    {
         Scene->addItem(item);
     }
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.h b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.h
index 362e43d..ebbbefd 100644
--- a/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSGROUPCONTAINERITEM_H
 #define UBGRAPHICSGROUPCONTAINERITEM_H
 
@@ -35,7 +36,7 @@ public:
     UBGraphicsGroupContainerItem (QGraphicsItem *parent = 0);
     virtual ~UBGraphicsGroupContainerItem();
 
-    void addToGroup(QGraphicsItem *item);
+    void addToGroup(QGraphicsItem *item, bool removeAction=true);
     void removeFromGroup(QGraphicsItem *item);
     void setCurrentItem(QGraphicsItem *item){mCurrentItem = item;}
     QGraphicsItem *getCurrentItem() const {return mCurrentItem;}
diff --git a/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.cpp
index f016336..9c5875d 100644
--- a/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,17 +20,29 @@
  */
 
 
+
 #include "UBGraphicsGroupContainerItemDelegate.h"
 
 #include <QtGui>
 
 #include "UBGraphicsScene.h"
+
+#include "core/UBApplication.h"
+
+#include "board/UBBoardPaletteManager.h"
+
+
 #include "gui/UBResources.h"
+#include "gui/UBCreateLinkPalette.h"
 
 #include "domain/UBGraphicsDelegateFrame.h"
 #include "domain/UBGraphicsGroupContainerItem.h"
 
 #include "board/UBBoardController.h"
+#include "board/UBDrawingController.h"
+
+
+#include "customWidgets/UBGraphicsItemAction.h"
 
 #include "core/memcheck.h"
 
@@ -65,6 +77,54 @@ void UBGraphicsGroupContainerItemDelegate::decorateMenu(QMenu *menu)
     showIcon.addPixmap(QPixmap(":/images/eyeOpened.svg"), QIcon::Normal, QIcon::On);
     showIcon.addPixmap(QPixmap(":/images/eyeClosed.svg"), QIcon::Normal, QIcon::Off);
     mShowOnDisplayAction->setIcon(showIcon);
+
+    mShowPanelToAddAnAction = menu->addAction(tr("Add an action"),this,SLOT(onAddActionClicked()));
+}
+
+//TODO claudio
+// duplicated code UBGraphicsDelegateItem
+void UBGraphicsGroupContainerItemDelegate::onAddActionClicked()
+{
+    UBCreateLinkPalette* linkPalette = UBApplication::boardController->paletteManager()->linkPalette();
+    linkPalette->show();
+    connect(linkPalette,SIGNAL(definedAction(UBGraphicsItemAction*)),this,SLOT(saveAction(UBGraphicsItemAction*)));
+}
+
+//TODO claudio
+// duplicated code UBGraphicsDelegateItem
+void UBGraphicsGroupContainerItemDelegate::saveAction(UBGraphicsItemAction* action)
+{
+    mAction = action;
+    mMenu->removeAction(mShowPanelToAddAnAction);
+    QString actionLabel;
+    switch (mAction->linkType()) {
+    case eLinkToAudio:
+        actionLabel= tr("Remove link to audio");
+        break;
+    case eLinkToPage:
+        actionLabel = tr("Remove link to page");
+        break;
+    case eLinkToWebUrl:
+        actionLabel = tr("Remove link to web url");
+    default:
+        break;
+    }
+
+    mRemoveAnAction = mMenu->addAction(actionLabel,this,SLOT(onRemoveActionClicked()));
+    mMenu->addAction(mRemoveAnAction);
+}
+
+//TODO claudio
+// duplicated code UBGraphicsDelegateItem
+void UBGraphicsGroupContainerItemDelegate::onRemoveActionClicked()
+{
+    if(mAction){
+        mAction->actionRemoved();
+        delete mAction;
+        mAction = NULL;
+    }
+    mMenu->removeAction(mRemoveAnAction);
+    mMenu->addAction(mShowPanelToAddAnAction);
 }
 
 void UBGraphicsGroupContainerItemDelegate::buildButtons()
@@ -75,7 +135,15 @@ void UBGraphicsGroupContainerItemDelegate::buildButtons()
 bool UBGraphicsGroupContainerItemDelegate::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
     Q_UNUSED(event)
+    //TODO claudio
+    // another chunk of duplicated code
     delegated()->deselectCurrentItem();
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController()->stylusTool();
+    if(currentTool == UBStylusTool::Play){
+        if(mAction)
+            mAction->play();
+        return true;
+    }
     return false;
 }
 
@@ -92,3 +160,8 @@ bool UBGraphicsGroupContainerItemDelegate::mouseReleaseEvent(QGraphicsSceneMouse
 
     return false;
 }
+
+void UBGraphicsGroupContainerItemDelegate::setAction(UBGraphicsItemAction* action)
+{
+    UBGraphicsItemDelegate::setAction(action);
+}
diff --git a/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.h
index 496f002..25bd333 100644
--- a/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.h
+++ b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSGROUPCONTAINERITEMDELEGATE_H
 #define UBGRAPHICSGROUPCONTAINERITEMDELEGATE_H
 
@@ -34,6 +35,7 @@ Q_OBJECT
 public:
     UBGraphicsGroupContainerItemDelegate(QGraphicsItem* pDelegated, QObject * parent = 0);
     UBGraphicsGroupContainerItem *delegated();
+    void setAction(UBGraphicsItemAction* action);
 
 protected:
     virtual void decorateMenu(QMenu *menu);
@@ -45,6 +47,11 @@ protected:
 
 private:
     DelegateButton *mDestroyGroupButton;
+
+private slots:
+    void onAddActionClicked();
+    void onRemoveActionClicked();
+    void saveAction(UBGraphicsItemAction *action);
 };
 
 #endif // UBGRAPHICSGROUPCONTAINERITEMDELEGATE_H
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsItemDelegate.cpp
index 38127d8..a1f944b 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemDelegate.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsItemDelegate.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 #include <QtSvg>
 #include <QDrag>
@@ -33,6 +34,7 @@
 
 #include "board/UBBoardController.h" // TODO UB 4.x clean that dependency
 #include "board/UBBoardView.h" // TODO UB 4.x clean that dependency
+#include "board/UBBoardPaletteManager.h"
 
 #include "core/UBApplication.h"
 #include "core/UBApplicationController.h"
@@ -53,6 +55,10 @@
 #include "frameworks/UBFileSystemUtils.h"
 #include "board/UBDrawingController.h"
 
+#include "gui/UBCreateLinkPalette.h"
+
+#include "customWidgets/UBGraphicsItemAction.h"
+
 #include "core/memcheck.h"
 
 class UBGraphicsParaschoolEditorWidgetItem;
@@ -165,9 +171,11 @@ UBGraphicsItemDelegate::UBGraphicsItemDelegate(QGraphicsItem* pDelegated, QObjec
     , mFrameWidth(UBSettings::settings()->objectFrameWidth)
     , mAntiScaleRatio(1.0)
     , mToolBarItem(NULL)
+    , mAction(0)
     , mCanRotate(canRotate)
     , mCanDuplicate(true)
     , mRespectRatio(respectRatio)
+    , mCanTrigAnAction(false)
     , mMimeData(NULL)
     , mFlippable(false)
     , mToolBarUsed(useToolBar)
@@ -236,9 +244,7 @@ UBGraphicsItemDelegate::~UBGraphicsItemDelegate()
 
 QVariant UBGraphicsItemDelegate::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
 {
-    if(change == QGraphicsItem::ItemChildAddedChange){
-
-    }else if (change == QGraphicsItem::ItemSelectedHasChanged) {
+    if (change == QGraphicsItem::ItemSelectedHasChanged) {
         bool ok;
         bool selected = value.toUInt(&ok);
         if (ok) {
@@ -286,6 +292,8 @@ bool UBGraphicsItemDelegate::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
     mDragStartPosition = event->pos();
 
+    mMoved = false;
+
     startUndoStep();
 
     if (!delegated()->isSelected())
@@ -315,6 +323,7 @@ bool UBGraphicsItemDelegate::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
         }
         mDrag->exec();
         mDragPixmap = QPixmap();
+        mMoved = true;
         return true;
     }
     return false;
@@ -324,21 +333,23 @@ bool UBGraphicsItemDelegate::weelEvent(QGraphicsSceneWheelEvent *event)
 {
     Q_UNUSED(event);
     if( delegated()->isSelected() )
-    {
-//        event->accept();
         return true;
-    }
     else
-    {
-//        event->ignore();
         return false;
-    }
 }
 
 bool UBGraphicsItemDelegate::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
     Q_UNUSED(event);
 
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController()->stylusTool();
+    if(!mMoved && currentTool == UBStylusTool::Play)
+    {
+        if(mAction)
+            mAction->play();
+        return true;
+    }
+
     //Deselect all the rest selected items if no ctrl key modifier
     if (delegated()->scene()
             && delegated()->scene()->selectedItems().count()
@@ -358,17 +369,11 @@ bool UBGraphicsItemDelegate::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 void UBGraphicsItemDelegate::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
 {
     Q_UNUSED(event)
-//    if (!mDelegated->isSelected()) {
-//        setZOrderButtonsVisible(true);
-//    }
 }
 
 void UBGraphicsItemDelegate::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
 {
     Q_UNUSED(event)
-//    if (!mDelegated->isSelected()) {
-//        setZOrderButtonsVisible(false);
-//    }
 }
 
 QGraphicsItem *UBGraphicsItemDelegate::delegated()
@@ -439,22 +444,9 @@ void UBGraphicsItemDelegate::setZOrderButtonsVisible(bool visible)
 
 void UBGraphicsItemDelegate::remove(bool canUndo)
 {
-    /*UBGraphicsScene* scene = dynamic_cast<UBGraphicsScene*>(mDelegated->scene());
-    if (scene && canUndo)
-    {
-        UBGraphicsItemUndoCommand *uc = new UBGraphicsItemUndoCommand(scene, mDelegated, 0);
-        UBApplication::undoStack->push(uc);
-    }
-    mDelegated->hide();  */
-
     UBGraphicsScene* scene = dynamic_cast<UBGraphicsScene*>(mDelegated->scene());
     if (scene)
     {
-//        bool shownOnDisplay = mDelegated->data(UBGraphicsItemData::ItemLayerType).toInt() != UBItemLayerType::Control;
-//        showHide(shownOnDisplay);
-//        updateFrame();
-//        updateButtons();
-
         if (mFrame && !mFrame->scene() && mDelegated->scene())
         {
             mDelegated->scene()->addItem(mFrame);
@@ -639,6 +631,51 @@ void UBGraphicsItemDelegate::decorateMenu(QMenu* menu)
         sourceIcon.addPixmap(QPixmap(":/images/toolbar/internet.png"), QIcon::Normal, QIcon::On);
         mGotoContentSourceAction->setIcon(sourceIcon);
     }
+
+    if(mCanTrigAnAction)
+        mShowPanelToAddAnAction = menu->addAction(tr("Add an action"),this,SLOT(onAddActionClicked()));
+}
+
+void UBGraphicsItemDelegate::onAddActionClicked()
+{
+    UBCreateLinkPalette* linkPalette = UBApplication::boardController->paletteManager()->linkPalette();
+    linkPalette->show();
+    connect(linkPalette,SIGNAL(definedAction(UBGraphicsItemAction*)),this,SLOT(saveAction(UBGraphicsItemAction*)));
+}
+
+void UBGraphicsItemDelegate::saveAction(UBGraphicsItemAction* action)
+{
+    mAction = action;
+    mMenu->removeAction(mShowPanelToAddAnAction);
+    QString actionLabel;
+    switch (mAction->linkType()) {
+    case eLinkToAudio:
+        actionLabel= tr("Remove link to audio");
+        break;
+    case eLinkToPage:
+        actionLabel = tr("Remove link to page");
+        break;
+    case eLinkToWebUrl:
+        actionLabel = tr("Remove link to web url");
+    default:
+        break;
+    }
+
+    mRemoveAnAction = mMenu->addAction(actionLabel,this,SLOT(onRemoveActionClicked()));
+    mMenu->addAction(mRemoveAnAction);
+}
+
+void UBGraphicsItemDelegate::onRemoveActionClicked()
+{
+    if(mAction){
+        mAction->actionRemoved();
+        delete mAction;
+        mAction = NULL;
+    }
+    if(mRemoveAnAction && mMenu){
+        mMenu->removeAction(mRemoveAnAction);
+        mMenu->addAction(mShowPanelToAddAnAction);
+    }
 }
 
 void UBGraphicsItemDelegate::updateMenuActionState()
@@ -685,6 +722,11 @@ void UBGraphicsItemDelegate::setFlippable(bool flippable)
     }
 }
 
+void UBGraphicsItemDelegate::setCanTrigAnAction(bool canTrig)
+{
+    mCanTrigAnAction = canTrig;
+}
+
 void UBGraphicsItemDelegate::setRotatable(bool pCanRotate)
 {
     mCanRotate = pCanRotate;
@@ -734,7 +776,7 @@ void UBGraphicsItemDelegate::updateButtons(bool showUpdated)
             mDelegated->scene()->addItem(mDeleteButton);
     }
 
-    if (showUpdated /*&& mFrame->isResizing()*/)
+    if (showUpdated)
         mDeleteButton->show();
 
     int i = 1, j = 0, k = 0;
@@ -771,8 +813,24 @@ void UBGraphicsItemDelegate::setButtonsVisible(bool visible)
     }
 }
 
+void UBGraphicsItemDelegate::setAction(UBGraphicsItemAction* action)
+{
+    if(!action)
+        onRemoveActionClicked();
+    else{
+        setCanTrigAnAction(true);
+        if(!mMenu){
+            //TODO claudio
+            // Remove this very bad chunk of code
+            mMenu = new QMenu(UBApplication::boardController->controlView());
+            decorateMenu(mMenu);
+        }
+        saveAction(action);
+    }
+}
 
-UBGraphicsToolBarItem::UBGraphicsToolBarItem(QGraphicsItem * parent) : 
+
+UBGraphicsToolBarItem::UBGraphicsToolBarItem(QGraphicsItem * parent) :
     QGraphicsRectItem(parent),
     mShifting(true),
     mVisible(false),
@@ -785,7 +843,6 @@ UBGraphicsToolBarItem::UBGraphicsToolBarItem(QGraphicsItem * parent) :
     rect.setWidth(parent->boundingRect().width());
     this->setRect(rect);
 
-  //  setBrush(QColor(UBSettings::paletteColor));             
     setPen(Qt::NoPen);
     hide();
 
@@ -815,36 +872,40 @@ void UBGraphicsToolBarItem::paint(QPainter *painter, const QStyleOptionGraphicsI
     Q_UNUSED(widget);
 
     QPainterPath path;
-    path.addRoundedRect(rect(), 10, 10);  
+    path.addRoundedRect(rect(), 10, 10);
 
     setBrush(QBrush(UBSettings::paletteColor));
 
     painter->fillPath(path, brush());
 }
 
-MediaTimer::MediaTimer(QGraphicsItem * parent): QGraphicsRectItem(parent) 
+MediaTimer::MediaTimer(QGraphicsItem * parent): QGraphicsRectItem(parent)
 {
     val        = 0;
     smallPoint = false;
-    setNumDigits(4);
+    setNumDigits(6);
 }
 
 MediaTimer::~MediaTimer()
 {}
 
+void MediaTimer::positionHandles()
+{
+    digitSpace = smallPoint ? 2 : 1;
+    ySegLen    = rect().height()*5/12;
+    xSegLen    = ySegLen*2/3;
+    segLen     = xSegLen;
+    xAdvance   = segLen*(5 + digitSpace)/5;
+    xOffset    = (rect().width() - ndigits*xAdvance + segLen/5)/2;
+    yOffset    = rect().height() - ySegLen*2;
+
+    setRect(rect().x(), rect().y(), xOffset + xAdvance*ndigits, rect().height());
+}
+
 void MediaTimer::drawString(const QString &s, QPainter &p,
                                    QBitArray *newPoints, bool newString)
 {
     QPoint  pos;
-
-    int digitSpace = smallPoint ? 2 : 1;
-    int xSegLen    = (rect().width()/1)*5/(ndigits*(5 + digitSpace) + digitSpace);
-    int ySegLen    = rect().height()*5/12;
-    int segLen     = ySegLen > xSegLen ? xSegLen : ySegLen;
-    int xAdvance   = segLen*(5 + digitSpace)/5;
-    int xOffset    = rect().x() + (rect().width()/1 - ndigits*xAdvance + segLen/5)/2;
-    int yOffset    = (rect().height() - segLen*2)/2;
-
     for (int i=0;  i<ndigits; i++) {
         pos = QPoint(xOffset + xAdvance*i, yOffset);
         if (newString)
@@ -878,11 +939,11 @@ void MediaTimer::drawDigit(const QPoint &pos, QPainter &p, int segLen,
      int  nUpdates;
      const char *segs;
      int  i,j;
- 
+
      const char erase      = 0;
      const char draw       = 1;
      const char leaveAlone = 2;
- 
+
      segs = getSegments(oldCh);
      for (nErases=0; segs[nErases] != 99; nErases++) {
          updates[nErases][0] = erase;            // get segments to erase to
@@ -910,8 +971,8 @@ void MediaTimer::drawDigit(const QPoint &pos, QPainter &p, int segLen,
      }
 }
 
-char MediaTimer::segments [][8] = 
-        { 
+char MediaTimer::segments [][8] =
+        {
               { 0, 1, 2, 4, 5, 6,99, 0},             // 0    0
               { 2, 5,99, 0, 0, 0, 0, 0},             // 1    1
               { 0, 2, 3, 4, 6,99, 0, 0},             // 2    2
@@ -934,7 +995,7 @@ const char* MediaTimer::getSegments(char ch)               // gets list of segme
         return segments[10];
      if (ch == ' ')
         return segments[11];
-     
+
      return NULL;
 }
 
@@ -946,7 +1007,7 @@ void MediaTimer::drawSegment(const QPoint &pos, char segmentNo, QPainter &p,
     QPoint ppt;
     QPoint pt = pos;
     int width = segLen/5;
- 
+
 #define LINETO(X,Y) addPoint(a, QPoint(pt.x() + (X),pt.y() + (Y)))
 #define LIGHT
 #define DARK
@@ -1090,10 +1151,6 @@ void MediaTimer::paint(QPainter *p,
     Q_UNUSED(option);
     Q_UNUSED(widget);
 
-    QFont f = p->font();
-    f.setPointSizeF(f.pointSizeF());
-    p->setFont(f);
-
     if (smallPoint)
         drawString(digitStr, *p, &points, false);
     else
@@ -1178,7 +1235,7 @@ void MediaTimer::setNumDigits(int numDigits)
         numDigits = 0;
     }
     if (digitStr.isNull()) {                  // from constructor
-        ndigits = numDigits;
+        ndigits = numDigits + numDigits/2 - 1;
         digitStr.fill(QLatin1Char(' '), ndigits);
         points.fill(0, ndigits);
         digitStr[ndigits - 1] = QLatin1Char('0');            // "0" is the default number
@@ -1208,6 +1265,7 @@ void MediaTimer::setNumDigits(int numDigits)
         ndigits = numDigits;
         update();
     }
+    positionHandles();
 }
 
 DelegateMediaControl::DelegateMediaControl(UBGraphicsMediaItem* pDelegated, QGraphicsItem * parent)
@@ -1235,15 +1293,8 @@ void DelegateMediaControl::paint(QPainter *painter,
 {
     Q_UNUSED(option);
     Q_UNUSED(widget);
-    
-    QPainterPath path;
-
-    mLCDTimerArea.setHeight(rect().height());
-    mLCDTimerArea.setWidth(rect().height());
 
-    mSeecArea.setWidth(rect().width()-mLCDTimerArea.width()-2);
-    mSeecArea.setHeight(rect().height()-2*mSeecAreaBorderHeight);
-    mSeecArea.setY(mSeecAreaBorderHeight);
+    QPainterPath path;
 
     path.addRoundedRect(mSeecArea, mSeecArea.height()/2, mSeecArea.height()/2);
     painter->fillPath(path, brush());
@@ -1274,28 +1325,59 @@ QPainterPath DelegateMediaControl::shape() const
 
 void DelegateMediaControl::positionHandles()
 {
-    mLCDTimerArea.setWidth(parentItem()->boundingRect().height());
+    QRectF selfRect = rect();
+    selfRect.setHeight(parentItem()->boundingRect().height());
+    setRect(selfRect);
+
+    QTime tTotal;
+    tTotal = tTotal.addMSecs(mTotalTimeInMs);
+
     mLCDTimerArea.setHeight(parentItem()->boundingRect().height());
+
+    int digitsCount = 2;
+    int timerWidth = mLCDTimerArea.height();
+
+    mDisplayFormat = "ss";
+
+    if (tTotal.minute() > 0)
+    {
+        mDisplayFormat = "mm:" + mDisplayFormat;
+        digitsCount += 3;
+        timerWidth += mLCDTimerArea.height()*0.5;
+    }
+
+    if (tTotal.hour() > 0)
+    {
+        mDisplayFormat = "hh:" + mDisplayFormat;
+        digitsCount += 3;
+        timerWidth += mLCDTimerArea.height();
+    }
+
+    lcdTimer->setNumDigits(digitsCount);
+
+    mLCDTimerArea.setWidth(timerWidth);
+
     lcdTimer->setRect(mLCDTimerArea);
-    lcdTimer->setPos(mSeecArea.width()-mLCDTimerArea.width(),0);
+
+    // not the best solution, but it works.
+    lcdTimer->positionHandles();
+    mLCDTimerArea = lcdTimer->rect();
+    // -------------------------------------
+
+    lcdTimer->setPos(rect().width() - mLCDTimerArea.width(), 0);
 
     mSeecAreaBorderHeight = rect().height()/20;
     mSeecArea.setWidth(rect().width()-mLCDTimerArea.width()-2);
     mSeecArea.setHeight(rect().height()-2*mSeecAreaBorderHeight);
     mSeecArea.setY(mSeecAreaBorderHeight);
-
-    QRectF selfRect = rect();
-    selfRect.setHeight(parentItem()->boundingRect().height());
-    setRect(selfRect);
-
-    lcdTimer->setPos(rect().width() - mLCDTimerArea.width(), 0); 
 }
 
 void DelegateMediaControl::update()
 {
-    QTime t;
-    t = t.addMSecs(mCurrentTimeInMs < 0 ? 0 : mCurrentTimeInMs);
-    lcdTimer->display(t.toString("m:ss"));
+    QTime tCurrent;
+    tCurrent = tCurrent.addMSecs(mCurrentTimeInMs < 0 ? 0 : mCurrentTimeInMs);
+
+    lcdTimer->display(tCurrent.toString(mDisplayFormat));
 
     QGraphicsRectItem::update();
 }
@@ -1309,17 +1391,21 @@ void DelegateMediaControl::updateTicker(qint64 time )
 
 void DelegateMediaControl::totalTimeChanged(qint64 newTotalTime)
 {
-    mTotalTimeInMs = newTotalTime;
-    update();
+    if (mTotalTimeInMs != newTotalTime)
+    {
+        mTotalTimeInMs = newTotalTime;
+        positionHandles();
+        update();
+    }
 }
 
 
 void DelegateMediaControl::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
    qreal frameWidth =  mSeecArea.height()/2;
-    if (boundingRect().contains(event->pos() - QPointF(frameWidth,0)) 
+    if (boundingRect().contains(event->pos() - QPointF(frameWidth,0))
         && boundingRect().contains(event->pos() + QPointF(frameWidth,0)))
-    {  
+    {
         mDisplayCurrentTime = true;
         seekToMousePos(event->pos());
         this->update();
@@ -1331,9 +1417,9 @@ void DelegateMediaControl::mousePressEvent(QGraphicsSceneMouseEvent *event)
 void DelegateMediaControl::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
     qreal frameWidth = mSeecArea.height() / 2;
-    if (boundingRect().contains(event->pos() - QPointF(frameWidth,0)) 
+    if (boundingRect().contains(event->pos() - QPointF(frameWidth,0))
         && boundingRect().contains(event->pos() + QPointF(frameWidth,0)))
-    {   
+    {
         seekToMousePos(event->pos());
         this->update();
         event->accept();
@@ -1347,7 +1433,7 @@ void DelegateMediaControl::seekToMousePos(QPointF mousePos)
     qreal frameWidth = rect().height() / 2;
 
     minX = frameWidth;
-    length = mSeecArea.width() - lcdTimer->rect().width();
+    length = mSeecArea.width() - mSeecArea.height();
 
     qreal mouseX = mousePos.x();
     if (mouseX >= (mSeecArea.width() - mSeecArea.height()/2))
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsItemDelegate.h
index 16542a3..f7a4ab4 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemDelegate.h
+++ b/Sankore-3.1/src/domain/UBGraphicsItemDelegate.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSITEMDELEGATE_H_
 #define UBGRAPHICSITEMDELEGATE_H_
 
@@ -37,6 +38,7 @@ class UBGraphicsProxyWidget;
 class UBGraphicsDelegateFrame;
 class UBGraphicsWidgetItem;
 class UBGraphicsMediaItem;
+class UBGraphicsItemAction;
 
 class DelegateButton: public QGraphicsSvgItem
 {
@@ -103,10 +105,11 @@ public:
     MediaTimer(QGraphicsItem * parent = 0);
     ~MediaTimer();
 
+    void positionHandles();
     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
                 QWidget *widget);
-
     void display(const QString &str);
+    void setNumDigits(int nDigits);
 
 private:
 
@@ -116,7 +119,6 @@ private:
     void drawSegment(const QPoint &, char, QPainter &, int, bool = false);
     void addPoint(QPolygon&, const QPoint&);
     void internalSetString(const QString& s);
-    void setNumDigits(int nDigits);
 
     static char segments [][8];
 
@@ -127,6 +129,14 @@ private:
 
     uint shadow : 1;
     uint smallPoint : 1;
+
+    int digitSpace;
+    int xSegLen;
+    int ySegLen;
+    int segLen;
+    int xAdvance;
+    int xOffset;
+    int yOffset;
 };
 
 class DelegateMediaControl: public QObject, public QGraphicsRectItem
@@ -177,6 +187,8 @@ class DelegateMediaControl: public QObject, public QGraphicsRectItem
         QRectF mLCDTimerArea;
 
         MediaTimer *lcdTimer;
+
+        QString mDisplayFormat;
 };
 
 class UBGraphicsToolBarItem : public QGraphicsRectItem, public QObject
@@ -188,7 +200,7 @@ class UBGraphicsToolBarItem : public QGraphicsRectItem, public QObject
         bool isVisibleOnBoard() const { return mVisible; }
         void setVisibleOnBoard(bool visible) { mVisible = visible; }
         bool isShifting() const { return mShifting; }
-        void setShifting(bool shifting) { mShifting = shifting; } 
+        void setShifting(bool shifting) { mShifting = shifting; }
         QList<QGraphicsItem*> itemsOnToolBar() const { return mItemsOnToolBar; }
         void setItemsOnToolBar(QList<QGraphicsItem*> itemsOnToolBar) { mItemsOnToolBar = itemsOnToolBar;}
         int minWidth() { return mMinWidth; }
@@ -258,6 +270,8 @@ class UBGraphicsItemDelegate : public QObject
         void setRotatable(bool pCanRotate);
         bool isFlippable();
 
+        void setCanTrigAnAction(bool canTrig);
+
         void setButtonsVisible(bool visible);
 
         UBGraphicsToolBarItem* getToolBarItem() const { return mToolBarItem; }
@@ -265,6 +279,10 @@ class UBGraphicsItemDelegate : public QObject
         qreal antiScaleRatio() const { return mAntiScaleRatio; }
         virtual void update() {positionHandles();}
 
+        UBGraphicsItemAction* action() { return mAction; }
+        void setAction(UBGraphicsItemAction* action);
+
+
     signals:
         void showOnDisplayChanged(bool shown);
         void lockChanged(bool locked);
@@ -305,6 +323,8 @@ class UBGraphicsItemDelegate : public QObject
         QAction* mLockAction;
         QAction* mShowOnDisplayAction;
         QAction* mGotoContentSourceAction;
+        QAction* mShowPanelToAddAnAction;
+        QAction* mRemoveAnAction;
 
         UBGraphicsDelegateFrame* mFrame;
         qreal mFrameWidth;
@@ -314,6 +334,8 @@ class UBGraphicsItemDelegate : public QObject
         QList<DelegateButton*> mToolBarButtons;
         UBGraphicsToolBarItem* mToolBarItem;
 
+        UBGraphicsItemAction* mAction;
+
 protected slots:
         virtual void gotoContentSource();
 
@@ -331,6 +353,7 @@ private:
         bool mCanRotate;
         bool mCanDuplicate;
         bool mRespectRatio;
+        bool mCanTrigAnAction;
         QMimeData* mMimeData;
         QPixmap mDragPixmap;
 
@@ -339,6 +362,13 @@ private:
         bool mToolBarUsed;
 
         bool mShowGoContentButton;
+
+        bool mMoved;
+
+private slots:
+        void onAddActionClicked();
+        void onRemoveActionClicked();
+        void saveAction(UBGraphicsItemAction *action);
 };
 
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.cpp b/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.cpp
index da37dd2..25a3ebe 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsItemGroupUndoCommand.h"
 
 #include "UBGraphicsGroupContainerItem.h"
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.h b/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.h
index cc68a60..981ebb3 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.h
+++ b/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSITEMGROUPUNDOCOMMAND_H
 #define UBGRAPHICSITEMGROUPUNDOCOMMAND_H
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.cpp b/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.cpp
index 770315b..a40d991 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsItemTransformUndoCommand.h"
 #include "UBResizableGraphicsItem.h"
 #include "domain/UBItem.h"
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.h b/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.h
index 8fc57a4..aa586ec 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.h
+++ b/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSITEMTRANSFORMUNDOCOMMAND_H_
 #define UBGRAPHICSITEMTRANSFORMUNDOCOMMAND_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.cpp b/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.cpp
index ad306d5..1c7915c 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,221 +18,268 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBGraphicsItemUndoCommand.h"
-
-#include <QtGui>
-
-#include "UBGraphicsScene.h"
-
-#include "core/UBApplication.h"
-
-#include "board/UBBoardController.h"
-
-#include "core/memcheck.h"
-#include "domain/UBGraphicsGroupContainerItem.h"
-#include "domain/UBGraphicsPolygonItem.h"
-
-UBGraphicsItemUndoCommand::UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, const QSet<QGraphicsItem*>& pRemovedItems,
-                                                     const QSet<QGraphicsItem*>& pAddedItems, const GroupDataTable &groupsMap)
-    : mScene(pScene)
-    , mRemovedItems(pRemovedItems - pAddedItems)
-    , mAddedItems(pAddedItems - pRemovedItems)
-    , mExcludedFromGroup(groupsMap)
-{
-    mFirstRedo = true;
-
-    QSetIterator<QGraphicsItem*> itAdded(mAddedItems);
-    while (itAdded.hasNext())
-    {
-        UBApplication::boardController->freezeW3CWidget(itAdded.next(), true);
-    }
-
-    QSetIterator<QGraphicsItem*> itRemoved(mRemovedItems);
-    while (itRemoved.hasNext())
-    {
-        UBApplication::boardController->freezeW3CWidget(itRemoved.next(), false);
-    }
-}
-
-UBGraphicsItemUndoCommand::UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, QGraphicsItem* pRemovedItem,
-               QGraphicsItem* pAddedItem) :
-    mScene(pScene)
-{
-
-    if (pRemovedItem)
-    {
-        mRemovedItems.insert(pRemovedItem);
-    }
-
-    if (pAddedItem)
-    {
-        mAddedItems.insert(pAddedItem);
-    }
-
-    mFirstRedo = true;
-
-}
-
-UBGraphicsItemUndoCommand::~UBGraphicsItemUndoCommand()
-{
-   //NOOP
-}
-
-void UBGraphicsItemUndoCommand::undo()
-{
-    if (!mScene){
-        return;
-    }
-
-    QSetIterator<QGraphicsItem*> itAdded(mAddedItems);
-    while (itAdded.hasNext())
-    {
-        QGraphicsItem* item = itAdded.next();
-
-        UBApplication::boardController->freezeW3CWidget(item, true);
-        item->setSelected(false);
-        mScene->removeItem(item);
-    }
-
-    QSetIterator<QGraphicsItem*> itRemoved(mRemovedItems);
-    while (itRemoved.hasNext())
-    {
-        QGraphicsItem* item = itRemoved.next();
-        if (item)
-        {
-            if (UBItemLayerType::FixedBackground == item->data(UBGraphicsItemData::ItemLayerType))
-                mScene->setAsBackgroundObject(item);
-            else
-                mScene->addItem(item);
-
-            if (UBGraphicsPolygonItem::Type == item->type())
-            {
-                UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*>(item);
-                if (polygonItem)
-                {
-                    mScene->removeItem(polygonItem);
-                    mScene->removeItemFromDeletion(polygonItem);
-                    polygonItem->strokesGroup()->addToGroup(polygonItem);
-                }
-            }
-
-            UBApplication::boardController->freezeW3CWidget(item, false);
-        }
-    }
-
-    QMapIterator<UBGraphicsGroupContainerItem*, QUuid> curMapElement(mExcludedFromGroup);
-    UBGraphicsGroupContainerItem *nextGroup = NULL;
-    UBGraphicsGroupContainerItem *previousGroupItem = NULL;
-    bool groupChanged = false;
-
-    while (curMapElement.hasNext()) {
-        curMapElement.next();
-
-        groupChanged = previousGroupItem != curMapElement.key();
-        //trying to find the group on the scene;
-        if (!nextGroup || groupChanged) {
-            UBGraphicsGroupContainerItem *groupCandidate = curMapElement.key();
-            if (groupCandidate) {
-                nextGroup = groupCandidate;
-                if(!mScene->items().contains(nextGroup)) {
-                    mScene->addItem(nextGroup);
-                }
-                nextGroup->setVisible(true);
-            }
-        }
-
-        QGraphicsItem *groupedItem = mScene->itemForUuid(curMapElement.value());
-        if (groupedItem) {
-            nextGroup->addToGroup(groupedItem);
-        }
-
-        previousGroupItem = curMapElement.key();
-        UBGraphicsItem::Delegate(nextGroup)->update();
-    }
-
-    // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint
-    mScene->update(mScene->sceneRect());
-
-}
-
-void UBGraphicsItemUndoCommand::redo()
-{
-    // the Undo framework calls a redo while appending the undo command.
-    // as we have already plotted the elements, we do not want to do it twice
-    if (!mFirstRedo)
-    {
-        if (!mScene){
-            return;
-        }
-
-        QMapIterator<UBGraphicsGroupContainerItem*, QUuid> curMapElement(mExcludedFromGroup);
-        UBGraphicsGroupContainerItem *nextGroup = NULL;
-        UBGraphicsGroupContainerItem *previousGroupItem = NULL;
-        bool groupChanged = false;
-
-        while (curMapElement.hasNext()) {
-            curMapElement.next();
-
-            groupChanged = previousGroupItem != curMapElement.key();
-            //trying to find the group on the scene;
-            if (!nextGroup || groupChanged) {
-                UBGraphicsGroupContainerItem *groupCandidate = curMapElement.key();
-                if (groupCandidate) {
-                    nextGroup = groupCandidate;
-                }
-            }
-            QGraphicsItem *groupedItem = mScene->itemForUuid(curMapElement.value());
-            if (groupedItem) {
-                if (nextGroup->childItems().count() == 1) {
-                    nextGroup->destroy(false);
-                    break;
-                }
-                nextGroup->removeFromGroup(groupedItem);
-            }
-
-            previousGroupItem = curMapElement.key();
-            UBGraphicsItem::Delegate(nextGroup)->update();
-        }
-
-        QSetIterator<QGraphicsItem*> itRemoved(mRemovedItems);
-        while (itRemoved.hasNext())
-        {
-            QGraphicsItem* item = itRemoved.next();
-            item->setSelected(false);
-            mScene->removeItem(item);
-            UBApplication::boardController->freezeW3CWidget(item, true);
-        }
-
-        QSetIterator<QGraphicsItem*> itAdded(mAddedItems);
-        while (itAdded.hasNext())
-        {
-            QGraphicsItem* item = itAdded.next();
-            if (item)
-            {
-                UBApplication::boardController->freezeW3CWidget(item, false);
-
-                if (UBItemLayerType::FixedBackground == item->data(UBGraphicsItemData::ItemLayerType))
-                    mScene->setAsBackgroundObject(item);
-                else
-                    mScene->addItem(item);
-
-                UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*>(item);
-                if (polygonItem)
-                {   
-                    mScene->removeItem(polygonItem);
-                    mScene->removeItemFromDeletion(polygonItem);
-                    polygonItem->strokesGroup()->addToGroup(polygonItem);
-                }
-            }
-        }
-
-        // force refresh, QT is a bit lazy and take a lot of time (nb item ^2) to trigger repaint
-        mScene->update(mScene->sceneRect());
-    }
-    else
-    {
-        mFirstRedo = false;
-    }
-}
+
+
+
+#include "UBGraphicsItemUndoCommand.h"
+
+#include <QtGui>
+
+#include "UBGraphicsScene.h"
+
+#include "core/UBApplication.h"
+
+#include "board/UBBoardController.h"
+
+#include "core/memcheck.h"
+#include "domain/UBGraphicsGroupContainerItem.h"
+#include "domain/UBGraphicsPolygonItem.h"
+
+UBGraphicsItemUndoCommand::UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, const QSet<QGraphicsItem*>& pRemovedItems,
+                                                     const QSet<QGraphicsItem*>& pAddedItems, const GroupDataTable &groupsMap)
+    : mScene(pScene)
+    , mRemovedItems(pRemovedItems - pAddedItems)
+    , mAddedItems(pAddedItems - pRemovedItems)
+    , mExcludedFromGroup(groupsMap)
+{
+    mFirstRedo = true;
+
+    QSetIterator<QGraphicsItem*> itAdded(mAddedItems);
+    while (itAdded.hasNext())
+    {
+        UBApplication::boardController->freezeW3CWidget(itAdded.next(), true);
+    }
+
+    QSetIterator<QGraphicsItem*> itRemoved(mRemovedItems);
+    while (itRemoved.hasNext())
+    {
+        UBApplication::boardController->freezeW3CWidget(itRemoved.next(), false);
+    }
+}
+
+UBGraphicsItemUndoCommand::UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, QGraphicsItem* pRemovedItem,
+               QGraphicsItem* pAddedItem) :
+    mScene(pScene)
+{
+
+    if (pRemovedItem)
+    {
+        mRemovedItems.insert(pRemovedItem);
+    }
+
+    if (pAddedItem)
+    {
+        mAddedItems.insert(pAddedItem);
+    }
+
+    mFirstRedo = true;
+
+}
+
+UBGraphicsItemUndoCommand::~UBGraphicsItemUndoCommand()
+{
+   //NOOP
+}
+
+void UBGraphicsItemUndoCommand::undo()
+{
+    if (!mScene){
+        return;
+    }
+
+    QSetIterator<QGraphicsItem*> itAdded(mAddedItems);
+    while (itAdded.hasNext())
+    {
+        QGraphicsItem* item = itAdded.next();
+
+        UBApplication::boardController->freezeW3CWidget(item, true);
+        item->setSelected(false);
+
+        QTransform t;
+        bool bApplyTransform = false;
+        UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*>(item);
+        if (polygonItem){
+            if (polygonItem->strokesGroup()
+                    && polygonItem->strokesGroup()->parentItem()
+                    && UBGraphicsGroupContainerItem::Type == polygonItem->strokesGroup()->parentItem()->type())
+            {
+                bApplyTransform = true;
+                t = polygonItem->sceneTransform();
+            }
+            else if (polygonItem->strokesGroup())
+                polygonItem->resetTransform();
+
+            polygonItem->strokesGroup()->removeFromGroup(polygonItem);
+        }
+        mScene->removeItem(item);
+
+        if (bApplyTransform)
+            polygonItem->setTransform(t);
+
+    }
+
+    QSetIterator<QGraphicsItem*> itRemoved(mRemovedItems);
+    while (itRemoved.hasNext())
+    {
+        QGraphicsItem* item = itRemoved.next();
+        if (item)
+        {
+            if (UBItemLayerType::FixedBackground == item->data(UBGraphicsItemData::ItemLayerType)) {
+                mScene->setAsBackgroundObject(item);
+            } else {
+                qreal ownZ = UBGraphicsItem::getOwnZValue(item);
+                mScene->addItem(item);
+                UBGraphicsItem::assignZValue(item, ownZ); //restoring the previous z index
+            }
+
+            if (UBGraphicsPolygonItem::Type == item->type())
+            {
+                UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*>(item);
+                if (polygonItem)
+                {
+                    mScene->removeItem(polygonItem);
+                    mScene->removeItemFromDeletion(polygonItem);
+                    polygonItem->strokesGroup()->addToGroup(polygonItem);
+                }
+            }
+
+            UBApplication::boardController->freezeW3CWidget(item, false);
+        }
+    }
+
+    QMapIterator<UBGraphicsGroupContainerItem*, QUuid> curMapElement(mExcludedFromGroup);
+    UBGraphicsGroupContainerItem *nextGroup = NULL;
+    UBGraphicsGroupContainerItem *previousGroupItem = NULL;
+    bool groupChanged = false;
+
+    while (curMapElement.hasNext()) {
+        curMapElement.next();
+
+        groupChanged = previousGroupItem != curMapElement.key();
+        //trying to find the group on the scene;
+        if (!nextGroup || groupChanged) {
+            UBGraphicsGroupContainerItem *groupCandidate = curMapElement.key();
+            if (groupCandidate) {
+                nextGroup = groupCandidate;
+                if(!mScene->items().contains(nextGroup)) {
+                    mScene->addItem(nextGroup);
+                }
+                nextGroup->setVisible(true);
+            }
+        }
+
+        QGraphicsItem *groupedItem = mScene->itemForUuid(curMapElement.value());
+        if (groupedItem) {
+            nextGroup->addToGroup(groupedItem);
+        }
+
+        previousGroupItem = curMapElement.key();
+        UBGraphicsItem::Delegate(nextGroup)->update();
+    }
+
+    // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint
+    mScene->update(mScene->sceneRect());
+
+}
+
+void UBGraphicsItemUndoCommand::redo()
+{
+    // the Undo framework calls a redo while appending the undo command.
+    // as we have already plotted the elements, we do not want to do it twice
+    if (!mFirstRedo)
+    {
+        if (!mScene){
+            return;
+        }
+
+        QMapIterator<UBGraphicsGroupContainerItem*, QUuid> curMapElement(mExcludedFromGroup);
+        UBGraphicsGroupContainerItem *nextGroup = NULL;
+        UBGraphicsGroupContainerItem *previousGroupItem = NULL;
+        bool groupChanged = false;
+
+        while (curMapElement.hasNext()) {
+            curMapElement.next();
+
+            groupChanged = previousGroupItem != curMapElement.key();
+            //trying to find the group on the scene;
+            if (!nextGroup || groupChanged) {
+                UBGraphicsGroupContainerItem *groupCandidate = curMapElement.key();
+                if (groupCandidate) {
+                    nextGroup = groupCandidate;
+                }
+            }
+            QGraphicsItem *groupedItem = mScene->itemForUuid(curMapElement.value());
+            if (groupedItem) {
+                if (nextGroup->childItems().count() == 1) {
+                    nextGroup->destroy(false);
+                    break;
+                }
+                nextGroup->removeFromGroup(groupedItem);
+            }
+
+            previousGroupItem = curMapElement.key();
+            UBGraphicsItem::Delegate(nextGroup)->update();
+        }
+
+        QSetIterator<QGraphicsItem*> itRemoved(mRemovedItems);
+        while (itRemoved.hasNext())
+        {
+            QGraphicsItem* item = itRemoved.next();
+            item->setSelected(false);
+
+            QTransform t;
+            bool bApplyTransform = false;
+            UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*>(item);
+
+            if (polygonItem){
+                if(polygonItem->strokesGroup()
+                        && polygonItem->strokesGroup()->parentItem()
+                        && UBGraphicsGroupContainerItem::Type == polygonItem->strokesGroup()->parentItem()->type())
+                {
+                    bApplyTransform = true;
+                    t = polygonItem->sceneTransform();
+                }
+                else if (polygonItem->strokesGroup())
+                    polygonItem->resetTransform();
+
+                polygonItem->strokesGroup()->removeFromGroup(polygonItem);
+            }
+            mScene->removeItem(item);
+
+            if (bApplyTransform)
+                item->setTransform(t);
+
+            UBApplication::boardController->freezeW3CWidget(item, true);
+        }
+
+        QSetIterator<QGraphicsItem*> itAdded(mAddedItems);
+        while (itAdded.hasNext())
+        {
+            QGraphicsItem* item = itAdded.next();
+            if (item)
+            {
+                UBApplication::boardController->freezeW3CWidget(item, false);
+
+                if (UBItemLayerType::FixedBackground == item->data(UBGraphicsItemData::ItemLayerType))
+                    mScene->setAsBackgroundObject(item);
+                else
+                    mScene->addItem(item);
+
+                UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*>(item);
+                if (polygonItem)
+                {
+                    mScene->removeItem(polygonItem);
+                    mScene->removeItemFromDeletion(polygonItem);
+                    polygonItem->strokesGroup()->addToGroup(polygonItem);
+                }
+            }
+        }
+
+        // force refresh, QT is a bit lazy and take a lot of time (nb item ^2) to trigger repaint
+        mScene->update(mScene->sceneRect());
+    }
+    else
+    {
+        mFirstRedo = false;
+    }
+}
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.h b/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.h
index 84c807c..f349938 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.h
+++ b/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSITEMUNDOCOMMAND_H_
 #define UBGRAPHICSITEMUNDOCOMMAND_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsMediaItem.cpp b/Sankore-3.1/src/domain/UBGraphicsMediaItem.cpp
index 53759a9..d1f56db 100644
--- a/Sankore-3.1/src/domain/UBGraphicsMediaItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsMediaItem.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsGroupContainerItem.h"
 #include "UBGraphicsMediaItem.h"
 #include "UBGraphicsMediaItemDelegate.h"
@@ -34,7 +35,6 @@
 UBAudioPresentationWidget::UBAudioPresentationWidget(QWidget *parent)
     : QWidget(parent)
     , mBorderSize(10)
-    , mTitleSize(10)
 {
 
 }
@@ -43,7 +43,7 @@ void UBAudioPresentationWidget::paintEvent(QPaintEvent *event)
 {
     QPainter painter(this);
     painter.fillRect(rect(), QBrush(Qt::white));
-    
+
     QPen borderPen;
     borderPen.setWidth(2);
     borderPen.setColor(QColor(Qt::black));
@@ -84,7 +84,7 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
     if ("" == mediaPath)
         mediaPath = pMediaFileUrl.toLocalFile();
 
-    if (mediaPath.toLower().contains("videos")) 
+    if (mediaPath.toLower().contains("videos"))
     {
         mMediaType = mediaType_Video;
 
@@ -101,7 +101,7 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
 
         haveLinkedImage = true;
     }
-    else    
+    else
     if (mediaPath.toLower().contains("audios"))
     {
         mMediaType = mediaType_Audio;
@@ -116,20 +116,20 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
             borderSize = pAudioWidget->borderSize();
         }
 
-        mAudioWidget->resize(320,26+3*borderSize);
+        mAudioWidget->resize(320,26+2*borderSize); //3*border size with enabled title
         mAudioWidget->setMinimumSize(150,26+borderSize);
 
         haveLinkedImage = false;
     }
 
     Phonon::createPath(mMediaObject, mAudioOutput);
-    
+
     mSource = Phonon::MediaSource(pMediaFileUrl);
     mMediaObject->setCurrentSource(mSource);
 
     // we should create delegate after media objects because delegate uses his properties at creation.
     setDelegate(new UBGraphicsMediaItemDelegate(this, mMediaObject));
-    
+
     // delegate should be created earler because we setWidget calls resize event for graphics proxy widgt.
     // resize uses delegate.
     if (mediaType_Video == mMediaType)
@@ -202,7 +202,7 @@ void UBGraphicsMediaItem::setSourceUrl(const QUrl &pSourceUrl)
     UBAudioPresentationWidget* pAudioWidget = dynamic_cast<UBAudioPresentationWidget*>(mAudioWidget);
     if (pAudioWidget)
     {
-        pAudioWidget->setTitle(UBFileSystemUtils::lastPathComponent(pSourceUrl.toString()));
+       // pAudioWidget->setTitle(UBFileSystemUtils::lastPathComponent(pSourceUrl.toString()));
     }
 
     UBItem::setSourceUrl(pSourceUrl);
@@ -319,13 +319,13 @@ void UBGraphicsMediaItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
             {
                 QGraphicsItem *curItem = group->getCurrentItem();
                 if (curItem && this != curItem)
-                {   
-                    group->deselectCurrentItem();    
-                }   
+                {
+                    group->deselectCurrentItem();
+                }
                 group->setCurrentItem(this);
                 this->setSelected(true);
                 Delegate()->positionHandles();
-            }       
+            }
 
         }
     }
@@ -338,7 +338,7 @@ void UBGraphicsMediaItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
             event->accept();
         }
     }
-    else 
+    else
     {
         mShouldMove = (event->buttons() & Qt::LeftButton);
         mMousePressPos = event->scenePos();
diff --git a/Sankore-3.1/src/domain/UBGraphicsMediaItem.h b/Sankore-3.1/src/domain/UBGraphicsMediaItem.h
index 11d4f0d..b512beb 100644
--- a/Sankore-3.1/src/domain/UBGraphicsMediaItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsMediaItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSMEDIAITEM_H
 #define UBGRAPHICSMEDIAITEM_H
 
@@ -44,7 +45,6 @@ private:
     virtual void paintEvent(QPaintEvent *event);
 
     int mBorderSize;
-    int mTitleSize;
     QString mTitle;
 };
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.cpp
index 67b689a..52ee2fc 100644
--- a/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 #include <QtSvg>
 
@@ -254,6 +255,11 @@ void UBGraphicsMediaItemDelegate::mediaStateChanged ( Phonon::State newstate, Ph
 {
     Q_UNUSED(newstate);
     Q_UNUSED(oldstate);
+
+    if (oldstate == Phonon::LoadingState)
+    {
+        mMediaControl->totalTimeChanged(delegated()->mediaObject()->totalTime());
+    }
     updatePlayPauseState();
 }
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.h
index 8ce8700..9ac65c9 100644
--- a/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.h
+++ b/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSMEDIAITEMDELEGATE_H_
 #define UBGRAPHICSMEDIAITEMDELEGATE_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsPDFItem.cpp b/Sankore-3.1/src/domain/UBGraphicsPDFItem.cpp
index cca2641..0acc8ab 100644
--- a/Sankore-3.1/src/domain/UBGraphicsPDFItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsPDFItem.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsPDFItem.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/domain/UBGraphicsPDFItem.h b/Sankore-3.1/src/domain/UBGraphicsPDFItem.h
index 52d1204..9a1a42d 100644
--- a/Sankore-3.1/src/domain/UBGraphicsPDFItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsPDFItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSPDFITEM_H_
 #define UBGRAPHICSPDFITEM_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsPixmapItem.cpp b/Sankore-3.1/src/domain/UBGraphicsPixmapItem.cpp
index 3d0a9a0..bba9f7a 100644
--- a/Sankore-3.1/src/domain/UBGraphicsPixmapItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsPixmapItem.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsPixmapItem.h"
 
 #include <QtGui>
@@ -30,6 +31,15 @@
 
 #include "UBGraphicsItemDelegate.h"
 
+#include "document/UBDocumentProxy.h"
+#include "core/UBApplication.h"
+#include "document/UBDocumentController.h"
+#include "board/UBBoardController.h"
+#include "document/UBDocumentProxy.h"
+#include "customWidgets/UBGraphicsItemAction.h"
+#include "frameworks/UBFileSystemUtils.h"
+#include "core/UBPersistenceManager.h"
+
 #include "core/memcheck.h"
 
 UBGraphicsPixmapItem::UBGraphicsPixmapItem(QGraphicsItem* parent)
@@ -39,6 +49,7 @@ UBGraphicsPixmapItem::UBGraphicsPixmapItem(QGraphicsItem* parent)
     Delegate()->init();
     Delegate()->setFlippable(true);
     Delegate()->setRotatable(true);
+    Delegate()->setCanTrigAnAction(true);
 
     setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
     setTransformationMode(Qt::SmoothTransformation);
@@ -82,7 +93,7 @@ void UBGraphicsPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
     }
     else
     {
-//        QGraphicsPixmapItem::mousePressEvent(event);
+        QGraphicsPixmapItem::mousePressEvent(event);
     }
 }
 
@@ -141,6 +152,16 @@ void UBGraphicsPixmapItem::copyItemParameters(UBItem *copy) const
         cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
         cp->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
         cp->setSourceUrl(this->sourceUrl());
+
+        if(Delegate()->action()){
+            if(Delegate()->action()->linkType() == eLinkToAudio){
+                UBGraphicsItemPlayAudioAction* action = new UBGraphicsItemPlayAudioAction(Delegate()->action()->path());
+                cp->Delegate()->setAction(action);
+            }
+            else
+                cp->Delegate()->setAction(Delegate()->action());
+        }
+
     }
 }
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsPixmapItem.h b/Sankore-3.1/src/domain/UBGraphicsPixmapItem.h
index 999b3f8..3ef6b84 100644
--- a/Sankore-3.1/src/domain/UBGraphicsPixmapItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsPixmapItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSPIXMAPITEM_H_
 #define UBGRAPHICSPIXMAPITEM_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsPolygonItem.cpp b/Sankore-3.1/src/domain/UBGraphicsPolygonItem.cpp
index d61270f..46b7a9d 100644
--- a/Sankore-3.1/src/domain/UBGraphicsPolygonItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsPolygonItem.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsPolygonItem.h"
 
 #include "frameworks/UBGeometryUtils.h"
@@ -35,6 +36,7 @@ UBGraphicsPolygonItem::UBGraphicsPolygonItem (QGraphicsItem * parent)
     , mOriginalWidth(-1)
     , mIsNominalLine(false)
     , mStroke(0)
+    , mpGroup(NULL)
 {
     // NOOP
     initialize();
@@ -59,6 +61,7 @@ UBGraphicsPolygonItem::UBGraphicsPolygonItem (const QLineF& pLine, qreal pWidth)
     , mOriginalWidth(pWidth)
     , mIsNominalLine(true)
     , mStroke(0)
+    , mpGroup(NULL)
 {
     // NOOP
     initialize();
diff --git a/Sankore-3.1/src/domain/UBGraphicsPolygonItem.h b/Sankore-3.1/src/domain/UBGraphicsPolygonItem.h
index 0ac714f..1432805 100644
--- a/Sankore-3.1/src/domain/UBGraphicsPolygonItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsPolygonItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSPOLYGONITEM_H
 #define UBGRAPHICSPOLYGONITEM_H
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsProxyWidget.cpp b/Sankore-3.1/src/domain/UBGraphicsProxyWidget.cpp
index dde91e8..250304e 100644
--- a/Sankore-3.1/src/domain/UBGraphicsProxyWidget.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsProxyWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsProxyWidget.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/domain/UBGraphicsProxyWidget.h b/Sankore-3.1/src/domain/UBGraphicsProxyWidget.h
index a3f5782..37c13d9 100644
--- a/Sankore-3.1/src/domain/UBGraphicsProxyWidget.h
+++ b/Sankore-3.1/src/domain/UBGraphicsProxyWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSPROXYWIDGET_H_
 #define UBGRAPHICSPROXYWIDGET_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsScene.cpp b/Sankore-3.1/src/domain/UBGraphicsScene.cpp
index e53dec2..57d24d8 100644
--- a/Sankore-3.1/src/domain/UBGraphicsScene.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsScene.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsScene.h"
 
 #include <QtGui>
@@ -67,6 +68,8 @@
 #include "UBGraphicsTextItem.h"
 #include "UBGraphicsStrokesGroup.h"
 
+#include "customWidgets/UBGraphicsItemAction.h"
+
 #include "domain/UBGraphicsGroupContainerItem.h"
 
 #include "UBGraphicsStroke.h"
@@ -335,8 +338,8 @@ void UBGraphicsScene::updateGroupButtonState()
 {
 
     UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController()->stylusTool();
-    if (UBStylusTool::Selector != currentTool)
-        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+    if (UBStylusTool::Selector != currentTool && UBStylusTool::Play != currentTool)
+        return;
 
     QAction *groupAction = UBApplication::mainWindow->actionGroupItems;
     QList<QGraphicsItem*> selItems = selectedItems();
@@ -578,9 +581,14 @@ bool UBGraphicsScene::inputDeviceRelease()
 
                 // Add the center cross
                 foreach(QGraphicsItem* item, mAddedItems){
+                    mAddedItems.remove(item);
                     removeItem(item);
                     UBCoreGraphicsScene::removeItemFromDeletion(item);
-                    mArcPolygonItem->setStrokesGroup(pStrokes);
+
+                    UBGraphicsPolygonItem *crossLine = qgraphicsitem_cast<UBGraphicsPolygonItem *>(item);
+                    if (crossLine)
+                        crossLine->setStrokesGroup(pStrokes);
+
                     pStrokes->addToGroup(item);
                 }
 
@@ -825,14 +833,14 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
 
         if (!intersectedPolygons[i].empty())
         {
-            // intersected polygons generated as QList<QPolygon> QPainterPath::toFillPolygons(), 
-            // so each intersectedPolygonItem has one or couple of QPolygons who should be removed from it. 
+            // intersected polygons generated as QList<QPolygon> QPainterPath::toFillPolygons(),
+            // so each intersectedPolygonItem has one or couple of QPolygons who should be removed from it.
             for(int j = 0; j < intersectedPolygons[i].size(); j++)
             {
                 // create small polygon from couple of polygons to replace particular erased polygon
                 UBGraphicsPolygonItem* polygonItem = new UBGraphicsPolygonItem(intersectedPolygons[i][j], intersectedPolygonItem->parentItem());
 
-                intersectedPolygonItem->copyItemParameters(polygonItem);  
+                intersectedPolygonItem->copyItemParameters(polygonItem);
                 polygonItem->setStroke(intersectedPolygonItem->stroke());
                 polygonItem->setStrokesGroup(intersectedPolygonItem->strokesGroup());
                 intersectedPolygonItem->strokesGroup()->addToGroup(polygonItem);
@@ -840,10 +848,30 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
             }
         }
 
-        //remove full polygon item for replace it by couple of polygons who creates the same stroke without a part which intersects with eraser
-        mRemovedItems << intersectedPolygonItem;
-        intersectedPolygonItem->strokesGroup()->removeFromGroup(intersectedPolygonItem);
+        //remove full polygon item for replace it by couple of polygons which creates the same stroke without a part intersects with eraser
+         mRemovedItems << intersectedPolygonItem;
+
+        QTransform t;
+        bool bApplyTransform = false;
+        if (intersectedPolygonItem->strokesGroup())
+        {
+            if (intersectedPolygonItem->strokesGroup()->parentItem())
+            {
+                bApplyTransform = true;
+                t = intersectedPolygonItem->sceneTransform();
+            }
+            intersectedPolygonItem->strokesGroup()->removeFromGroup(intersectedPolygonItem);
+        }
+
+        removeItem(intersectedPolygonItem);
+        if (bApplyTransform)
+            intersectedPolygonItem->setTransform(t);
+
+
         removeItem(intersectedPolygonItem);
+
+        if (bApplyTransform)
+            intersectedPolygonItem->setTransform(t);
     }
 
     if (!intersectedItems.empty())
@@ -1484,18 +1512,40 @@ UBGraphicsTextItem* UBGraphicsScene::textForObjectName(const QString& pString, c
                 textItem->setObjectName(objectName);
         }
     }
+
     if(!textItem){
         textItem = addTextWithFont(pString,QPointF(0,0) ,72,UBSettings::settings()->fontFamily(),true,false);
         textItem->setObjectName(objectName);
-        QSizeF size = textItem->size();
-        textItem->setPos(QPointF(-size.width()/2.0,-size.height()/2.0));
         textItem->setData(UBGraphicsItemData::ItemEditable,QVariant(false));
+        textItem->adjustSize();
+        textItem->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
+        textItem->setPlainText(pString);
+    }
+    else{
+        textItem->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
+        if (pString == textItem->toPlainText())
+            return textItem;
+
+        QTextCursor curCursor = textItem->textCursor();
+        QFont font = textItem->font();
+        QColor color = curCursor.charFormat().foreground().color();
+
+        textItem->setPlainText(pString);
+        textItem->clearFocus();
+        textItem->setFont(font);
+
+
+        QTextCharFormat format;
+        format.setForeground(QBrush(color));
+        curCursor.mergeCharFormat(format);
+        textItem->setTextCursor(curCursor);
+//        textItem->setSelected(true);
+        textItem->contentsChanged();
+
     }
 
-    textItem->setPlainText(pString);
-    textItem->adjustSize();
     textItem->clearFocus();
-    textItem->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
+
     return textItem;
 }
 
@@ -1862,6 +1912,7 @@ void UBGraphicsScene::addMagnifier(UBMagnifierParams params)
     connect(magniferControlViewWidget, SIGNAL(magnifierClose_Signal()), this, SLOT(closeMagnifier()));
     connect(magniferControlViewWidget, SIGNAL(magnifierZoomIn_Signal()), this, SLOT(zoomInMagnifier()));
     connect(magniferControlViewWidget, SIGNAL(magnifierZoomOut_Signal()), this, SLOT(zoomOutMagnifier()));
+    connect(magniferControlViewWidget, SIGNAL(magnifierDrawingModeChange_Signal(int)), this, SLOT(changeMagnifierMode(int)));
     connect(magniferControlViewWidget, SIGNAL(magnifierResized_Signal(qreal)), this, SLOT(resizedMagnifier(qreal)));
 
     setModified(true);
@@ -1928,6 +1979,14 @@ void UBGraphicsScene::zoomOutMagnifier()
     }
 }
 
+void UBGraphicsScene::changeMagnifierMode(int mode)
+{
+    if(magniferControlViewWidget)
+        magniferControlViewWidget->setDrawingMode(mode);
+    if(magniferDisplayViewWidget)
+        magniferDisplayViewWidget->setDrawingMode(mode);
+}
+
 void UBGraphicsScene::resizedMagnifier(qreal newPercent)
 {
     if(newPercent > 18 && newPercent < 50)
@@ -2024,14 +2083,22 @@ QList<QUrl> UBGraphicsScene::relativeDependencies() const
 
     while (itItems.hasNext())
     {
-        UBGraphicsMediaItem *videoItem = qgraphicsitem_cast<UBGraphicsMediaItem*> (itItems.next());
+        QGraphicsItem* item = itItems.next();
+        UBGraphicsMediaItem *videoItem = qgraphicsitem_cast<UBGraphicsMediaItem*> (item);
 
         if (videoItem && videoItem->mediaFileUrl().isRelative())
         {
             relativePathes << videoItem->mediaFileUrl();
         }
+
+        UBGraphicsItem* ubItem = dynamic_cast<UBGraphicsItem*>(item);
+        if(ubItem && ubItem->Delegate()->action() && ubItem->Delegate()->action()->linkType() == eLinkToAudio)
+            relativePathes << QUrl(ubItem->Delegate()->action()->path().replace(document()->persistencePath(),""));
+
     }
 
+    qDebug() << relativePathes;
+
     return relativePathes;
 }
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsScene.h b/Sankore-3.1/src/domain/UBGraphicsScene.h
index c7cbc6c..650fd1b 100644
--- a/Sankore-3.1/src/domain/UBGraphicsScene.h
+++ b/Sankore-3.1/src/domain/UBGraphicsScene.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSSCENE_H_
 #define UBGRAPHICSSCENE_H_
 
@@ -337,6 +338,7 @@ public slots:
         void closeMagnifier();
         void zoomInMagnifier();
         void zoomOutMagnifier();
+        void changeMagnifierMode(int mode);
         void resizedMagnifier(qreal newPercent);
 
     signals:
diff --git a/Sankore-3.1/src/domain/UBGraphicsStroke.cpp b/Sankore-3.1/src/domain/UBGraphicsStroke.cpp
index c8c89a0..8cf92cb 100644
--- a/Sankore-3.1/src/domain/UBGraphicsStroke.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsStroke.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsStroke.h"
 
 #include "UBGraphicsPolygonItem.h"
diff --git a/Sankore-3.1/src/domain/UBGraphicsStroke.h b/Sankore-3.1/src/domain/UBGraphicsStroke.h
index 70709e3..6d246d7 100644
--- a/Sankore-3.1/src/domain/UBGraphicsStroke.h
+++ b/Sankore-3.1/src/domain/UBGraphicsStroke.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSSTROKE_H_
 #define UBGRAPHICSSTROKE_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.cpp b/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.cpp
index 925ac82..71b521a 100644
--- a/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,10 +20,20 @@
  */
 
 
+
 #include "UBGraphicsStrokesGroup.h"
 
 #include "domain/UBGraphicsPolygonItem.h"
 
+#include "document/UBDocumentProxy.h"
+#include "core/UBApplication.h"
+#include "document/UBDocumentController.h"
+#include "board/UBBoardController.h"
+#include "document/UBDocumentProxy.h"
+#include "customWidgets/UBGraphicsItemAction.h"
+#include "frameworks/UBFileSystemUtils.h"
+#include "core/UBPersistenceManager.h"
+
 #include "core/memcheck.h"
 
 UBGraphicsStrokesGroup::UBGraphicsStrokesGroup(QGraphicsItem *parent)
@@ -33,7 +43,7 @@ UBGraphicsStrokesGroup::UBGraphicsStrokesGroup(QGraphicsItem *parent)
     Delegate()->init();
     Delegate()->setFlippable(true);
     Delegate()->setRotatable(true);
-
+    Delegate()->setCanTrigAnAction(true);
 
     setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
 
@@ -42,6 +52,7 @@ UBGraphicsStrokesGroup::UBGraphicsStrokesGroup(QGraphicsItem *parent)
     setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
     setFlag(QGraphicsItem::ItemIsSelectable, true);
     setFlag(QGraphicsItem::ItemIsMovable, true);
+
 }
 
 UBGraphicsStrokesGroup::~UBGraphicsStrokesGroup()
@@ -104,14 +115,7 @@ QColor UBGraphicsStrokesGroup::color(colorType pColorType) const
 
 void UBGraphicsStrokesGroup::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (Delegate()->mousePressEvent(event))
-    {
-        //NOOP
-    }
-    else
-    {
-//        QGraphicsItemGroup::mousePressEvent(event);
-    }
+    Delegate()->mousePressEvent(event);
 }
 
 void UBGraphicsStrokesGroup::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
@@ -134,18 +138,18 @@ void UBGraphicsStrokesGroup::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 
 UBItem* UBGraphicsStrokesGroup::deepCopy() const
 {
-	UBGraphicsStrokesGroup* copy = new UBGraphicsStrokesGroup();
+    UBGraphicsStrokesGroup* copy = new UBGraphicsStrokesGroup();
 
-	QTransform groupTransform = transform();
-	const_cast<UBGraphicsStrokesGroup*>(this)->resetTransform();
+    QTransform groupTransform = transform();
+    const_cast<UBGraphicsStrokesGroup*>(this)->resetTransform();
 
-	QList<QGraphicsItem*> chl = childItems();
+    QList<QGraphicsItem*> chl = childItems();
 
-	foreach(QGraphicsItem *child, chl)
-	{
-		UBGraphicsPolygonItem *polygon = dynamic_cast<UBGraphicsPolygonItem*>(child);
+    foreach(QGraphicsItem *child, chl)
+    {
+        UBGraphicsPolygonItem *polygon = dynamic_cast<UBGraphicsPolygonItem*>(child);
 
-		if (polygon){
+        if (polygon){
             UBGraphicsPolygonItem *polygonCopy = dynamic_cast<UBGraphicsPolygonItem*>(polygon->deepCopy());
             if (polygonCopy)
             {
@@ -153,18 +157,18 @@ UBItem* UBGraphicsStrokesGroup::deepCopy() const
                 copy->addToGroup(pItem);
                 polygonCopy->setStrokesGroup(copy);
             }
-		}
+        }
 
-	}
-	const_cast<UBGraphicsStrokesGroup*>(this)->setTransform(groupTransform);
-	copyItemParameters(copy);
+    }
+    const_cast<UBGraphicsStrokesGroup*>(this)->setTransform(groupTransform);
+    copyItemParameters(copy);
 
-	return copy;
+    return copy;
 }
 
 void UBGraphicsStrokesGroup::copyItemParameters(UBItem *copy) const
 {
-	QGraphicsItem *cp = dynamic_cast<QGraphicsItem*>(copy);
+    QGraphicsItem *cp = dynamic_cast<QGraphicsItem*>(copy);
     if(NULL != cp)
     {
         cp->setTransform(transform());
@@ -205,7 +209,7 @@ QPainterPath UBGraphicsStrokesGroup::shape () const
         foreach(QGraphicsItem* item, childItems())
         {
             path.addPath(item->shape());
-        } 
+        }
     }
 
     return path;
diff --git a/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.h b/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.h
index f7878ce..846051d 100644
--- a/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.h
+++ b/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSSTROKESGROUP_H
 #define UBGRAPHICSSTROKESGROUP_H
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsSvgItem.cpp b/Sankore-3.1/src/domain/UBGraphicsSvgItem.cpp
index 89d277a..3a2d95a 100644
--- a/Sankore-3.1/src/domain/UBGraphicsSvgItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsSvgItem.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsSvgItem.h"
 
 #include <QtGui>
@@ -28,6 +29,15 @@
 #include "UBGraphicsItemDelegate.h"
 #include "UBGraphicsPixmapItem.h"
 
+#include "document/UBDocumentProxy.h"
+#include "core/UBApplication.h"
+#include "document/UBDocumentController.h"
+#include "board/UBBoardController.h"
+#include "document/UBDocumentProxy.h"
+#include "customWidgets/UBGraphicsItemAction.h"
+#include "frameworks/UBFileSystemUtils.h"
+#include "core/UBPersistenceManager.h"
+
 #include "core/memcheck.h"
 
 UBGraphicsSvgItem::UBGraphicsSvgItem(const QString& pFilePath, QGraphicsItem* parent)
@@ -64,6 +74,7 @@ void UBGraphicsSvgItem::init()
     Delegate()->init();
     Delegate()->setFlippable(true);
     Delegate()->setRotatable(true);
+    Delegate()->setCanTrigAnAction(true);
 
 
     setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
@@ -97,6 +108,16 @@ QVariant UBGraphicsSvgItem::itemChange(GraphicsItemChange change, const QVariant
 
 void UBGraphicsSvgItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
+    QMimeData* pMime = new QMimeData();
+    QPixmap pixmap = toPixmapItem()->pixmap();
+    pMime->setImageData(pixmap.toImage());
+    Delegate()->setMimeData(pMime);
+    qreal k = (qreal)pixmap.width() / 100.0;
+
+    QSize newSize((int)(pixmap.width() / k), (int)(pixmap.height() / k));
+
+    Delegate()->setDragPixmap(pixmap.scaled(newSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
+
     if (Delegate()->mousePressEvent(event))
     {
         //NOOP
@@ -164,6 +185,14 @@ void UBGraphicsSvgItem::copyItemParameters(UBItem *copy) const
         cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
         cp->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
         cp->setSourceUrl(this->sourceUrl());
+        if(Delegate()->action()){
+            if(Delegate()->action()->linkType() == eLinkToAudio){
+                UBGraphicsItemPlayAudioAction* action = new UBGraphicsItemPlayAudioAction(Delegate()->action()->path());
+                cp->Delegate()->setAction(action);
+            }
+            else
+                cp->Delegate()->setAction(Delegate()->action());
+        }
     }
 }
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsSvgItem.h b/Sankore-3.1/src/domain/UBGraphicsSvgItem.h
index ceb7b1b..ef805bd 100644
--- a/Sankore-3.1/src/domain/UBGraphicsSvgItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsSvgItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSSVGITEM_H_
 #define UBGRAPHICSSVGITEM_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsTextItem.cpp b/Sankore-3.1/src/domain/UBGraphicsTextItem.cpp
index eb2465b..6bdaf6f 100644
--- a/Sankore-3.1/src/domain/UBGraphicsTextItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsTextItem.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 #include "UBGraphicsGroupContainerItem.h"
 #include "UBGraphicsTextItem.h"
@@ -33,6 +34,15 @@
 #include "board/UBDrawingController.h"
 #include "core/UBSettings.h"
 
+#include "document/UBDocumentProxy.h"
+#include "core/UBApplication.h"
+#include "document/UBDocumentController.h"
+#include "board/UBBoardController.h"
+#include "document/UBDocumentProxy.h"
+#include "customWidgets/UBGraphicsItemAction.h"
+#include "frameworks/UBFileSystemUtils.h"
+#include "core/UBPersistenceManager.h"
+
 #include "core/memcheck.h"
 
 QColor UBGraphicsTextItem::lastUsedTextColor;
@@ -49,17 +59,16 @@ UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent) :
     Delegate()->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing);
     Delegate()->setFlippable(false);
     Delegate()->setRotatable(true);
+    Delegate()->setCanTrigAnAction(true);
 
     mTypeTextHereLabel = tr("<Type Text Here>");
 
 
     setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
-//    setData(UBGraphicsItemData::ItemEditable, QVariant(true));
     setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
 
 
     setFlag(QGraphicsItem::ItemIsSelectable, true);
-//    setFlag(QGraphicsItem::ItemIsMovable, true);
     setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
 
     setTextInteractionFlags(Qt::TextEditorInteraction);
@@ -90,10 +99,10 @@ QVariant UBGraphicsTextItem::itemChange(GraphicsItemChange change, const QVarian
 
 void UBGraphicsTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    // scene()->itemAt(pos) returns 0 if pos is not over text, but over text item, but mouse press comes. 
-    // It is a cludge... 
+    // It is a cludge...
     if (UBStylusTool::Play == UBDrawingController::drawingController()->stylusTool())
     {
+        QGraphicsTextItem::mousePressEvent(event);
         event->accept();
         clearFocus();
         return;
@@ -109,13 +118,13 @@ void UBGraphicsTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
             {
                 QGraphicsItem *curItem = group->getCurrentItem();
                 if (curItem && this != curItem)
-                {   
-                    group->deselectCurrentItem();    
-                }   
+                {
+                    group->deselectCurrentItem();
+                }
                 group->setCurrentItem(this);
                 this->setSelected(true);
                 Delegate()->positionHandles();
-            }       
+            }
 
         }
         else
@@ -177,10 +186,16 @@ void UBGraphicsTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
-    // scene()->itemAt(pos) returns 0 if pos is not over text, but over text item, but mouse press comes. 
-    // It is a cludge... 
+    // scene()->itemAt(pos) returns 0 if pos is not over text, but over text item, but mouse press comes.
+    // It is a cludge...
     if (UBStylusTool::Play == UBDrawingController::drawingController()->stylusTool())
     {
+        QPointF distance = event->pos() - event->lastPos();
+        if( fabs(distance.x()) < 1 && fabs(distance.y()) < 1 )
+            Delegate()->mouseReleaseEvent(event);
+        else
+            QGraphicsTextItem::mouseReleaseEvent(event);
+
         event->accept();
         clearFocus();
         return;
@@ -245,17 +260,21 @@ void UBGraphicsTextItem::copyItemParameters(UBItem *copy) const
         cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
         cp->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
         cp->setData(UBGraphicsItemData::ItemEditable, data(UBGraphicsItemData::ItemEditable).toBool());
-        //    cp->setDefaultTextColor(this->defaultTextColor());
-        //    cp->setFont(this->font());
-        //    cp->setColorOnDarkBackground(this->colorOnDarkBackground());
-        //    cp->setColorOnLightBackground(this->colorOnLightBackground());
         cp->setTextWidth(this->textWidth());
         cp->setTextHeight(this->textHeight());
 
-        cp->setSourceUrl(this->sourceUrl());
+        if(Delegate()->action()){
+            if(Delegate()->action()->linkType() == eLinkToAudio){
+                UBGraphicsItemPlayAudioAction* action = new UBGraphicsItemPlayAudioAction(Delegate()->action()->path());
+                cp->Delegate()->setAction(action);
+            }
+            else
+                cp->Delegate()->setAction(Delegate()->action());
+        }
     }
 }
 
+
 QRectF UBGraphicsTextItem::boundingRect() const
 {
     qreal width = textWidth();
diff --git a/Sankore-3.1/src/domain/UBGraphicsTextItem.h b/Sankore-3.1/src/domain/UBGraphicsTextItem.h
index 4f29c4b..06d4133 100644
--- a/Sankore-3.1/src/domain/UBGraphicsTextItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsTextItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSTEXTITEM_H_
 #define UBGRAPHICSTEXTITEM_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.cpp
index 298887a..7d36b84 100644
--- a/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 #include <QtSvg>
 
@@ -86,14 +87,8 @@ QFont UBGraphicsTextItemDelegate::createDefaultFont()
         textFormat.setFontItalic(true);
 
     QFont font(fFamily, -1, bold ? QFont::Bold : -1, italic);
-//    int pixSize = UBSettings::settings()->fontPixelSize();
-//    if (pixSize > 0) {
-//        mLastFontPixelSize = pixSize;
-//        font.setPixelSize(pixSize);
-//    }
     int pointSize = UBSettings::settings()->fontPointSize();
     if (pointSize > 0) {
-//        mLastFontPixelSize = pointSize;
         font.setPointSize(pointSize);
     }
 
@@ -205,7 +200,9 @@ void UBGraphicsTextItemDelegate::pickFont()
             delegated()->setTextCursor(curCursor);
             delegated()->setFont(selectedFont);
             delegated()->setSelected(true);
-            delegated()->document()->adjustSize();
+//          disabled and replaced by the next line because of not optimum result (text splits to two lines when that is not necessary)
+//          delegated()->adjustSize();
+            delegated()->resize(delegated()->document()->idealWidth(), delegated()->size().height());
             delegated()->contentsChanged();
         }
     }
@@ -226,8 +223,6 @@ void UBGraphicsTextItemDelegate::pickColor()
         {
             QColor selectedColor = colorDialog.selectedColor();
             delegated()->setDefaultTextColor(selectedColor);
-//            delegated()->setColorOnDarkBackground(selectedColor);
-//            delegated()->setColorOnLightBackground(selectedColor);
             QTextCursor curCursor = delegated()->textCursor();
             QTextCharFormat format;
             format.setForeground(QBrush(selectedColor));
@@ -292,19 +287,20 @@ void UBGraphicsTextItemDelegate::updateMenuActionState()
 {
     UBGraphicsItemDelegate::updateMenuActionState();
 }
+
 void UBGraphicsTextItemDelegate::positionHandles()
 {
     UBGraphicsItemDelegate::positionHandles();
 
-    if (mDelegated->isSelected() || (mDelegated->parentItem() && UBGraphicsGroupContainerItem::Type == mDelegated->parentItem()->type())) 
+    if (mDelegated->isSelected() || (mDelegated->parentItem() && UBGraphicsGroupContainerItem::Type == mDelegated->parentItem()->type()))
     {
         if (mToolBarItem->isVisibleOnBoard())
         {
-            qreal AntiScaleRatio = 1 / (UBApplication::boardController->systemScaleFactor() * UBApplication::boardController->currentZoom());    
+            qreal AntiScaleRatio = 1 / (UBApplication::boardController->systemScaleFactor() * UBApplication::boardController->currentZoom());
             mToolBarItem->setScale(AntiScaleRatio);
             QRectF toolBarRect = mToolBarItem->rect();
             toolBarRect.setWidth(delegated()->boundingRect().width()/AntiScaleRatio);
-            mToolBarItem->setRect(toolBarRect);           
+            mToolBarItem->setRect(toolBarRect);
             mToolBarItem->positionHandles();
             mToolBarItem->update();
             if (mToolBarItem->isShifting())
@@ -373,16 +369,15 @@ void UBGraphicsTextItemDelegate::ChangeTextSize(qreal factor, textChangeMode cha
    // we search continuous blocks of the text with the same PointSize and allpy new settings for them.
     cursor.setPosition (startPos, QTextCursor::MoveAnchor);
     while(iCursorPos < endPos)
-    {   
+    {
         bEndofTheSameBlock = false;
-        iBlockLen = 0; 
+        iBlockLen = 0;
 
         cursor.setPosition (iCursorPos+1, QTextCursor::KeepAnchor);
         iPointSize = cursor.charFormat().font().pointSize();
-
+        curFont = cursor.charFormat().font();
         cursor.setPosition (iCursorPos, QTextCursor::KeepAnchor);
 
-        curFont = cursor.charFormat().font();
 
         do
         {
@@ -408,7 +403,6 @@ void UBGraphicsTextItemDelegate::ChangeTextSize(qreal factor, textChangeMode cha
         cursor.setPosition (iCursorPos, QTextCursor::MoveAnchor);
     }
 
-    delegated()->setFont(curFont);
     UBSettings::settings()->setFontPointSize(iPointSize);
     //returning initial selection
     cursor.setPosition (anchorPos, QTextCursor::MoveAnchor);
diff --git a/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.h
index ba0d132..8d62c27 100644
--- a/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.h
+++ b/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSTEXTITEMDELEGATE_H_
 #define UBGRAPHICSTEXTITEMDELEGATE_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.cpp b/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.cpp
index b391644..879626b 100644
--- a/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsTextItemUndoCommand.h"
 #include "UBGraphicsTextItem.h"
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.h b/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.h
index 24991b6..5b1d8c5 100644
--- a/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.h
+++ b/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSTEXTITEMUNDOCOMMAND_H_
 #define UBGRAPHICSTEXTITEMUNDOCOMMAND_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsVideoItem.cpp b/Sankore-3.1/src/domain/UBGraphicsVideoItem.cpp
index f1d2d6b..98cdbdb 100644
--- a/Sankore-3.1/src/domain/UBGraphicsVideoItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsVideoItem.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -19,3 +19,4 @@
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
diff --git a/Sankore-3.1/src/domain/UBGraphicsVideoItem.h b/Sankore-3.1/src/domain/UBGraphicsVideoItem.h
index f1d2d6b..98cdbdb 100644
--- a/Sankore-3.1/src/domain/UBGraphicsVideoItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsVideoItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -19,3 +19,4 @@
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
diff --git a/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.cpp
index f1d2d6b..f55fd45 100644
--- a/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
diff --git a/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.h
index cdc9499..57a8597 100644
--- a/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.h
+++ b/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,106 +18,107 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBGRAPHICSVIDEOITEMDELEGATE_H_
-#define UBGRAPHICSVIDEOITEMDELEGATE_H_
-
-#include <QtGui>
-#include <phonon/MediaObject>
-
-#include "core/UB.h"
-#include "UBGraphicsItemDelegate.h"
-
-class QGraphicsSceneMouseEvent;
-class QGraphicsItem;
-class UBGraphicsVideoItem;
-
-class DelegateVideoControl: public QGraphicsRectItem
-{
-    public:
-
-        DelegateVideoControl(UBGraphicsVideoItem* pDelegated, QGraphicsItem * parent = 0);
-
-        virtual ~DelegateVideoControl()
-        {
-            // NOOP
-        }
-
-        void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
-                QWidget *widget);
-
-        QPainterPath shape() const;
-
-        void setAntiScale(qreal antiScale){ mAntiScale = antiScale; }
-
-        virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
-        virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
-        virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
-
-        void updateTicker(qint64 time);
-        void totalTimeChanged( qint64 newTotalTime);
-
-   protected:
-
-
-        void seekToMousePos(QPointF mousePos);
-
-        UBGraphicsVideoItem* mDelegate;
-        bool mDisplayCurrentTime;
-
-        qreal mAntiScale;
-        qint64 mCurrentTimeInMs;
-        qint64 mTotalTimeInMs;
-
-    private:
-        int mStartWidth;
-        QRectF mBalloon;
-};
-
-
-class UBGraphicsVideoItemDelegate : public UBGraphicsItemDelegate
-{
-    Q_OBJECT
-
-    public:
-        UBGraphicsVideoItemDelegate(UBGraphicsVideoItem* pDelegated, Phonon::MediaObject* pMedia, QObject * parent = 0);
-        virtual ~UBGraphicsVideoItemDelegate();
-
-        virtual void positionHandles();
-
-    public slots:
-
-        void toggleMute();
-        void updateTicker(qint64 time);
-
-    protected slots:
-
-        virtual void remove(bool canUndo = true);
-
-        void togglePlayPause();
-
-        void mediaStateChanged ( Phonon::State newstate, Phonon::State oldstate );
-
-        void updatePlayPauseState();
-
-        void totalTimeChanged( qint64 newTotalTime);
-
-    protected:
-
-        virtual void buildButtons();
-
-    private:
-
-        UBGraphicsVideoItem* delegated();
-
-        DelegateButton* mPlayPauseButton;
-        DelegateButton* mStopButton;
-        DelegateButton* mMuteButton;
-        DelegateVideoControl *mVideoControl;
-
-        Phonon::MediaObject* mMedia;
-};
-
-
-#endif /* UBGRAPHICSVIDEOITEMDELEGATE_H_ */
+
+
+
+#ifndef UBGRAPHICSVIDEOITEMDELEGATE_H_
+#define UBGRAPHICSVIDEOITEMDELEGATE_H_
+
+#include <QtGui>
+#include <phonon/MediaObject>
+
+#include "core/UB.h"
+#include "UBGraphicsItemDelegate.h"
+
+class QGraphicsSceneMouseEvent;
+class QGraphicsItem;
+class UBGraphicsVideoItem;
+
+class DelegateVideoControl: public QGraphicsRectItem
+{
+    public:
+
+        DelegateVideoControl(UBGraphicsVideoItem* pDelegated, QGraphicsItem * parent = 0);
+
+        virtual ~DelegateVideoControl()
+        {
+            // NOOP
+        }
+
+        void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
+                QWidget *widget);
+
+        QPainterPath shape() const;
+
+        void setAntiScale(qreal antiScale){ mAntiScale = antiScale; }
+
+        virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
+        virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+        virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+
+        void updateTicker(qint64 time);
+        void totalTimeChanged( qint64 newTotalTime);
+
+   protected:
+
+
+        void seekToMousePos(QPointF mousePos);
+
+        UBGraphicsVideoItem* mDelegate;
+        bool mDisplayCurrentTime;
+
+        qreal mAntiScale;
+        qint64 mCurrentTimeInMs;
+        qint64 mTotalTimeInMs;
+
+    private:
+        int mStartWidth;
+        QRectF mBalloon;
+};
+
+
+class UBGraphicsVideoItemDelegate : public UBGraphicsItemDelegate
+{
+    Q_OBJECT
+
+    public:
+        UBGraphicsVideoItemDelegate(UBGraphicsVideoItem* pDelegated, Phonon::MediaObject* pMedia, QObject * parent = 0);
+        virtual ~UBGraphicsVideoItemDelegate();
+
+        virtual void positionHandles();
+
+    public slots:
+
+        void toggleMute();
+        void updateTicker(qint64 time);
+
+    protected slots:
+
+        virtual void remove(bool canUndo = true);
+
+        void togglePlayPause();
+
+        void mediaStateChanged ( Phonon::State newstate, Phonon::State oldstate );
+
+        void updatePlayPauseState();
+
+        void totalTimeChanged( qint64 newTotalTime);
+
+    protected:
+
+        virtual void buildButtons();
+
+    private:
+
+        UBGraphicsVideoItem* delegated();
+
+        DelegateButton* mPlayPauseButton;
+        DelegateButton* mStopButton;
+        DelegateButton* mMuteButton;
+        DelegateVideoControl *mVideoControl;
+
+        Phonon::MediaObject* mMedia;
+};
+
+
+#endif /* UBGRAPHICSVIDEOITEMDELEGATE_H_ */
diff --git a/Sankore-3.1/src/domain/UBGraphicsWidgetItem.cpp b/Sankore-3.1/src/domain/UBGraphicsWidgetItem.cpp
index 4372d27..1587141 100644
--- a/Sankore-3.1/src/domain/UBGraphicsWidgetItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsWidgetItem.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtNetwork>
 #include <QtXml>
 
@@ -608,7 +609,9 @@ void UBGraphicsWidgetItem::mainFrameLoadFinished (bool ok)
 {
     mLoadIsErronous = !ok;
     update(boundingRect());
-    takeSnapshot();
+
+    if (mInitialLoadDone && scene() && scene()->renderingContext() == UBGraphicsScene::Screen)
+        takeSnapshot();
 }
 
 void UBGraphicsWidgetItem::wheelEvent(QGraphicsSceneWheelEvent *event)
@@ -643,8 +646,11 @@ void UBGraphicsWidgetItem::resize(qreal w, qreal h)
 void UBGraphicsWidgetItem::resize(const QSizeF & pSize)
 {
     if (pSize != size()) {
-        QGraphicsWebView::setMaximumSize(pSize.width(), pSize.height());
-        QGraphicsWebView::resize(pSize.width(), pSize.height());
+        qreal w = qMax((qreal)mMinimumSize.width(), pSize.width());
+        qreal h = qMax((qreal)mMinimumSize.height(), pSize.height());
+        QGraphicsWebView::setMaximumSize(w, h);
+        QGraphicsWebView::page()->setViewportSize(QSize(w, h));
+        QGraphicsWebView::resize(QSizeF(w, h));
         if (Delegate())
             Delegate()->positionHandles();
         if (scene())
@@ -764,6 +770,8 @@ UBGraphicsW3CWidgetItem::UBGraphicsW3CWidgetItem(const QUrl& pWidgetUrl, QGraphi
 
     int width = 300;
     int height = 150;
+    int minWidth = 10;
+    int minHeight = 10;
 
     QFile configFile(path + "config.xml");
     configFile.open(QFile::ReadOnly);
@@ -778,6 +786,9 @@ UBGraphicsW3CWidgetItem::UBGraphicsW3CWidgetItem(const QUrl& pWidgetUrl, QGraphi
         width = widgetElement.attribute("width", "300").toInt();
         height = widgetElement.attribute("height", "150").toInt();
 
+        minWidth = widgetElement.attribute("minimum_width", "10").toInt();
+        minHeight = widgetElement.attribute("minimum_height", "10").toInt();
+
         mMetadatas.id = widgetElement.attribute("id", "");
 
         /* some early widget (<= 4.3.4) where using identifier instead of id */
@@ -885,6 +896,7 @@ UBGraphicsW3CWidgetItem::UBGraphicsW3CWidgetItem(const QUrl& pWidgetUrl, QGraphi
 
     setMaximumSize(QSize(width, height));
 
+    mMinimumSize = QSize(minWidth, minHeight);
     mNominalSize = QSize(width, height);
 
     initialize();
@@ -923,7 +935,7 @@ UBGraphicsW3CWidgetItem::Metadata UBGraphicsW3CWidgetItem::metadatas() const
 
 QString UBGraphicsW3CWidgetItem::createNPAPIWrapper(const QString& url, const QString& pMimeType, const QSize& sizeHint, const QString& pName)
 {
-    const QString userWidgetPath = UBSettings::settings()->userInteractiveDirectory() + "/" + tr("Web");
+    const QString userWidgetPath = UBSettings::settings()->userWidgetPath();
     QDir userWidgetDir(userWidgetPath);
 
     return createNPAPIWrapperInDir(url, userWidgetDir, pMimeType, sizeHint, pName);
@@ -1141,6 +1153,8 @@ void UBGraphicsW3CWidgetItem::loadNPAPIWrappersTemplates()
 
         QDir etcDir(etcPath);
 
+        qDebug() << etcDir.entryList().count();
+
         foreach(QString fileName, etcDir.entryList()) {
             if (fileName.startsWith("npapi-wrapper") && (fileName.endsWith(".htm") || fileName.endsWith(".html"))) {
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsWidgetItem.h b/Sankore-3.1/src/domain/UBGraphicsWidgetItem.h
index fd5a224..2dac676 100644
--- a/Sankore-3.1/src/domain/UBGraphicsWidgetItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsWidgetItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSWIDGETITEM_H
 #define UBGRAPHICSWIDGETITEM_H
 
@@ -141,6 +142,7 @@ class UBGraphicsWidgetItem : public QGraphicsWebView, public UBItem, public UBRe
         int mCanBeContent;
         int mCanBeTool;
         QSize mNominalSize;
+        QSize mMinimumSize;
         QString mMainHtmlFileName;
         QUrl mMainHtmlUrl;
         QUrl mWidgetUrl;
diff --git a/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.cpp
index 963dc1b..840da66 100644
--- a/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 #include <QtSvg>
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.h
index b40307f..642dbfe 100644
--- a/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.h
+++ b/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSWIDGETITEMDELEGATE_H_
 #define UBGRAPHICSWIDGETITEMDELEGATE_H_
 
diff --git a/Sankore-3.1/src/domain/UBItem.cpp b/Sankore-3.1/src/domain/UBItem.cpp
index 7f672d6..f73864f 100644
--- a/Sankore-3.1/src/domain/UBItem.cpp
+++ b/Sankore-3.1/src/domain/UBItem.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBItem.h"
 
 #include "core/memcheck.h"
@@ -79,6 +80,11 @@ QUuid UBGraphicsItem::getOwnUuid(QGraphicsItem *item)
     return idCandidate == QUuid().toString() ? QUuid() : QUuid(idCandidate);
 }
 
+qreal UBGraphicsItem::getOwnZValue(QGraphicsItem *item)
+{
+    return item->data(UBGraphicsItemData::ItemOwnZValue).toReal();
+}
+
 void UBGraphicsItem::remove(bool canUndo)
 {
     if (Delegate())
diff --git a/Sankore-3.1/src/domain/UBItem.h b/Sankore-3.1/src/domain/UBItem.h
index bbf7cfb..ca1c3af 100644
--- a/Sankore-3.1/src/domain/UBItem.h
+++ b/Sankore-3.1/src/domain/UBItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBITEM_H
 #define UBITEM_H
 
@@ -115,6 +116,7 @@ public:
     static bool isRotatable(QGraphicsItem *item);
     static bool isFlippable(QGraphicsItem *item);
     static QUuid getOwnUuid(QGraphicsItem *item);
+    static qreal getOwnZValue(QGraphicsItem *item);
 
     static UBGraphicsItemDelegate *Delegate(QGraphicsItem *pItem);
 
diff --git a/Sankore-3.1/src/domain/UBPageSizeUndoCommand.cpp b/Sankore-3.1/src/domain/UBPageSizeUndoCommand.cpp
index 0445745..adde99e 100644
--- a/Sankore-3.1/src/domain/UBPageSizeUndoCommand.cpp
+++ b/Sankore-3.1/src/domain/UBPageSizeUndoCommand.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBPageSizeUndoCommand.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/domain/UBPageSizeUndoCommand.h b/Sankore-3.1/src/domain/UBPageSizeUndoCommand.h
index b184350..35e46bd 100644
--- a/Sankore-3.1/src/domain/UBPageSizeUndoCommand.h
+++ b/Sankore-3.1/src/domain/UBPageSizeUndoCommand.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBPageSizeUndoCommand_H_
 #define UBPageSizeUndoCommand_H_
 
diff --git a/Sankore-3.1/src/domain/UBResizableGraphicsItem.cpp b/Sankore-3.1/src/domain/UBResizableGraphicsItem.cpp
index 6dd2b79..a16884c 100644
--- a/Sankore-3.1/src/domain/UBResizableGraphicsItem.cpp
+++ b/Sankore-3.1/src/domain/UBResizableGraphicsItem.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBResizableGraphicsItem.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/domain/UBResizableGraphicsItem.h b/Sankore-3.1/src/domain/UBResizableGraphicsItem.h
index f2972a4..74f4ed8 100644
--- a/Sankore-3.1/src/domain/UBResizableGraphicsItem.h
+++ b/Sankore-3.1/src/domain/UBResizableGraphicsItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBRESIZABLEGRAPHICSITEM_H_
 #define UBRESIZABLEGRAPHICSITEM_H_
 
diff --git a/Sankore-3.1/src/frameworks/MacUtils.h b/Sankore-3.1/src/frameworks/MacUtils.h
index 5d7ea4f..2a33227 100644
--- a/Sankore-3.1/src/frameworks/MacUtils.h
+++ b/Sankore-3.1/src/frameworks/MacUtils.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
diff --git a/Sankore-3.1/src/frameworks/UBBase32.cpp b/Sankore-3.1/src/frameworks/UBBase32.cpp
index 1b63f3f..0dc02f4 100644
--- a/Sankore-3.1/src/frameworks/UBBase32.cpp
+++ b/Sankore-3.1/src/frameworks/UBBase32.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBBase32.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/frameworks/UBBase32.h b/Sankore-3.1/src/frameworks/UBBase32.h
index fa28a0d..dbbc64f 100644
--- a/Sankore-3.1/src/frameworks/UBBase32.h
+++ b/Sankore-3.1/src/frameworks/UBBase32.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBBASE32_H_
 #define UBBASE32_H_
 
diff --git a/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.cpp b/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.cpp
index 100b136..96769dd 100644
--- a/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.cpp
+++ b/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBCoreGraphicsScene.h"
 
 #include "domain/UBGraphicsMediaItem.h"
@@ -39,15 +40,9 @@ UBCoreGraphicsScene::~UBCoreGraphicsScene()
 {
     //we must delete removed items that are no more in any scene
     //at groups deleting some items can be added to mItemsToDelete, so we need to use iterators.
-    foreach(QGraphicsItem* item, mItemsToDelete)
-    {
-        if (item)
-        {
-            if (item->scene() == NULL || item->scene() == this)
-            {
-                delete item;
-            }
-        }
+    foreach(QGraphicsItem* item, mItemsToDelete){
+        if (item && item->type() != UBGraphicsItemType::PolygonItemType && item->type() != QGraphicsItem::UserType && item->type() != UBGraphicsItemType::groupContainerType && (item->scene() == NULL || item->scene() == this))
+            delete item;
     }
     mItemsToDelete.clear();
 }
@@ -61,7 +56,7 @@ void UBCoreGraphicsScene::addItem(QGraphicsItem* item)
             removeItemFromDeletion(curItem);
         }
     }
- 
+
     if (item->scene() != this)
         QGraphicsScene::addItem(item);
 
@@ -74,7 +69,7 @@ void UBCoreGraphicsScene::removeItem(QGraphicsItem* item, bool forceDelete)
     QGraphicsScene::removeItem(item);
     if (forceDelete)
     {
-        qDebug() << "force delete is " << forceDelete;
+//        qDebug() << "force delete is " << forceDelete;
         deleteItem(item);
     }
     setModified(true);
diff --git a/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.h b/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.h
index 87f52df..6537a9e 100644
--- a/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.h
+++ b/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBCOREGRAPHICSSCENE_H_
 #define UBCOREGRAPHICSSCENE_H_
 
@@ -27,6 +28,8 @@
 
 class UBCoreGraphicsScene : public QGraphicsScene
 {
+    Q_OBJECT
+
     public:
         UBCoreGraphicsScene(QObject * parent = 0);
         virtual ~UBCoreGraphicsScene();
diff --git a/Sankore-3.1/src/frameworks/UBCryptoUtils.cpp b/Sankore-3.1/src/frameworks/UBCryptoUtils.cpp
index 46e130f..b5df8cc 100644
--- a/Sankore-3.1/src/frameworks/UBCryptoUtils.cpp
+++ b/Sankore-3.1/src/frameworks/UBCryptoUtils.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBCryptoUtils.h"
 
 #include <openssl/aes.h>
diff --git a/Sankore-3.1/src/frameworks/UBCryptoUtils.h b/Sankore-3.1/src/frameworks/UBCryptoUtils.h
index 48951c7..c286f70 100644
--- a/Sankore-3.1/src/frameworks/UBCryptoUtils.h
+++ b/Sankore-3.1/src/frameworks/UBCryptoUtils.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBCRYPTOUTILS_H_
 #define UBCRYPTOUTILS_H_
 
diff --git a/Sankore-3.1/src/frameworks/UBFileSystemUtils.cpp b/Sankore-3.1/src/frameworks/UBFileSystemUtils.cpp
index 06633e9..2c2b96f 100644
--- a/Sankore-3.1/src/frameworks/UBFileSystemUtils.cpp
+++ b/Sankore-3.1/src/frameworks/UBFileSystemUtils.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBFileSystemUtils.h"
 
 #include <QtGui>
@@ -472,6 +473,8 @@ QString UBFileSystemUtils::mimeTypeFromFileName(const QString& fileName)
     // Apple widget
     if (ext == "wdgt") return "application/vnd.apple-widget"; //mime type invented by us :-(
     if (ext == "swf") return "application/x-shockwave-flash";
+    if (ext == "bkm") return "internal/bookmark";
+    if (ext == "lnk") return "internal/link";
 
     return "";
 
@@ -545,6 +548,8 @@ QString UBFileSystemUtils::fileExtensionFromMimeType(const QString& pMimeType)
     if (pMimeType == "application/widget") return "wgt";
     if (pMimeType == "application/vnd.apple-widget") return "wdgt"; //mime type invented by us :-(
     if (pMimeType == "application/x-shockwave-flash") return "swf";
+    if (pMimeType == "internal/bookmark") return "bkm";
+    if (pMimeType == "internal/link") return "lnk";
 
     return "";
 
@@ -595,7 +600,18 @@ UBMimeType::Enum UBFileSystemUtils::mimeTypeFromString(const QString& typeString
     {
         type = UBMimeType::UniboardTool;
     }
-
+    else if (typeString.startsWith("internal/bookmark"))
+    {
+        type = UBMimeType::Bookmark;
+    }
+    else if (typeString.startsWith("internal/link"))
+    {
+        type = UBMimeType::Link;
+    }
+    else if (typeString.startsWith("text/html"))
+    {
+        type = UBMimeType::Web;
+    }
     return type;
 }
 
diff --git a/Sankore-3.1/src/frameworks/UBFileSystemUtils.h b/Sankore-3.1/src/frameworks/UBFileSystemUtils.h
index dea35b5..70f543f 100644
--- a/Sankore-3.1/src/frameworks/UBFileSystemUtils.h
+++ b/Sankore-3.1/src/frameworks/UBFileSystemUtils.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBFILESYSTEMUTILS_H_
 #define UBFILESYSTEMUTILS_H_
 
diff --git a/Sankore-3.1/src/frameworks/UBGeometryUtils.cpp b/Sankore-3.1/src/frameworks/UBGeometryUtils.cpp
index 577115c..d8da926 100644
--- a/Sankore-3.1/src/frameworks/UBGeometryUtils.cpp
+++ b/Sankore-3.1/src/frameworks/UBGeometryUtils.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,221 +18,222 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBGeometryUtils.h"
-
-#include "core/memcheck.h"
-
-const double PI = 4.0 * atan(1.0);
-const int UBGeometryUtils::centimeterGraduationHeight = 15;
-const int UBGeometryUtils::halfCentimeterGraduationHeight = 10;
-const int UBGeometryUtils::millimeterGraduationHeight = 5;
-const int UBGeometryUtils::millimetersPerCentimeter = 10;
-const int UBGeometryUtils::millimetersPerHalfCentimeter = 5;
-const float UBGeometryUtils::inchSize = 25.4f;
-
-UBGeometryUtils::UBGeometryUtils()
-{
-    // NOOP
-}
-
-UBGeometryUtils::~UBGeometryUtils()
-{
-    // NOOP
-}
-
-QPolygonF UBGeometryUtils::lineToPolygon(const QLineF& pLine, const qreal& pWidth)
-{
-    qreal x1 = pLine.x1();
-    qreal y1 = pLine.y1();
-
-    qreal x2 = pLine.x2();
-    qreal y2 = pLine.y2();
-
-    qreal alpha = (90.0 - pLine.angle()) * PI / 180.0;
-    qreal hypothenuse = pWidth / 2;
-
-    // TODO UB 4.x PERF cache sin/cos table
-    qreal opposite = sin(alpha) * hypothenuse;
-    qreal adjacent = cos(alpha) * hypothenuse;
-
-    QPointF p1a(x1 - adjacent, y1 - opposite);
-    QPointF p1b(x1 + adjacent, y1 + opposite);
-
-    QPointF p2a(x2 - adjacent, y2 - opposite);
-    QPointF p2b(x2 + adjacent, y2 + opposite);
-
-    QPainterPath painterPath;
-
-    painterPath.moveTo(p1a);
-    painterPath.lineTo(p2a);
-
-    painterPath.arcTo(x2 - hypothenuse, y2 - hypothenuse, pWidth, pWidth, (90.0 + pLine.angle()), -180.0);
-
-    //painterPath.lineTo(p2b);
-    painterPath.lineTo(p1b);
-
-    painterPath.arcTo(x1 - hypothenuse, y1 - hypothenuse, pWidth, pWidth, -1 * (90.0 - pLine.angle()), -180.0);
-
-    painterPath.closeSubpath();
-
-    return painterPath.toFillPolygon();
-}
-
-QPolygonF UBGeometryUtils::lineToPolygon(const QPointF& pStart, const QPointF& pEnd,
-        const qreal& pStartWidth, const qreal& pEndWidth)
-{
-
-    qreal x1 = pStart.x();
-    qreal y1 = pStart.y();
-
-    qreal x2 = pEnd.x();
-    qreal y2 = pEnd.y();
-
-    QLineF line(pStart, pEnd);
-
-    qreal alpha = (90.0 - line.angle()) * PI / 180.0;
-    qreal hypothenuseStart = pStartWidth / 2;
-
-    qreal hypothenuseEnd = pEndWidth / 2;
-
-    qreal sinAlpha = sin(alpha);
-    qreal cosAlpha = cos(alpha);
-
-    // TODO UB 4.x PERF cache sin/cos table
-    qreal oppositeStart = sinAlpha * hypothenuseStart;
-    qreal adjacentStart = cosAlpha * hypothenuseStart;
-
-    QPointF p1a(x1 - adjacentStart, y1 - oppositeStart);
-    QPointF p1b(x1 + adjacentStart, y1 + oppositeStart);
-
-    qreal oppositeEnd = sinAlpha * hypothenuseEnd;
-    qreal adjacentEnd = cosAlpha * hypothenuseEnd;
-
-    QPointF p2a(x2 - adjacentEnd, y2 - oppositeEnd);
-
-    QPainterPath painterPath;
-
-    painterPath.moveTo(p1a);
-    painterPath.lineTo(p2a);
-
-    painterPath.arcTo(x2 - hypothenuseEnd, y2 - hypothenuseEnd, pEndWidth, pEndWidth, (90.0 + line.angle()), -180.0);
-
-    painterPath.lineTo(p1b);
-
-    painterPath.arcTo(x1 - hypothenuseStart, y1 - hypothenuseStart, pStartWidth, pStartWidth, -1 * (90.0 - line.angle()), -180.0);
-
-    painterPath.closeSubpath();
-
-    return painterPath.toFillPolygon();
-}
-
-QPolygonF UBGeometryUtils::arcToPolygon(const QLineF& startRadius, qreal spanAngleInDegrees, qreal width)
-{
-    qreal startAngleInDegrees = - startRadius.angle();
-    if (startAngleInDegrees > 180)
-        startAngleInDegrees -= 360;
-    else if (startAngleInDegrees < -180)
-        startAngleInDegrees += 360;
-
-    qreal radiusLength = startRadius.length();
-    qreal angle = 2 * asin(width / (2 * radiusLength)) * 180 / PI;
-    bool overlap = abs(spanAngleInDegrees) > 360 - angle;
-    if (overlap)
-        spanAngleInDegrees = spanAngleInDegrees < 0 ? -360 : 360;
-
-    qreal endAngleInDegrees = startAngleInDegrees + spanAngleInDegrees;
-
-    qreal innerRadius = radiusLength - width / 2;
-    QRectF innerSquare(
-        startRadius.p1().x() - innerRadius,
-        startRadius.p1().y() - innerRadius,
-        2 * innerRadius,
-        2 * innerRadius);
-    qreal outerRadius = radiusLength + width / 2;
-    QRectF outerSquare(
-        startRadius.p1().x() - outerRadius,
-        startRadius.p1().y() - outerRadius,
-        2 * outerRadius,
-        2 * outerRadius);
-    QRectF startSquare(
-        startRadius.p2().x() - width / 2,
-        startRadius.p2().y() - width / 2,
-        width,
-        width);
-    QRectF endSquare(
-        startRadius.p1().x() + radiusLength * cos(endAngleInDegrees * PI / 180.0) - width / 2,
-        startRadius.p1().y() + radiusLength * sin(endAngleInDegrees * PI / 180.0) - width / 2,
-        width,
-        width);
-
-    QPainterPath painterPath(
-        QPointF(
-            startRadius.p1().x() + innerRadius * cos(startAngleInDegrees * PI / 180.0),
-            startRadius.p1().y() + innerRadius * sin(startAngleInDegrees * PI / 180.0)));
-    startAngleInDegrees = - startAngleInDegrees;
-    endAngleInDegrees = - endAngleInDegrees;
-    spanAngleInDegrees = - spanAngleInDegrees;
-
-    if (overlap)
-    {
-        painterPath.addEllipse(outerSquare);
-        QPainterPath innerPainterPath;
-        innerPainterPath.addEllipse(innerSquare);
-        painterPath = painterPath.subtracted(innerPainterPath);
-    }
-    else
-    {
-        painterPath.arcTo(innerSquare, startAngleInDegrees, spanAngleInDegrees);
-        painterPath.arcTo(endSquare, 180.0 + endAngleInDegrees, spanAngleInDegrees > 0 ? -180.0 : 180.0);
-        painterPath.arcTo(outerSquare, endAngleInDegrees, - spanAngleInDegrees);
-        painterPath.arcTo(startSquare, startAngleInDegrees, spanAngleInDegrees > 0 ? -180.0 : 180.0);
-        painterPath.closeSubpath();
-    }
-
-    return painterPath.toFillPolygon();
-}
-
-QPointF UBGeometryUtils::pointConstrainedInRect(QPointF point, QRectF rect)
-{
-    return QPointF(qMax(rect.x(), qMin(rect.x() + rect.width(), point.x())), qMax(rect.y(), qMin(rect.y() + rect.height(), point.y())));
-}
-
-
-QPoint UBGeometryUtils::pointConstrainedInRect(QPoint point, QRect rect)
-{
-    return QPoint(qMax(rect.x(), qMin(rect.x() + rect.width(), point.x())), qMax(rect.y(), qMin(rect.y() + rect.height(), point.y())));
-}
-
-
-QRectF UBGeometryUtils::lineToInnerRect(const QLineF& pLine, const qreal& pWidth)
-{
-    qreal centerX = (pLine.x1() + pLine.x2()) / 2;
-    qreal centerY = (pLine.y1() + pLine.y2()) / 2;
-
-    // Please put a fucking comment here
-    qreal side = sqrt((pWidth * pWidth) / 2);
-    qreal halfSide = side / 2;
-
-    return QRectF(centerX - halfSide, centerY - halfSide, side, side);
-}
-
-
-void UBGeometryUtils::crashPointList(QVector<QPointF> &points)
-{
-   // QVector<QPointF> result(points);
-    int position = 1;
-
-    while(position < points.size())
-    {
-        if (points.at(position) == points.at(position - 1))
-        {
-            points.remove(position);
-        }
-        else
-        {
-            ++position;
-        }
-    }
-}
+
+
+
+#include "UBGeometryUtils.h"
+
+#include "core/memcheck.h"
+
+const double PI = 4.0 * atan(1.0);
+const int UBGeometryUtils::centimeterGraduationHeight = 15;
+const int UBGeometryUtils::halfCentimeterGraduationHeight = 10;
+const int UBGeometryUtils::millimeterGraduationHeight = 5;
+const int UBGeometryUtils::millimetersPerCentimeter = 10;
+const int UBGeometryUtils::millimetersPerHalfCentimeter = 5;
+const float UBGeometryUtils::inchSize = 25.4f;
+
+UBGeometryUtils::UBGeometryUtils()
+{
+    // NOOP
+}
+
+UBGeometryUtils::~UBGeometryUtils()
+{
+    // NOOP
+}
+
+QPolygonF UBGeometryUtils::lineToPolygon(const QLineF& pLine, const qreal& pWidth)
+{
+    qreal x1 = pLine.x1();
+    qreal y1 = pLine.y1();
+
+    qreal x2 = pLine.x2();
+    qreal y2 = pLine.y2();
+
+    qreal alpha = (90.0 - pLine.angle()) * PI / 180.0;
+    qreal hypothenuse = pWidth / 2;
+
+    // TODO UB 4.x PERF cache sin/cos table
+    qreal opposite = sin(alpha) * hypothenuse;
+    qreal adjacent = cos(alpha) * hypothenuse;
+
+    QPointF p1a(x1 - adjacent, y1 - opposite);
+    QPointF p1b(x1 + adjacent, y1 + opposite);
+
+    QPointF p2a(x2 - adjacent, y2 - opposite);
+    QPointF p2b(x2 + adjacent, y2 + opposite);
+
+    QPainterPath painterPath;
+
+    painterPath.moveTo(p1a);
+    painterPath.lineTo(p2a);
+
+    painterPath.arcTo(x2 - hypothenuse, y2 - hypothenuse, pWidth, pWidth, (90.0 + pLine.angle()), -180.0);
+
+    //painterPath.lineTo(p2b);
+    painterPath.lineTo(p1b);
+
+    painterPath.arcTo(x1 - hypothenuse, y1 - hypothenuse, pWidth, pWidth, -1 * (90.0 - pLine.angle()), -180.0);
+
+    painterPath.closeSubpath();
+
+    return painterPath.toFillPolygon();
+}
+
+QPolygonF UBGeometryUtils::lineToPolygon(const QPointF& pStart, const QPointF& pEnd,
+        const qreal& pStartWidth, const qreal& pEndWidth)
+{
+
+    qreal x1 = pStart.x();
+    qreal y1 = pStart.y();
+
+    qreal x2 = pEnd.x();
+    qreal y2 = pEnd.y();
+
+    QLineF line(pStart, pEnd);
+
+    qreal alpha = (90.0 - line.angle()) * PI / 180.0;
+    qreal hypothenuseStart = pStartWidth / 2;
+
+    qreal hypothenuseEnd = pEndWidth / 2;
+
+    qreal sinAlpha = sin(alpha);
+    qreal cosAlpha = cos(alpha);
+
+    // TODO UB 4.x PERF cache sin/cos table
+    qreal oppositeStart = sinAlpha * hypothenuseStart;
+    qreal adjacentStart = cosAlpha * hypothenuseStart;
+
+    QPointF p1a(x1 - adjacentStart, y1 - oppositeStart);
+    QPointF p1b(x1 + adjacentStart, y1 + oppositeStart);
+
+    qreal oppositeEnd = sinAlpha * hypothenuseEnd;
+    qreal adjacentEnd = cosAlpha * hypothenuseEnd;
+
+    QPointF p2a(x2 - adjacentEnd, y2 - oppositeEnd);
+
+    QPainterPath painterPath;
+
+    painterPath.moveTo(p1a);
+    painterPath.lineTo(p2a);
+
+    painterPath.arcTo(x2 - hypothenuseEnd, y2 - hypothenuseEnd, pEndWidth, pEndWidth, (90.0 + line.angle()), -180.0);
+
+    painterPath.lineTo(p1b);
+
+    painterPath.arcTo(x1 - hypothenuseStart, y1 - hypothenuseStart, pStartWidth, pStartWidth, -1 * (90.0 - line.angle()), -180.0);
+
+    painterPath.closeSubpath();
+
+    return painterPath.toFillPolygon();
+}
+
+QPolygonF UBGeometryUtils::arcToPolygon(const QLineF& startRadius, qreal spanAngleInDegrees, qreal width)
+{
+    qreal startAngleInDegrees = - startRadius.angle();
+    if (startAngleInDegrees > 180)
+        startAngleInDegrees -= 360;
+    else if (startAngleInDegrees < -180)
+        startAngleInDegrees += 360;
+
+    qreal radiusLength = startRadius.length();
+    qreal angle = 2 * asin(width / (2 * radiusLength)) * 180 / PI;
+    bool overlap = abs(spanAngleInDegrees) > 360 - angle;
+    if (overlap)
+        spanAngleInDegrees = spanAngleInDegrees < 0 ? -360 : 360;
+
+    qreal endAngleInDegrees = startAngleInDegrees + spanAngleInDegrees;
+
+    qreal innerRadius = radiusLength - width / 2;
+    QRectF innerSquare(
+        startRadius.p1().x() - innerRadius,
+        startRadius.p1().y() - innerRadius,
+        2 * innerRadius,
+        2 * innerRadius);
+    qreal outerRadius = radiusLength + width / 2;
+    QRectF outerSquare(
+        startRadius.p1().x() - outerRadius,
+        startRadius.p1().y() - outerRadius,
+        2 * outerRadius,
+        2 * outerRadius);
+    QRectF startSquare(
+        startRadius.p2().x() - width / 2,
+        startRadius.p2().y() - width / 2,
+        width,
+        width);
+    QRectF endSquare(
+        startRadius.p1().x() + radiusLength * cos(endAngleInDegrees * PI / 180.0) - width / 2,
+        startRadius.p1().y() + radiusLength * sin(endAngleInDegrees * PI / 180.0) - width / 2,
+        width,
+        width);
+
+    QPainterPath painterPath(
+        QPointF(
+            startRadius.p1().x() + innerRadius * cos(startAngleInDegrees * PI / 180.0),
+            startRadius.p1().y() + innerRadius * sin(startAngleInDegrees * PI / 180.0)));
+    startAngleInDegrees = - startAngleInDegrees;
+    endAngleInDegrees = - endAngleInDegrees;
+    spanAngleInDegrees = - spanAngleInDegrees;
+
+    if (overlap)
+    {
+        painterPath.addEllipse(outerSquare);
+        QPainterPath innerPainterPath;
+        innerPainterPath.addEllipse(innerSquare);
+        painterPath = painterPath.subtracted(innerPainterPath);
+    }
+    else
+    {
+        painterPath.arcTo(innerSquare, startAngleInDegrees, spanAngleInDegrees);
+        painterPath.arcTo(endSquare, 180.0 + endAngleInDegrees, spanAngleInDegrees > 0 ? -180.0 : 180.0);
+        painterPath.arcTo(outerSquare, endAngleInDegrees, - spanAngleInDegrees);
+        painterPath.arcTo(startSquare, startAngleInDegrees, spanAngleInDegrees > 0 ? -180.0 : 180.0);
+        painterPath.closeSubpath();
+    }
+
+    return painterPath.toFillPolygon();
+}
+
+QPointF UBGeometryUtils::pointConstrainedInRect(QPointF point, QRectF rect)
+{
+    return QPointF(qMax(rect.x(), qMin(rect.x() + rect.width(), point.x())), qMax(rect.y(), qMin(rect.y() + rect.height(), point.y())));
+}
+
+
+QPoint UBGeometryUtils::pointConstrainedInRect(QPoint point, QRect rect)
+{
+    return QPoint(qMax(rect.x(), qMin(rect.x() + rect.width(), point.x())), qMax(rect.y(), qMin(rect.y() + rect.height(), point.y())));
+}
+
+
+QRectF UBGeometryUtils::lineToInnerRect(const QLineF& pLine, const qreal& pWidth)
+{
+    qreal centerX = (pLine.x1() + pLine.x2()) / 2;
+    qreal centerY = (pLine.y1() + pLine.y2()) / 2;
+
+    // Please put a fucking comment here
+    qreal side = sqrt((pWidth * pWidth) / 2);
+    qreal halfSide = side / 2;
+
+    return QRectF(centerX - halfSide, centerY - halfSide, side, side);
+}
+
+
+void UBGeometryUtils::crashPointList(QVector<QPointF> &points)
+{
+   // QVector<QPointF> result(points);
+    int position = 1;
+
+    while(position < points.size())
+    {
+        if (points.at(position) == points.at(position - 1))
+        {
+            points.remove(position);
+        }
+        else
+        {
+            ++position;
+        }
+    }
+}
diff --git a/Sankore-3.1/src/frameworks/UBGeometryUtils.h b/Sankore-3.1/src/frameworks/UBGeometryUtils.h
index 72b35ec..3d762aa 100644
--- a/Sankore-3.1/src/frameworks/UBGeometryUtils.h
+++ b/Sankore-3.1/src/frameworks/UBGeometryUtils.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,39 +18,40 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBGEOMETRYUTILS_H_
-#define UBGEOMETRYUTILS_H_
-
-#include <QtGui>
-
-class UBGeometryUtils
-{
-    private:
-        UBGeometryUtils();
-        virtual ~UBGeometryUtils();
-
-    public:
-        static QPolygonF lineToPolygon(const QLineF& pLine, const qreal& pWidth);
-        static QRectF lineToInnerRect(const QLineF& pLine, const qreal& pWidth);
-
-        static QPolygonF arcToPolygon(const QLineF& startRadius, qreal spanAngle, qreal width);
-
-        static QPolygonF lineToPolygon(const QPointF& pStart, const QPointF& pEnd,
-                const qreal& pStartWidth, const qreal& pEndWidth);
-
-        static QPointF pointConstrainedInRect(QPointF point, QRectF rect);
-        static QPoint pointConstrainedInRect(QPoint point, QRect rect);
-
-        static void crashPointList(QVector<QPointF> &points);
-
-        const static int centimeterGraduationHeight;
-        const static int halfCentimeterGraduationHeight;
-        const static int millimeterGraduationHeight;
-        const static int millimetersPerCentimeter;
-        const static int millimetersPerHalfCentimeter;
-        const static float inchSize;
-};
-
-#endif /* UBGEOMETRYUTILS_H_ */
+
+
+
+#ifndef UBGEOMETRYUTILS_H_
+#define UBGEOMETRYUTILS_H_
+
+#include <QtGui>
+
+class UBGeometryUtils
+{
+    private:
+        UBGeometryUtils();
+        virtual ~UBGeometryUtils();
+
+    public:
+        static QPolygonF lineToPolygon(const QLineF& pLine, const qreal& pWidth);
+        static QRectF lineToInnerRect(const QLineF& pLine, const qreal& pWidth);
+
+        static QPolygonF arcToPolygon(const QLineF& startRadius, qreal spanAngle, qreal width);
+
+        static QPolygonF lineToPolygon(const QPointF& pStart, const QPointF& pEnd,
+                const qreal& pStartWidth, const qreal& pEndWidth);
+
+        static QPointF pointConstrainedInRect(QPointF point, QRectF rect);
+        static QPoint pointConstrainedInRect(QPoint point, QRect rect);
+
+        static void crashPointList(QVector<QPointF> &points);
+
+        const static int centimeterGraduationHeight;
+        const static int halfCentimeterGraduationHeight;
+        const static int millimeterGraduationHeight;
+        const static int millimetersPerCentimeter;
+        const static int millimetersPerHalfCentimeter;
+        const static float inchSize;
+};
+
+#endif /* UBGEOMETRYUTILS_H_ */
diff --git a/Sankore-3.1/src/frameworks/UBPlatformUtils.cpp b/Sankore-3.1/src/frameworks/UBPlatformUtils.cpp
index 7939e23..2de70a4 100644
--- a/Sankore-3.1/src/frameworks/UBPlatformUtils.cpp
+++ b/Sankore-3.1/src/frameworks/UBPlatformUtils.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBPlatformUtils.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/frameworks/UBPlatformUtils.h b/Sankore-3.1/src/frameworks/UBPlatformUtils.h
index f957a98..57a49f6 100644
--- a/Sankore-3.1/src/frameworks/UBPlatformUtils.h
+++ b/Sankore-3.1/src/frameworks/UBPlatformUtils.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBPLATFORMUTILS_H_
 #define UBPLATFORMUTILS_H_
 
@@ -87,18 +88,30 @@ struct KEYCODE{
 */
 struct KEYBT
 {
-    QChar symbol1;
-	QChar symbol2;
+    QChar simpleSymbol;
+    QChar shiftedSymbol;
+#if defined(Q_WS_MACX)
+    QChar capsedSymbol;
+#else
     bool capsLockSwitch;
-    int modifier1;
-    int modifier2;
+#endif
+    int modifierNo;
+    int modifierShift;
+    int modifierCaps;
     KEYCODE codes[8];
 
-    KEYBT(  QChar _symbol1,
-		    QChar _symbol2,
+    KEYBT(  QChar _simple,
+            QChar _shifted,
+#if defined(Q_WS_MACX)
+            QChar _capsed,
+#else 
             bool _capsLockSwitch,
-            int _modifier1,
-            int _modifier2,
+#endif
+            int _modNo,
+            int _modShift,
+#if defined(Q_WS_MACX)
+            int _modCaps,
+#endif
             KEYCODE c1 = 0,
             KEYCODE c2 = 0,
             KEYCODE c3 = 0,
@@ -107,11 +120,18 @@ struct KEYBT
             KEYCODE c6 = 0,
             KEYCODE c7 = 0,
             KEYCODE c8 = 0)
-                :symbol1(_symbol1)
-                ,symbol2(_symbol2)
+                :simpleSymbol(_simple)
+                ,shiftedSymbol(_shifted)
+#if defined(Q_WS_MACX)
+                ,capsedSymbol(_capsed)
+#else
                 ,capsLockSwitch(_capsLockSwitch)
-                ,modifier1(_modifier1)
-                ,modifier2(_modifier2)
+#endif
+                ,modifierNo(_modNo)
+                ,modifierShift(_modShift)
+#if defined(Q_WS_MACX)
+                ,modifierCaps(_modCaps)
+#endif
     {
         codes[0] = c1;
         codes[1] = c2;
diff --git a/Sankore-3.1/src/frameworks/UBPlatformUtils_linux.cpp b/Sankore-3.1/src/frameworks/UBPlatformUtils_linux.cpp
index 159ce87..d101594 100644
--- a/Sankore-3.1/src/frameworks/UBPlatformUtils_linux.cpp
+++ b/Sankore-3.1/src/frameworks/UBPlatformUtils_linux.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBPlatformUtils.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/frameworks/UBPlatformUtils_mac.mm b/Sankore-3.1/src/frameworks/UBPlatformUtils_mac.mm
index 72dcb75..11b295d 100644
--- a/Sankore-3.1/src/frameworks/UBPlatformUtils_mac.mm
+++ b/Sankore-3.1/src/frameworks/UBPlatformUtils_mac.mm
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #include "MacUtils.h"
 #include "UBPlatformUtils.h"
@@ -419,13 +440,25 @@ KEYBT* createKeyBt(const UCKeyboardLayout* keyLayout, int vkk)
     UInt32 kbdType = kKeyboardISO;
 
     UniCharCount cnt1, cnt2;
-    UniChar unicodeString1[100], unicodeString2[100], unicodeString3[100];
+    UniChar unicodeSimple[100], unicodeShifted[100], unicodeCapsed[100];
 
-    UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, 0, kbdType,  kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt1, unicodeString1);
-    UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, (shiftKey >> 8) & 0xff, kbdType,  kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt2, unicodeString2);
-    UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, (alphaLock >> 8) & 0xff, kbdType,  kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt2, unicodeString3);
+    UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, 0, kbdType,  kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt1, unicodeSimple);
+    UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, (shiftKey >> 8) & 0xff, kbdType,  kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt2, unicodeShifted);
+    UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, (alphaLock >> 8) & 0xff, kbdType,  kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt2, unicodeCapsed);
 
-    return new KEYBT(unicodeString1[0], unicodeString2[0], unicodeString1[0] != unicodeString3[0], 0,0, KEYCODE(0, vkk, 0), KEYCODE(0, vkk, 1));
+    // workaround for wrong character returned from UCKeyTranslate for swiss-french keyboard.
+    if (unicodeSimple[0] == 94 && unicodeShifted[0] == 80)
+    {
+        unicodeShifted[0] = 168;
+        unicodeCapsed[0] = unicodeSimple[0];
+    }
+
+    if (unicodeSimple[0] == 94 && unicodeShifted[0] == 63)
+    {
+        unicodeShifted[0] = 96;
+        unicodeCapsed[0] = unicodeSimple[0];
+    }
+    return new KEYBT(unicodeSimple[0], unicodeShifted[0], unicodeCapsed[0], 0,0,0, KEYCODE(0, vkk, 0), KEYCODE(0, vkk, 1), KEYCODE(0, vkk, 2));
 }
 
 
diff --git a/Sankore-3.1/src/frameworks/UBPlatformUtils_win.cpp b/Sankore-3.1/src/frameworks/UBPlatformUtils_win.cpp
index ac41552..edb7340 100644
--- a/Sankore-3.1/src/frameworks/UBPlatformUtils_win.cpp
+++ b/Sankore-3.1/src/frameworks/UBPlatformUtils_win.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBPlatformUtils.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/frameworks/UBStringUtils.cpp b/Sankore-3.1/src/frameworks/UBStringUtils.cpp
index f4c0d14..1e17b01 100644
--- a/Sankore-3.1/src/frameworks/UBStringUtils.cpp
+++ b/Sankore-3.1/src/frameworks/UBStringUtils.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBStringUtils.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/frameworks/UBStringUtils.h b/Sankore-3.1/src/frameworks/UBStringUtils.h
index 9082220..587a628 100644
--- a/Sankore-3.1/src/frameworks/UBStringUtils.h
+++ b/Sankore-3.1/src/frameworks/UBStringUtils.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBSTRINGUTILS_H
 #define UBSTRINGUTILS_H
 
diff --git a/Sankore-3.1/src/frameworks/UBVersion.cpp b/Sankore-3.1/src/frameworks/UBVersion.cpp
index ea89a77..854101d 100644
--- a/Sankore-3.1/src/frameworks/UBVersion.cpp
+++ b/Sankore-3.1/src/frameworks/UBVersion.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBVersion.h"
 
 #include <QtCore>
diff --git a/Sankore-3.1/src/frameworks/UBVersion.h b/Sankore-3.1/src/frameworks/UBVersion.h
index 4931776..b2aed9b 100644
--- a/Sankore-3.1/src/frameworks/UBVersion.h
+++ b/Sankore-3.1/src/frameworks/UBVersion.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBVERSION_H_
 #define UBVERSION_H_
 
diff --git a/Sankore-3.1/src/frameworks/frameworks.pri b/Sankore-3.1/src/frameworks/frameworks.pri
index 74d6edb..6f19fd3 100644
--- a/Sankore-3.1/src/frameworks/frameworks.pri
+++ b/Sankore-3.1/src/frameworks/frameworks.pri
@@ -31,15 +31,6 @@ macx {
 }       
 
 
-linux-g++ {
-
-    SOURCES  += src/frameworks/UBPlatformUtils_linux.cpp
-}         
-linux-g++-32 {
-
-    SOURCES  += src/frameworks/UBPlatformUtils_linux.cpp
-}
-linux-g++-64 {
-
-    SOURCES  += src/frameworks/UBPlatformUtils_linux.cpp
+linux-* {
+   SOURCES  += src/frameworks/UBPlatformUtils_linux.cpp
 }
diff --git a/Sankore-3.1/src/globals/UBGlobals.h b/Sankore-3.1/src/globals/UBGlobals.h
index fd77d80..9a50845 100644
--- a/Sankore-3.1/src/globals/UBGlobals.h
+++ b/Sankore-3.1/src/globals/UBGlobals.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
diff --git a/Sankore-3.1/src/gui/UBActionPalette.cpp b/Sankore-3.1/src/gui/UBActionPalette.cpp
index 5bb90a2..1a00f01 100644
--- a/Sankore-3.1/src/gui/UBActionPalette.cpp
+++ b/Sankore-3.1/src/gui/UBActionPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBActionPalette.h"
 
 #include "core/memcheck.h"
@@ -109,6 +110,7 @@ void UBActionPalette::addAction(QAction* action)
     UBActionPaletteButton* button = createPaletteButton(action, this);
 
     layout()->addWidget(button);
+    layout()->setAlignment(button,Qt::AlignHCenter | Qt::AlignVCenter);
 
     mActions << action;
 }
diff --git a/Sankore-3.1/src/gui/UBActionPalette.h b/Sankore-3.1/src/gui/UBActionPalette.h
index cf51704..ab53b57 100644
--- a/Sankore-3.1/src/gui/UBActionPalette.h
+++ b/Sankore-3.1/src/gui/UBActionPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBACTIONPALETTE_H_
 #define UBACTIONPALETTE_H_
 
diff --git a/Sankore-3.1/src/gui/UBBlackoutWidget.cpp b/Sankore-3.1/src/gui/UBBlackoutWidget.cpp
index 2475c5e..da2aef3 100644
--- a/Sankore-3.1/src/gui/UBBlackoutWidget.cpp
+++ b/Sankore-3.1/src/gui/UBBlackoutWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 
 #include "UBBlackoutWidget.h"
diff --git a/Sankore-3.1/src/gui/UBBlackoutWidget.h b/Sankore-3.1/src/gui/UBBlackoutWidget.h
index ab62bb8..bb606fd 100644
--- a/Sankore-3.1/src/gui/UBBlackoutWidget.h
+++ b/Sankore-3.1/src/gui/UBBlackoutWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBBLACKOUTWIDGET_H_
 #define UBBLACKOUTWIDGET_H_
 
diff --git a/Sankore-3.1/src/gui/UBCachePropertiesWidget.cpp b/Sankore-3.1/src/gui/UBCachePropertiesWidget.cpp
index ea7e2f9..26c2a5d 100644
--- a/Sankore-3.1/src/gui/UBCachePropertiesWidget.cpp
+++ b/Sankore-3.1/src/gui/UBCachePropertiesWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QColor>
 #include <QPainter>
 #include <QPixmap>
@@ -31,30 +32,99 @@
 #include "core/UBApplicationController.h"
 #include "globals/UBGlobals.h"
 #include "board/UBBoardController.h"
+#include "board/UBBoardView.h"
 #include "domain/UBGraphicsScene.h"
 
 #include "core/memcheck.h"
 
 static QVector<UBGraphicsCache*> mCaches;
 
+UBCachePreviewWidget::UBCachePreviewWidget(QWidget *parent)
+    : QWidget(parent)
+    , mHoleSize(QSize())
+    , mShape(eMaskShape_Circle)
+{
+}
+
+void UBCachePreviewWidget::setHoleSize(QSize size)
+{
+    mHoleSize = size;
+    update();
+}
+
+void UBCachePreviewWidget::setShape(eMaskShape shape)
+{
+    mShape = shape;
+}
+
+void UBCachePreviewWidget::setMaskColor(QColor color)
+{
+    mMaskColor = color;
+    update();
+}
+
+QSize UBCachePreviewWidget::sizeHint() const
+{
+    return size();
+}
+
+void UBCachePreviewWidget::paintEvent(QPaintEvent *event)
+{
+    QWidget::paintEvent(event);
+
+    QPainter painter(this);
+    painter.setPen(mMaskColor);
+    painter.setBrush(mMaskColor);
+    painter.drawRect(rect());
+    painter.setBrush(QColor(Qt::white));
+
+    UBBoardView *view = UBApplication::boardController->controlView();
+    qreal scaleRatio = static_cast<qreal>(rect().width())/static_cast<qreal>(view->width());
+    qreal holeWidth = mHoleSize.width()*scaleRatio;
+    qreal holeHeight = mHoleSize.height()*scaleRatio;
+
+    if (eMaskShape_Circle == mShape)
+        painter.drawEllipse(rect().center(), static_cast<int>(holeWidth/2), static_cast<int>(holeHeight/2));
+
+    if (eMaskShap_Rectangle == mShape)
+        painter.drawRect(rect().center().x() - holeWidth/2, rect().center().y() - holeHeight/2, holeWidth, holeHeight);
+}
+
+void UBCachePreviewWidget::resizeEvent(QResizeEvent *event)
+{
+    Q_UNUSED(event);
+    UBBoardView *view = UBApplication::boardController->controlView();
+    qreal aspectRatio = static_cast<qreal>(view->height())/static_cast<qreal>(view->width());
+
+    QSize newSize(width(),width()*aspectRatio);
+    updateGeometry();
+    resize(newSize);
+
+
+    QWidget::resizeEvent(event);
+}
+
 UBCachePropertiesWidget::UBCachePropertiesWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent)
   , mpLayout(NULL)
   , mpCachePropertiesLabel(NULL)
   , mpColorLabel(NULL)
   , mpShapeLabel(NULL)
-  , mpSizeLabel(NULL)
-  , mpColor(NULL)
+  , mpWidthLabel(NULL)
+  , mpSelectColorButton(NULL)
   , mpSquareButton(NULL)
   , mpCircleButton(NULL)
   , mpCloseButton(NULL)
-  , mpSizeSlider(NULL)
+  , mpWidthSlider(NULL)
   , mpColorLayout(NULL)
   , mpShapeLayout(NULL)
-  , mpSizeLayout(NULL)
   , mpCloseLayout(NULL)
   , mpProperties(NULL)
+  , mpSizeLayout(NULL)
   , mpPropertiesLayout(NULL)
+  , mActualShape(eMaskShape_Circle)
   , mpCurrentCache(NULL)
+  , mKeepAspectRatio(true)
+  , mOtherSliderUsed(false)
 {
     setObjectName(name);
 
@@ -62,12 +132,10 @@ UBCachePropertiesWidget::UBCachePropertiesWidget(QWidget *parent, const char *na
 
     mName = "CachePropWidget";
     mVisibleState = false;
-    mIconToLeft = QPixmap(":images/cache_open.png");
-    mIconToRight = QPixmap(":images/cache_close.png");
     setContentsMargins(10, 10, 10, 10);
 
     // Build the UI
-    mpLayout = new QVBoxLayout();
+    mpLayout = new QVBoxLayout(0);
     setLayout(mpLayout);
 
     // Title
@@ -76,26 +144,31 @@ UBCachePropertiesWidget::UBCachePropertiesWidget(QWidget *parent, const char *na
     mpLayout->addWidget(mpCachePropertiesLabel, 0);
 
     // Properties Box
-    mpProperties = new QWidget(this);
+    mpProperties = new QWidget(0);
     mpProperties->setObjectName("DockPaletteWidgetBox");
     mpLayout->addWidget(mpProperties, 1);
-    mpPropertiesLayout = new QVBoxLayout();
+    mpPropertiesLayout = new QVBoxLayout(0);
     mpProperties->setLayout(mpPropertiesLayout);
 
-
-    // Color
-    mpColorLayout = new QHBoxLayout();
+    // Color and Alpha
+    mpColorLayout = new QHBoxLayout(mpProperties);
     mpColorLabel = new QLabel(tr("Color:"), mpProperties);
-    mpColor = new QPushButton(mpProperties);
-    mpColor->setObjectName("DockPaletteWidgetButton");
-    updateCacheColor(Qt::black);
+    mpSelectColorButton = new QPushButton(mpProperties);
+    mpSelectColorButton->setObjectName("DockPaletteWidgetButton");
     mpColorLayout->addWidget(mpColorLabel, 0);
-    mpColorLayout->addWidget(mpColor, 0);
-    mpColorLayout->addStretch(1);
+    mpColorLayout->addWidget(mpSelectColorButton, 0);
+    mpAlphaLabel = new QLabel(tr("Alpha:"), mpProperties);
+    mpAplhaSlider = new QSlider(Qt::Horizontal, mpProperties);
+    mpAplhaSlider->setMinimumHeight(20);
+    mpAplhaSlider->setMinimum(178);
+    mpAplhaSlider->setMaximum(255);
+    mpAplhaSlider->setValue(255);
+    mpColorLayout->addWidget(mpAlphaLabel, 0);
+    mpColorLayout->addWidget(mpAplhaSlider, 1);
     mpPropertiesLayout->addLayout(mpColorLayout, 0);
 
     // Shape
-    mpShapeLayout = new QHBoxLayout();
+    mpShapeLayout = new QHBoxLayout(0);
     mpShapeLabel = new QLabel(tr("Shape:"), mpProperties);
     mpSquareButton = new QPushButton(mpProperties);
     mpSquareButton->setIcon(QIcon(":images/cache_square.png"));
@@ -110,23 +183,68 @@ UBCachePropertiesWidget::UBCachePropertiesWidget(QWidget *parent, const char *na
     mpShapeLayout->addWidget(mpCircleButton, 0);
     mpShapeLayout->addStretch(1);
     mpPropertiesLayout->addLayout(mpShapeLayout, 0);
-
     mpCircleButton->setChecked(true);
 
     // Shape Size
-    mpSizeLayout = new QHBoxLayout();
-    mpSizeLabel = new QLabel(tr("Size:"), mpProperties);
-    mpSizeSlider = new QSlider(Qt::Horizontal, mpProperties);
-    mpSizeSlider->setMinimumHeight(20);
-    mpSizeSlider->setMinimum(50);
-    mpSizeSlider->setMaximum(MAX_SHAPE_WIDTH);
-    mpSizeLayout->addWidget(mpSizeLabel, 0);
-    mpSizeLayout->addWidget(mpSizeSlider, 1);
+    connect(UBApplication::boardController->controlView(), SIGNAL(resized(QResizeEvent *)), this, SLOT(onControlViewResized(QResizeEvent *)));
+    connect(UBApplication::boardController, SIGNAL(zoomChanged(qreal)), this, SLOT(onZoomChanged(qreal)));
+    minimumShapeSize = QSize(100,100);
+
+    mpSizeLayout = new QVBoxLayout(0);
+    mpGeometryLabel = new QLabel(tr("Geometry:"), mpProperties);
+    mpSizeLayout->addWidget(mpGeometryLabel, 1);
+    mKeepAspectRatio = UBSettings::settings()->cacheKeepAspectRatio->get().toBool();
+
+    mpWidthLabel = new QLabel(tr("Width: "), mpProperties);
+    mpWidthSlider = new QSlider(Qt::Horizontal, mpProperties);
+    mpWidthSlider->setMinimumHeight(20);
+    mpWidthSlider->setMinimum(minimumShapeSize.width());
+    mpWidthSlider->setMaximum(maximumShapeSize.width());
+    mpWidthSlider->setValue(minimumShapeSize.width());
+    mpSizeLayout->addWidget(mpWidthLabel, 0);
+    mpSizeLayout->addWidget(mpWidthSlider, 1);
+
+    mpHeightLabel = new QLabel(tr("Height:"), mpProperties);
+    mpHeightSlider = new QSlider(Qt::Horizontal, mpProperties);
+    mpHeightSlider->setMinimumHeight(20);
+    mpHeightSlider->setMinimum(minimumShapeSize.height());
+    mpHeightSlider->setMaximum(maximumShapeSize.height());
+    mpHeightSlider->setValue(minimumShapeSize.height());
+    mpSizeLayout->addWidget(mpHeightLabel, 0);
+    mpSizeLayout->addWidget(mpHeightSlider, 1);
+
+    mpKeepAspectRatioCheckbox = new QCheckBox(tr("Keep proportions"), mpProperties);
+    mpKeepAspectRatioCheckbox->setTristate(false);
+    mpKeepAspectRatioCheckbox->setChecked(mKeepAspectRatio);
+    mpSizeLayout->addWidget(mpKeepAspectRatioCheckbox, 0);
     mpPropertiesLayout->addLayout(mpSizeLayout, 0);
 
+    // Mode
+    mpModeLayout = new QVBoxLayout(0);
+    mpModeLabel = new QLabel(tr("Mode:"), mpProperties);
+    mpModeComboBox = new QComboBox(mpProperties);
+    mpModeComboBox->setObjectName("CacheModeSelectionComboBox");
+    mpModeComboBox->addItem(tr("On Click"), UBGraphicsCache::OnClick);
+    mpModeComboBox->addItem(tr("Persistent"), UBGraphicsCache::Persistent);
+    mpModeLayout->addWidget(mpModeLabel);
+    mpModeLayout->addWidget(mpModeComboBox);
+
+    mpPropertiesLayout->addLayout(mpModeLayout, 0);
+
+    // Preview
+    mpPreviewLayout = new QVBoxLayout(0);
+    mpPreviewLabel = new QLabel(tr("Preview:"), mpProperties);
+    mpPreviewWidget = new UBCachePreviewWidget(mpProperties);
+    QVBoxLayout *previewWidgetLayout = new QVBoxLayout(0);
+    previewWidgetLayout->addStretch(1);
+    mpPreviewWidget->setHoleSize(mOldHoleSize);
+    mpPreviewLayout->addWidget(mpPreviewLabel);
+    mpPreviewLayout->addWidget(mpPreviewWidget,0);
+    mpPropertiesLayout->addLayout(mpPreviewLayout,0);
+
     // Close
-    mpCloseLayout =  new QHBoxLayout();
-    mpCloseButton = new QPushButton(tr("Close"), mpProperties);
+    mpCloseLayout =  new QHBoxLayout(0);
+    mpCloseButton = new QPushButton(tr("Close cache"), mpProperties);
     mpCloseButton->setObjectName("DockPaletteWidgetButton");
     mpCloseLayout->addWidget(mpCloseButton, 0);
     mpCloseLayout->addStretch(1);
@@ -137,96 +255,23 @@ UBCachePropertiesWidget::UBCachePropertiesWidget(QWidget *parent, const char *na
 
     // Connect signals / slots
     connect(mpCloseButton, SIGNAL(clicked()), this, SLOT(onCloseClicked()));
-    connect(mpColor, SIGNAL(clicked()), this, SLOT(onColorClicked()));
+    connect(mpSelectColorButton, SIGNAL(clicked()), this, SLOT(onColorClicked()));
     connect(mpCircleButton, SIGNAL(clicked()), this, SLOT(updateShapeButtons()));
     connect(mpSquareButton, SIGNAL(clicked()), this, SLOT(updateShapeButtons()));
-    connect(mpSizeSlider, SIGNAL(valueChanged(int)), this, SLOT(onSizeChanged(int)));
+    connect(mpWidthSlider, SIGNAL(valueChanged(int)), this, SLOT(onWidthChanged(int)));
+    connect(mpHeightSlider, SIGNAL(valueChanged(int)), this, SLOT(onHeightChanged(int)));
+    connect(mpKeepAspectRatioCheckbox, SIGNAL(stateChanged(int)), this, SLOT(onKeepAspectRatioChanged(int)));
+    connect(mpModeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onModeChanged(int)));
+    connect(mpAplhaSlider, SIGNAL(valueChanged(int)), this, SLOT(onAlphaChanged(int)));
     connect(UBApplication::boardController, SIGNAL(pageChanged()), this, SLOT(updateCurrentCache()));
     connect(UBApplication::boardController, SIGNAL(cacheEnabled()), this, SLOT(onCacheEnabled()));
+
+    mOldHoleSize = QSize(mpWidthSlider->value(), mpHeightSlider->value());
 }
 
 UBCachePropertiesWidget::~UBCachePropertiesWidget()
 {
-    if(NULL != mpCachePropertiesLabel)
-    {
-        delete mpCachePropertiesLabel;
-        mpCachePropertiesLabel = NULL;
-    }
-    if(NULL != mpColorLabel)
-    {
-        delete mpColorLabel;
-        mpColorLabel = NULL;
-    }
-    if(NULL != mpShapeLabel)
-    {
-        delete mpShapeLabel;
-        mpShapeLabel = NULL;
-    }
-    if(NULL != mpSizeLabel)
-    {
-        delete mpSizeLabel;
-        mpSizeLabel = NULL;
-    }
-    if(NULL != mpColor)
-    {
-        delete mpColor;
-        mpColor = NULL;
-    }
-    if(NULL != mpSquareButton)
-    {
-        delete mpSquareButton;
-        mpSquareButton = NULL;
-    }
-    if(NULL != mpCircleButton)
-    {
-        delete mpCircleButton;
-        mpCircleButton = NULL;
-    }
-    if(NULL != mpCloseButton)
-    {
-        delete mpCloseButton;
-        mpCloseButton = NULL;
-    }
-    if(NULL != mpSizeSlider)
-    {
-        delete mpSizeSlider;
-        mpSizeSlider = NULL;
-    }
-    if(NULL != mpColorLayout)
-    {
-        delete mpColorLayout;
-        mpColorLayout = NULL;
-    }
-    if(NULL != mpShapeLayout)
-    {
-        delete mpShapeLayout;
-        mpShapeLayout = NULL;
-    }
-    if(NULL != mpSizeLayout)
-    {
-        delete mpSizeLayout;
-        mpSizeLayout = NULL;
-    }
-    if(NULL != mpCloseLayout)
-    {
-        delete mpCloseLayout;
-        mpCloseLayout = NULL;
-    }
-    if(NULL != mpPropertiesLayout)
-    {
-        delete mpPropertiesLayout;
-        mpPropertiesLayout = NULL;
-    }
-    if(NULL != mpProperties)
-    {
-        delete mpProperties;
-        mpProperties = NULL;
-    }
-    if(NULL != mpLayout)
-    {
-        delete mpLayout;
-        mpLayout = NULL;
-    }
+
 }
 
 void UBCachePropertiesWidget::onCloseClicked()
@@ -249,9 +294,10 @@ void UBCachePropertiesWidget::onCloseClicked()
     }
 }
 
-void UBCachePropertiesWidget::updateCacheColor(QColor color)
+void UBCachePropertiesWidget::syncCacheColor(QColor color)
 {
     mActualColor = color;
+    mpAplhaSlider->setValue(color.alpha());
 
     //  Update the color on the color button
     QPixmap pix(32, 32);
@@ -265,19 +311,23 @@ void UBCachePropertiesWidget::updateCacheColor(QColor color)
 
     p.end();
 
-    mpColor->setIcon(QIcon(pix));
+    mpSelectColorButton->setIcon(QIcon(pix));
 
     if(NULL != mpCurrentCache)
     {
         mpCurrentCache->setMaskColor(mActualColor);
     }
+
+    mpPreviewWidget->setMaskColor(mActualColor);
+    UBSettings::settings()->cacheColor->set(QString("%1 %2 %3 %4").arg(mActualColor.red()).arg(mActualColor.green()).arg(mActualColor.blue()).arg(mActualColor.alpha()));
 }
 
 void UBCachePropertiesWidget::onColorClicked()
 {
     // Show the color picker
     QColor newColor = QColorDialog::getColor(mActualColor,this);
-    updateCacheColor(newColor);
+    if (QColor::Invalid	 != newColor.spec())
+        syncCacheColor(newColor);
 }
 
 void UBCachePropertiesWidget::updateShapeButtons()
@@ -297,6 +347,11 @@ void UBCachePropertiesWidget::updateShapeButtons()
     {
         mpCurrentCache->setMaskShape(mActualShape);
     }
+
+    if (NULL != mpPreviewWidget)
+    {
+        mpPreviewWidget->setShape(mActualShape);
+    }
 }
 
 void UBCachePropertiesWidget::updateCurrentCache()
@@ -326,14 +381,19 @@ void UBCachePropertiesWidget::updateCurrentCache()
                 emit showTab(this);
                 mpCurrentCache = dynamic_cast<UBGraphicsCache*>(it);
                 if((NULL != mpCurrentCache) && (!mCaches.contains(mpCurrentCache)))
-                {
                     mCaches.append(mpCurrentCache);
-                }
+                else
+                    return
 
                 // Update the values of the cache properties
-                mpSizeSlider->setValue(mpCurrentCache->shapeWidth());
-                updateCacheColor(mpCurrentCache->maskColor());
-                switch(mpCurrentCache->maskshape())
+                mpWidthSlider->setValue(mpCurrentCache->holeWidth());
+                mpHeightSlider->setValue(mpCurrentCache->holeHeight());
+                syncCacheColor(mpCurrentCache->maskColor());
+                mpPreviewWidget->setHoleSize(QSize(mpWidthSlider->value(), mpHeightSlider->value()));
+                mpCurrentCache->setMode(UBSettings::settings()->cacheMode->get().toInt());
+
+                mActualShape = mpCurrentCache->maskshape();
+                switch(mActualShape)
                 {
                     case eMaskShape_Circle:
                         mpCircleButton->setChecked(true);
@@ -345,7 +405,10 @@ void UBCachePropertiesWidget::updateCurrentCache()
                         break;
                 }
 
+
+                mpPreviewWidget->setShape(mActualShape);
                 return;
+
             }
         }
     }
@@ -359,16 +422,102 @@ void UBCachePropertiesWidget::updateCurrentCache()
     setDisabled(true);
 }
 
-void UBCachePropertiesWidget::onSizeChanged(int newSize)
+void UBCachePropertiesWidget::onWidthChanged(int newSize)
 {
     if(NULL != mpCurrentCache)
     {
-        mpCurrentCache->setShapeWidth(newSize);
+        if(mKeepAspectRatio)
+        {
+            if(!mOtherSliderUsed)
+            {
+                mOtherSliderUsed = true;
+                mpHeightSlider->setValue(mpHeightSlider->value()*newSize/mOldHoleSize.width());
+            }
+            mOldHoleSize.setHeight(mpHeightSlider->value());
+        }
+        else
+            mpCurrentCache->setHoleWidth(newSize);
+
+        mOldHoleSize.setWidth(newSize);
+        mpPreviewWidget->setHoleSize(mOldHoleSize);
+        mpCurrentCache->setHoleSize(mOldHoleSize);
+        mOtherSliderUsed = false;
     }
 }
 
+void UBCachePropertiesWidget::onHeightChanged(int newSize)
+{
+    if(NULL != mpCurrentCache)
+    {
+        if (mKeepAspectRatio)
+        {
+            if(!mOtherSliderUsed)
+            {
+                mOtherSliderUsed = true;
+                mpWidthSlider->setValue(mpWidthSlider->value()*newSize/mOldHoleSize.height());
+            }
+             mOldHoleSize.setWidth(mpWidthSlider->value());
+        }
+        else
+            mpCurrentCache->setHoleHeight(newSize);
+
+        mOldHoleSize.setHeight(newSize);
+        mpPreviewWidget->setHoleSize(mOldHoleSize);
+        mpCurrentCache->setHoleSize(mOldHoleSize);
+        mOtherSliderUsed = false;
+    }
+}
+
+
+void UBCachePropertiesWidget::onKeepAspectRatioChanged(int state)
+{
+    Qt::CheckState cur_state = static_cast<Qt::CheckState>(state);
+    mKeepAspectRatio = Qt::Checked == cur_state;
+
+    UBSettings::settings()->cacheKeepAspectRatio->set(mKeepAspectRatio);
+
+}
+
 void UBCachePropertiesWidget::onCacheEnabled()
 {
     emit showTab(this);
 }
 
+void UBCachePropertiesWidget::onModeChanged(int mode)
+{
+    mpCurrentCache->setMode(mode);
+    UBSettings::settings()->cacheMode->set(mode);
+}
+
+void UBCachePropertiesWidget::onAlphaChanged(int alpha)
+{
+    mActualColor.setAlpha(alpha);
+    syncCacheColor(mActualColor);
+}
+
+void UBCachePropertiesWidget::onControlViewResized(QResizeEvent *event)
+{
+    Q_UNUSED(event);
+    maximumShapeSize = UBApplication::boardController->controlView()->size();
+    if (mKeepAspectRatio)
+    {
+        int maxSize = qMax(maximumShapeSize.width(), maximumShapeSize.height());
+        mpWidthSlider->setMaximum(maxSize);
+        mpHeightSlider->setMaximum(maxSize);
+    }
+    else
+    {
+        mpWidthSlider->setMaximum(maximumShapeSize.width());
+        mpHeightSlider->setMaximum(maximumShapeSize.height());
+    }
+}
+
+void UBCachePropertiesWidget::onZoomChanged(qreal newZoom)
+{
+    Q_UNUSED(newZoom)
+
+    mpWidthSlider->setMaximum(maximumShapeSize.width());
+    mpHeightSlider->setMaximum(maximumShapeSize.height());
+    if (mpCurrentCache)
+        mpCurrentCache->setHoleSize(QSize(mpWidthSlider->value(), mpHeightSlider->value()));
+}
diff --git a/Sankore-3.1/src/gui/UBCachePropertiesWidget.h b/Sankore-3.1/src/gui/UBCachePropertiesWidget.h
index edc8cbe..a564f93 100644
--- a/Sankore-3.1/src/gui/UBCachePropertiesWidget.h
+++ b/Sankore-3.1/src/gui/UBCachePropertiesWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBCACHEPROPERTIESWIDGET_H
 #define UBCACHEPROPERTIESWIDGET_H
 
@@ -34,7 +35,25 @@
 #include "UBDockPaletteWidget.h"
 #include "tools/UBGraphicsCache.h"
 
-#define MAX_SHAPE_WIDTH     200
+class UBCachePreviewWidget : public QWidget
+{
+public:
+    UBCachePreviewWidget(QWidget *parent = NULL);
+    
+    void setHoleSize(QSize size);
+    void setShape(eMaskShape shape);
+    void setMaskColor(QColor color);
+
+private:
+    QSize sizeHint() const;
+    void paintEvent(QPaintEvent *event);
+    void resizeEvent(QResizeEvent *event);
+
+private:
+    QSize mHoleSize;
+    eMaskShape mShape;
+    QColor mMaskColor;
+};
 
 class UBCachePropertiesWidget : public UBDockPaletteWidget
 {
@@ -48,6 +67,9 @@ public:
         return mode == eUBDockPaletteWidget_BOARD;
     }
 
+    QPixmap iconToLeft() const {return QPixmap(":images/cache_open.png");}
+    QPixmap iconToRight() const {return QPixmap(":images/cache_open.png");}
+
 public slots:
     void updateCurrentCache();
 
@@ -56,33 +78,55 @@ signals:
 
 private slots:
     void onCloseClicked();
-    void updateCacheColor(QColor color);
+    void syncCacheColor(QColor color);
     void onColorClicked();
     void updateShapeButtons();
-    void onSizeChanged(int newSize);
+    void onWidthChanged(int newSize);
+    void onHeightChanged(int newSize);
+    void onKeepAspectRatioChanged(int state);
     void onCacheEnabled();
+    void onModeChanged(int mode);
+    void onAlphaChanged(int alpha);
+    void onControlViewResized(QResizeEvent *event);
+    void onZoomChanged(qreal newZoom);
 
 private:
     QVBoxLayout* mpLayout;
     QLabel* mpCachePropertiesLabel;
     QLabel* mpColorLabel;
+    QLabel* mpAlphaLabel;
     QLabel* mpShapeLabel;
-    QLabel* mpSizeLabel;
-    QPushButton* mpColor;
+    QLabel *mpGeometryLabel;
+    QLabel *mpWidthLabel;
+    QLabel *mpHeightLabel;
+    QLabel *mpModeLabel;
+    QLabel *mpPreviewLabel;
+    QCheckBox *mpKeepAspectRatioCheckbox;
+    QPushButton* mpSelectColorButton;
     QPushButton* mpSquareButton;
     QPushButton* mpCircleButton;
     QPushButton* mpCloseButton;
-    QSlider* mpSizeSlider;
+    QSlider *mpAplhaSlider;
+    QSlider* mpWidthSlider;
+    QSlider* mpHeightSlider;
     QHBoxLayout* mpColorLayout;
     QHBoxLayout* mpShapeLayout;
-    QHBoxLayout* mpSizeLayout;
     QHBoxLayout* mpCloseLayout;
     QWidget* mpProperties;
+    UBCachePreviewWidget *mpPreviewWidget;
+    QVBoxLayout* mpSizeLayout;
     QVBoxLayout* mpPropertiesLayout;
+    QVBoxLayout *mpModeLayout;
+    QVBoxLayout *mpPreviewLayout;
+    QComboBox *mpModeComboBox;
     QColor mActualColor;
     eMaskShape mActualShape;
     UBGraphicsCache* mpCurrentCache;
-
+    bool mKeepAspectRatio;
+    bool mOtherSliderUsed;
+    QSize mOldHoleSize;
+    QSize minimumShapeSize;
+    QSize maximumShapeSize;
 };
 
 #endif // UBCACHEPROPERTIESWIDGET_H
diff --git a/Sankore-3.1/src/gui/UBCircleFrame.cpp b/Sankore-3.1/src/gui/UBCircleFrame.cpp
index 02c14b6..e4cfe83 100644
--- a/Sankore-3.1/src/gui/UBCircleFrame.cpp
+++ b/Sankore-3.1/src/gui/UBCircleFrame.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBCircleFrame.h"
 #include "core/memcheck.h"
 
diff --git a/Sankore-3.1/src/gui/UBCircleFrame.h b/Sankore-3.1/src/gui/UBCircleFrame.h
index 1153c83..d7ee9b2 100644
--- a/Sankore-3.1/src/gui/UBCircleFrame.h
+++ b/Sankore-3.1/src/gui/UBCircleFrame.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBCIRCLEFRAME_H_
 #define UBCIRCLEFRAME_H_
 
diff --git a/Sankore-3.1/src/gui/UBClockPalette.h b/Sankore-3.1/src/gui/UBClockPalette.h
index ddb46b0..648da3b 100644
--- a/Sankore-3.1/src/gui/UBClockPalette.h
+++ b/Sankore-3.1/src/gui/UBClockPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
diff --git a/Sankore-3.1/src/gui/UBColorPicker.cpp b/Sankore-3.1/src/gui/UBColorPicker.cpp
index 4ff6791..38f9fa9 100644
--- a/Sankore-3.1/src/gui/UBColorPicker.cpp
+++ b/Sankore-3.1/src/gui/UBColorPicker.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBColorPicker.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/gui/UBColorPicker.h b/Sankore-3.1/src/gui/UBColorPicker.h
index 6aa3616..008a0d0 100644
--- a/Sankore-3.1/src/gui/UBColorPicker.h
+++ b/Sankore-3.1/src/gui/UBColorPicker.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBCOLORPICKER_H_
 #define UBCOLORPICKER_H_
 
diff --git a/Sankore-3.1/src/gui/UBCreateLinkPalette.cpp b/Sankore-3.1/src/gui/UBCreateLinkPalette.cpp
new file mode 100644
index 0000000..4cf30c3
--- /dev/null
+++ b/Sankore-3.1/src/gui/UBCreateLinkPalette.cpp
@@ -0,0 +1,360 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+
+#include "UBCreateLinkPalette.h"
+#include <QVBoxLayout>
+#include <QStackedWidget>
+#include <QToolButton>
+#include <QPushButton>
+#include <QLineEdit>
+#include <QPainter>
+#include <QMouseEvent>
+#include <QCheckBox>
+#include <QButtonGroup>
+#include <QComboBox>
+
+#include "core/UBApplication.h"
+#include "core/UBDownloadManager.h"
+
+#include "document/UBDocumentController.h"
+
+#include "board/UBBoardController.h"
+
+#include "customWidgets/UBGraphicsItemAction.h"
+
+#include "frameworks/UBFileSystemUtils.h"
+
+
+UBCreateLinkLabel::UBCreateLinkLabel(QString labelText, QWidget *parent) :
+    QLabel(parent)
+{
+    setAcceptDrops(true);
+    mInitialText = labelText;
+    setText(mInitialText);
+    setMinimumSize(200, 200);
+    setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
+    setAlignment(Qt::AlignCenter);
+    setStyleSheet("border-style: dashed; border-color:#999999;border-radius: 10px; border-width: 2px ");
+}
+
+void UBCreateLinkLabel::dragEnterEvent(QDragEnterEvent *event)
+{
+    setText(tr("<drop content>"));
+    setBackgroundRole(QPalette::Highlight);
+
+    event->acceptProposedAction();
+}
+
+void UBCreateLinkLabel::dropEvent(QDropEvent *event)
+{
+    setBackgroundRole(QPalette::NoRole);
+    const QMimeData *mimeData = event->mimeData();
+
+    QString path;
+
+    if (mimeData->hasImage())
+        setText(tr("Images are not accepted"));
+    else if (mimeData->hasHtml())
+        path = mimeData->html();
+    else if (mimeData->hasText())
+        path = mimeData->text();
+    else if (mimeData->hasUrls())
+        path = mimeData->urls().at(0).toLocalFile();
+    else
+        setText(tr("Cannot display data"));
+
+    if(UBFileSystemUtils::mimeTypeFromFileName(path).contains("audio")){
+        if(!path.startsWith("file:"))
+            setText(QFileInfo(path).completeBaseName());
+        else
+            setText(QFileInfo(QUrl(path).toLocalFile()).completeBaseName());
+    }
+    else
+        setText(tr("Dropped file isn't reconized to be an audio file"));
+
+    emit droppedFile(path);
+    event->acceptProposedAction();
+}
+
+void UBCreateLinkLabel::dragLeaveEvent(QDragLeaveEvent *event)
+{
+    setText(mInitialText);
+    event->accept();
+}
+
+UBCreateLinkPalette::UBCreateLinkPalette(QWidget *parent) :
+    UBFloatingPalette(Qt::TopRightCorner, parent)
+  ,mButtonGroup(0)
+  ,mIsFirstTime(true)
+{
+    setObjectName("UBCreateLinkPalette");
+    mLayout = new QVBoxLayout(this);
+    mLayout->setContentsMargins(10,28,10,10);
+    setLayout(mLayout);
+    mStackedWidget = new QStackedWidget(this);
+    mStackedWidget->setObjectName("UBCreateLinkPaletteStackedWidget");
+    mStackedWidget->setStyleSheet("QWidget#UBCreateLinkPaletteStackedWidget{background-color:#eeeeee; border-width: 2px; border-style: solid; border-radius: 10px; border-color:#999999;}");
+    mLayout->addWidget(mStackedWidget);
+    init();
+    hide();
+}
+
+
+UBCreateLinkPalette::~UBCreateLinkPalette()
+{
+
+}
+
+QToolButton* UBCreateLinkPalette::addInitiaWidgetButton(QString textButton, QString iconPath)
+{
+    QToolButton* button = new QToolButton(mInitialWidget);
+    button->setIcon(QIcon(iconPath));
+    button->setIconSize(QSize(100,100));
+    button->setText(textButton);
+    button->setStyleSheet("background-color:transparent; board : none;");
+    button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+    return button;
+}
+
+void UBCreateLinkPalette::init()
+{
+    mInitialWidget = new QWidget(this);
+    QHBoxLayout* initialWidgetLayout = new QHBoxLayout(mInitialWidget);
+    mInitialWidget->setLayout(initialWidgetLayout);
+
+    QToolButton* actionPlayAudio = addInitiaWidgetButton(tr("Play an audio file"),":images/createLinkPalette/PlayAudio.svg");
+    QToolButton* actionAddLinkToPage = addInitiaWidgetButton(tr("Add Link to Page"),":images/createLinkPalette/LinkPage.svg");
+    QToolButton* actionAddLinkToWeb = addInitiaWidgetButton(tr("Add Link to a Web page"),":images/createLinkPalette/LinkWeb.svg");
+
+    initialWidgetLayout->addWidget(actionPlayAudio);
+    initialWidgetLayout->addWidget(actionAddLinkToPage);
+    initialWidgetLayout->addWidget(actionAddLinkToWeb);
+    mStackedWidget->addWidget(mInitialWidget);
+
+
+    mAudioWidget = new QWidget(this);
+    QVBoxLayout* audioWidgetLayout = new QVBoxLayout(mAudioWidget);
+    mAudioWidget->setLayout(audioWidgetLayout);
+    QHBoxLayout* audioBackButtonLayout = new QHBoxLayout();
+    QPushButton* audioBackButton = new QPushButton(mAudioWidget);
+    audioBackButton->setIcon(QIcon(":images/toolbar/undoOn.png"));
+    audioBackButtonLayout->addWidget(audioBackButton);
+    audioBackButtonLayout->addStretch();
+    audioWidgetLayout->addLayout(audioBackButtonLayout);
+    connect(audioBackButton,SIGNAL(clicked()),this,SLOT(onBackButtonClicked()));
+    mpAudioLabel = new UBCreateLinkLabel(tr("Drag and drop the audio file from the library in this box"),mAudioWidget);
+    connect(mpAudioLabel,SIGNAL(droppedFile(QString&)),this,SLOT(onDroppedAudioFile(QString&)));
+    audioWidgetLayout->addWidget(mpAudioLabel);
+    QHBoxLayout* audioOkButtonLayout = new QHBoxLayout();
+    audioOkButtonLayout->addStretch();
+    QPushButton* audioOkButton = new QPushButton(tr("Ok"),mAudioWidget);
+    audioOkButtonLayout->addWidget(audioOkButton);
+    audioWidgetLayout->addLayout(audioOkButtonLayout);
+    connect(audioOkButton,SIGNAL(clicked()),this,SLOT(onOkAudioClicked()));
+    mStackedWidget->addWidget(mAudioWidget);
+    connect(actionPlayAudio,SIGNAL(clicked()),this,SLOT(onPlayAudioClicked()));
+
+
+    mPageLinkWidget = new QWidget(this);
+    QVBoxLayout* pageLinkWidgetLayout = new QVBoxLayout(mPageLinkWidget);
+    mPageLinkWidget->setLayout(pageLinkWidgetLayout);
+    QHBoxLayout* pageLinkBackButtonLayout = new QHBoxLayout();
+    QPushButton* pageLinkBackButton = new QPushButton(mPageLinkWidget);
+    pageLinkBackButton->setIcon(QIcon(":images/toolbar/undoOn.png"));
+    pageLinkBackButtonLayout->addWidget(pageLinkBackButton);
+    pageLinkBackButtonLayout->addStretch();
+    pageLinkWidgetLayout->addLayout(pageLinkBackButtonLayout);
+
+    int activeIndex = UBApplication::boardController->activeSceneIndex();
+    int lastSceneIndex = UBApplication::boardController->selectedDocument()->pageCount() - 1;
+    mButtonGroup = new QButtonGroup();
+    mButtonGroup->setExclusive(true);
+    QCheckBox* nextPageCheckBox = new QCheckBox(tr("Next Page"),this);
+    mButtonGroup->addButton(nextPageCheckBox,eMoveToNextPage);
+    pageLinkWidgetLayout->addWidget(nextPageCheckBox);
+    if(activeIndex >= lastSceneIndex)
+        nextPageCheckBox->setEnabled(false);
+    QCheckBox* previousPageCheckBox = new QCheckBox(tr("Previous Page"),this);
+    mButtonGroup->addButton(previousPageCheckBox,eMoveToPreviousPage);
+    if(activeIndex == 0)
+        previousPageCheckBox->setEnabled(false);
+    pageLinkWidgetLayout->addWidget(previousPageCheckBox);
+    QCheckBox* firstPageCheckBox = new QCheckBox(tr("Title Page"),this);
+    mButtonGroup->addButton(firstPageCheckBox,eMoveToFirstPage);
+    pageLinkWidgetLayout->addWidget(firstPageCheckBox);
+    QCheckBox* lastPageCheckBox = new QCheckBox(tr("Last Page"),this);
+    mButtonGroup->addButton(lastPageCheckBox,eMoveToLastPage);
+    pageLinkWidgetLayout->addWidget(lastPageCheckBox);
+
+    QHBoxLayout* toPageNumberLayout = new QHBoxLayout();
+    QCheckBox* pageNumberCheckBox = new QCheckBox(tr("Page Number"),this);
+    mButtonGroup->addButton(pageNumberCheckBox,eMoveToPage);
+    toPageNumberLayout->addWidget(pageNumberCheckBox);
+    mPageComboBox = new QComboBox(this);
+    toPageNumberLayout->addWidget(mPageComboBox);
+    for(int sceneIndex = 0; sceneIndex <= lastSceneIndex;sceneIndex+=1)
+        if(sceneIndex != activeIndex)
+            mPageComboBox->insertItem(sceneIndex,QString("%1").arg(sceneIndex));
+    if(!mPageComboBox->count())
+        pageNumberCheckBox->setEnabled(false);
+    mPageComboBox->setEnabled(false);
+    connect(pageNumberCheckBox,SIGNAL(clicked(bool)),this,SLOT(onPageNumberCheckBoxClicked(bool)));
+    pageLinkWidgetLayout->addLayout(toPageNumberLayout);
+
+
+    connect(pageLinkBackButton,SIGNAL(clicked()),this,SLOT(onBackButtonClicked()));
+    QHBoxLayout* pageLinkOkButtonLayout = new QHBoxLayout();
+    pageLinkOkButtonLayout->addStretch();
+    QPushButton* pageLinkOkButton = new QPushButton(tr("Ok"), mPageLinkWidget);
+    pageLinkOkButtonLayout->addWidget(pageLinkOkButton);
+    pageLinkWidgetLayout->addLayout(pageLinkOkButtonLayout);
+    connect(pageLinkOkButton,SIGNAL(clicked()),this,SLOT(onOkLinkToPageClicked()));
+    mStackedWidget->addWidget(mPageLinkWidget);
+    connect(actionAddLinkToPage,SIGNAL(clicked()),this,SLOT(onAddLinkToPageClicked()));
+
+
+    mUrlLinkWidget = new QWidget(this);
+    QVBoxLayout* urlLinkWidgetLayout = new QVBoxLayout(mUrlLinkWidget);
+    mUrlLinkWidget->setLayout(urlLinkWidgetLayout);
+    QHBoxLayout* urlLinkBackButtonLayout = new QHBoxLayout();
+    QPushButton* urlLinkBackButton = new QPushButton(mUrlLinkWidget);
+    urlLinkBackButton->setIcon(QIcon(":images/toolbar/undoOn.png"));
+    urlLinkBackButtonLayout->addWidget(urlLinkBackButton);
+    urlLinkBackButtonLayout->addStretch();
+    urlLinkWidgetLayout->addLayout(urlLinkBackButtonLayout);
+    connect(urlLinkBackButton,SIGNAL(clicked()),this,SLOT(onBackButtonClicked()));
+    mUrlLineEdit = new QLineEdit(mUrlLinkWidget);
+    mUrlLineEdit->setPlaceholderText(tr("Insert url text here"));
+    mUrlLineEdit->setAcceptDrops(true);
+    urlLinkWidgetLayout->addWidget(mUrlLineEdit);
+    QHBoxLayout* urlLinkOkButtonLayout = new QHBoxLayout();
+    urlLinkOkButtonLayout->addStretch();
+    QPushButton* urlLinkOkButton = new QPushButton(tr("Ok"), mUrlLinkWidget);
+    urlLinkOkButtonLayout->addWidget(urlLinkOkButton);
+    urlLinkWidgetLayout->addLayout(urlLinkOkButtonLayout);
+    connect(urlLinkOkButton,SIGNAL(clicked()),this,SLOT(onOkLinkToWebClicked()));
+    mStackedWidget->addWidget(mUrlLinkWidget);
+    connect(actionAddLinkToWeb,SIGNAL(clicked()),this,SLOT(onAddLinkToWebClicked()));
+
+}
+
+
+void UBCreateLinkPalette::onDroppedAudioFile(QString &path)
+{
+    Q_ASSERT(path.length());
+
+    mAudioFilePath = path;
+}
+
+void UBCreateLinkPalette::onPageNumberCheckBoxClicked(bool checked)
+{
+   mPageComboBox->setEnabled(checked);
+}
+
+void UBCreateLinkPalette::onBackButtonClicked()
+{
+    mStackedWidget->setCurrentIndex(0);
+    adjustGeometry();
+}
+
+void UBCreateLinkPalette::onPlayAudioClicked()
+{
+    mStackedWidget->setCurrentIndex(1);
+}
+
+void UBCreateLinkPalette::onAddLinkToPageClicked()
+{
+    mStackedWidget->setCurrentIndex(2);
+}
+
+void UBCreateLinkPalette::onAddLinkToWebClicked()
+{
+    mStackedWidget->setCurrentIndex(3);
+}
+
+void UBCreateLinkPalette::onOkAudioClicked()
+{
+    emit definedAction(new UBGraphicsItemPlayAudioAction(mAudioFilePath));
+    close();
+}
+
+void UBCreateLinkPalette::onOkLinkToPageClicked()
+{
+    eUBGraphicsItemMovePageAction id = (eUBGraphicsItemMovePageAction)mButtonGroup->checkedId();
+    UBGraphicsItemMoveToPageAction* action = 0;
+    if(id!= eMoveToPage)
+        action = new UBGraphicsItemMoveToPageAction(id);
+    else
+        action = new UBGraphicsItemMoveToPageAction(id,mPageComboBox->currentText().toInt());
+    emit definedAction(action);
+    close();
+}
+
+void UBCreateLinkPalette::onOkLinkToWebClicked()
+{
+    emit definedAction(new UBGraphicsItemLinkToWebPageAction (mUrlLineEdit->text()));
+    close();
+}
+
+void UBCreateLinkPalette::paintEvent(QPaintEvent *event)
+{
+    UBFloatingPalette::paintEvent(event);
+
+    QPainter painter(this);
+    painter.drawPixmap(0, 0, QPixmap(":/images/close.svg"));
+}
+
+
+void UBCreateLinkPalette::close()
+{
+    hide();
+}
+
+
+void UBCreateLinkPalette::mouseReleaseEvent(QMouseEvent * event)
+{
+    if (event->pos().x() >= 0 && event->pos().x() < QPixmap(":/images/close.svg").width()
+        && event->pos().y() >= 0 && event->pos().y() < QPixmap(":/images/close.svg").height())
+    {
+        event->accept();
+        close();
+    }
+
+    UBFloatingPalette::mouseReleaseEvent(event);
+}
+
+
+void UBCreateLinkPalette::showEvent(QShowEvent *event)
+{
+    Q_UNUSED(event);
+    adjustGeometry();
+}
+
+void UBCreateLinkPalette::adjustGeometry()
+{
+    if(mIsFirstTime){
+        adjustSizeAndPosition();
+        move((parentWidget()->width() - width()) / 2, (parentWidget()->height() - height()) / 5);
+        mIsFirstTime = false;
+    }
+}
diff --git a/Sankore-3.1/src/gui/UBCreateLinkPalette.h b/Sankore-3.1/src/gui/UBCreateLinkPalette.h
new file mode 100644
index 0000000..8838ac7
--- /dev/null
+++ b/Sankore-3.1/src/gui/UBCreateLinkPalette.h
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+
+#ifndef UBCREATELINKPALETTE_H
+#define UBCREATELINKPALETTE_H
+
+class QVBoxLayout;
+class QStackedWidget;
+class QToolButton;
+class QWidget;
+class UBGraphicsItemAction;
+class QLineEdit;
+class QButtonGroup;
+class QComboBox;
+class QDropEvent;
+
+#include <QMap>
+#include <QLabel>
+
+#include "UBFloatingPalette.h"
+
+class UBCreateLinkLabel : public QLabel
+{
+    Q_OBJECT
+
+public:
+    explicit UBCreateLinkLabel(QString labelText, QWidget* parent = 0);
+
+signals:
+    void droppedFile(QString& path);
+
+protected:
+    void dropEvent(QDropEvent* event);
+    void dragEnterEvent(QDragEnterEvent *event);
+    void dragLeaveEvent(QDragLeaveEvent *event);
+private:
+    QString mInitialText;
+
+};
+
+
+class UBCreateLinkPalette : public UBFloatingPalette
+{
+    Q_OBJECT
+public:
+    explicit UBCreateLinkPalette(QWidget *parent = 0);
+    ~UBCreateLinkPalette();
+signals:
+    void definedAction(UBGraphicsItemAction* action);
+
+public slots:
+
+protected:
+    virtual void paintEvent(QPaintEvent *event);
+    virtual void mouseReleaseEvent(QMouseEvent * event);
+    virtual void showEvent(QShowEvent *event);
+
+private:
+    void close();
+    void adjustGeometry();
+    void init();
+    QToolButton* addInitiaWidgetButton(QString textButton, QString iconPath);
+    QWidget* addBasicFunctionaliltiesToWidget(QWidget* centralWidget);
+
+    QVBoxLayout* mLayout;
+    QStackedWidget* mStackedWidget;
+    QWidget* mInitialWidget;
+    QWidget* mAudioWidget;
+    QWidget* mPageLinkWidget;
+    QWidget* mUrlLinkWidget;
+
+    QLineEdit* mUrlLineEdit;
+    QButtonGroup* mButtonGroup;
+    QComboBox* mPageComboBox;
+    UBCreateLinkLabel* mpAudioLabel;
+    QString mAudioFilePath;
+    bool mIsFirstTime;
+
+private slots:
+    void onBackButtonClicked();
+    void onPlayAudioClicked();
+    void onAddLinkToPageClicked();
+    void onAddLinkToWebClicked();
+
+    void onOkAudioClicked();
+    void onOkLinkToPageClicked();
+    void onOkLinkToWebClicked();
+
+    void onPageNumberCheckBoxClicked(bool checked);
+
+    void onDroppedAudioFile(QString& path);
+};
+
+#endif // UBCREATELINKPALETTE_H
diff --git a/Sankore-3.1/src/gui/UBDockDownloadWidget.cpp b/Sankore-3.1/src/gui/UBDockDownloadWidget.cpp
index 505bd2c..b310338 100644
--- a/Sankore-3.1/src/gui/UBDockDownloadWidget.cpp
+++ b/Sankore-3.1/src/gui/UBDockDownloadWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBDockDownloadWidget.h"
 #include "core/UBApplication.h"
 
@@ -36,9 +37,6 @@ UBDockDownloadWidget::UBDockDownloadWidget(QWidget *parent, const char *name):UB
 
     SET_STYLE_SHEET();
 
-    mIconToLeft = QPixmap(":images/download_open.png");
-    mIconToRight = QPixmap(":images/download_close.png");
-
     mpLayout = new QVBoxLayout(this);
     setLayout(mpLayout);
 
diff --git a/Sankore-3.1/src/gui/UBDockDownloadWidget.h b/Sankore-3.1/src/gui/UBDockDownloadWidget.h
index c887192..4b6d362 100644
--- a/Sankore-3.1/src/gui/UBDockDownloadWidget.h
+++ b/Sankore-3.1/src/gui/UBDockDownloadWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDOCKDOWNLOADWIDGET_H
 #define UBDOCKDOWNLOADWIDGET_H
 
@@ -41,6 +42,8 @@ public:
         return mode == eUBDockPaletteWidget_BOARD;
     }
 
+    QPixmap iconToLeft() const {return QPixmap(":images/download_open.png");}
+    QPixmap iconToRight() const {return QPixmap(":images/download_close.png");}
 
 private:
     QVBoxLayout* mpLayout;
diff --git a/Sankore-3.1/src/gui/UBDockPalette.cpp b/Sankore-3.1/src/gui/UBDockPalette.cpp
index 479b658..aea2177 100644
--- a/Sankore-3.1/src/gui/UBDockPalette.cpp
+++ b/Sankore-3.1/src/gui/UBDockPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QPoint>
 #include <QPointF>
 #include <QPainterPath>
@@ -57,42 +58,42 @@ UBDockPalette::UBDockPalette(eUBDockPaletteType paletteType, QWidget *parent, co
 , mPaletteType(paletteType)
 , mTabPalette(new UBTabDockPalette(this, parent))
 {
-	setObjectName(name);
+    setObjectName(name);
 
-	mpLayout = new QVBoxLayout();
-	setLayout(mpLayout);
+    mpLayout = new QVBoxLayout();
+    setLayout(mpLayout);
 
-	mpStackWidget = new QStackedWidget(this);
-	mpLayout->addWidget(mpStackWidget);
+    mpStackWidget = new QStackedWidget(this);
+    mpLayout->addWidget(mpStackWidget);
 
-	// clear the tab widgets
-	mTabWidgets.clear();
+    // clear the tab widgets
+    mTabWidgets.clear();
 
-	// We let 2 pixels in order to keep a small border for the resizing
-	setMinimumWidth(0);
+    // We let 2 pixels in order to keep a small border for the resizing
+    setMinimumWidth(0);
 
-	if (parent)
-	{
-		setAttribute(Qt::WA_NoMousePropagation);
-		setAttribute(Qt::WA_TranslucentBackground);
-	}
-	else
-	{
-		// standalone window
-		setAttribute(Qt::WA_TranslucentBackground);
-	}
+    if (parent)
+    {
+        setAttribute(Qt::WA_NoMousePropagation);
+        setAttribute(Qt::WA_TranslucentBackground);
+    }
+    else
+    {
+        // standalone window
+        setAttribute(Qt::WA_TranslucentBackground);
+    }
 
-	mBackgroundBrush = QBrush(UBSettings::paletteColor);
+    mBackgroundBrush = QBrush(UBSettings::paletteColor);
 
-	// This is the only way to set the background as transparent!
-	setStyleSheet("QWidget {background-color: transparent}");
+    // This is the only way to set the background as transparent!
+    setStyleSheet("QWidget {background-color: transparent}");
 
-	// Set the position of the tab
-	onToolbarPosUpdated();
-	connect(UBSettings::settings()->appToolBarPositionedAtTop, SIGNAL(changed(QVariant)), this, SLOT(onToolbarPosUpdated()));
-	connect(UBDownloadManager::downloadManager(), SIGNAL(allDownloadsFinished()), this, SLOT(onAllDownloadsFinished()));
+    // Set the position of the tab
+    onToolbarPosUpdated();
+    connect(UBSettings::settings()->appToolBarPositionedAtTop, SIGNAL(changed(QVariant)), this, SLOT(onToolbarPosUpdated()));
+    connect(UBDownloadManager::downloadManager(), SIGNAL(allDownloadsFinished()), this, SLOT(onAllDownloadsFinished()));
 
-	connect(UBApplication::boardController,SIGNAL(documentSet(UBDocumentProxy*)),this,SLOT(onDocumentSet(UBDocumentProxy*)));
+    connect(UBApplication::boardController,SIGNAL(documentSet(UBDocumentProxy*)),this,SLOT(onDocumentSet(UBDocumentProxy*)));
 }
 
 /**
@@ -100,21 +101,21 @@ UBDockPalette::UBDockPalette(eUBDockPaletteType paletteType, QWidget *parent, co
  */
 UBDockPalette::~UBDockPalette()
 {
-	if(NULL != mpStackWidget)
-	{
-		delete mpStackWidget;
-		mpStackWidget = NULL;
-	}
-	if(NULL != mpLayout)
-	{
-		delete mpLayout;
-		mpLayout = NULL;
-	}
+    if(NULL != mpStackWidget)
+    {
+        delete mpStackWidget;
+        mpStackWidget = NULL;
+    }
+    if(NULL != mpLayout)
+    {
+        delete mpLayout;
+        mpLayout = NULL;
+    }
 }
 
 void UBDockPalette::onDocumentSet(UBDocumentProxy* documentProxy)
 {
-	Q_UNUSED(documentProxy);
+    Q_UNUSED(documentProxy);
 }
 
 /**
@@ -123,7 +124,7 @@ void UBDockPalette::onDocumentSet(UBDocumentProxy* documentProxy)
  */
 eUBDockOrientation UBDockPalette::orientation()
 {
-	return mOrientation;
+    return mOrientation;
 }
 
 /**
@@ -132,19 +133,19 @@ eUBDockOrientation UBDockPalette::orientation()
  */
 void UBDockPalette::setOrientation(eUBDockOrientation orientation)
 {
-	// Set the size
-	mOrientation = orientation;
+    // Set the size
+    mOrientation = orientation;
 
-	if(orientation == eUBDockOrientation_Left || orientation == eUBDockOrientation_Right)
-	{
-		setMaximumHeight(parentWidget()->height());
-		setMinimumHeight(maximumHeight());
-	}
-	else if(orientation == eUBDockOrientation_Top || orientation == eUBDockOrientation_Bottom)
-	{
-		setMaximumWidth(parentWidget()->width());
-		setMinimumWidth(maximumWidth());
-	}
+    if(orientation == eUBDockOrientation_Left || orientation == eUBDockOrientation_Right)
+    {
+        setMaximumHeight(parentWidget()->height());
+        setMinimumHeight(maximumHeight());
+    }
+    else if(orientation == eUBDockOrientation_Top || orientation == eUBDockOrientation_Bottom)
+    {
+        setMaximumWidth(parentWidget()->width());
+        setMinimumWidth(maximumWidth());
+    }
 }
 
 /**
@@ -153,32 +154,32 @@ void UBDockPalette::setOrientation(eUBDockOrientation orientation)
  */
 void UBDockPalette::resizeEvent(QResizeEvent *event)
 {
-	Q_UNUSED(event);
-	updateMaxWidth();
-	if(parentWidget())
-	{
-		setMinimumHeight(parentWidget()->height());
-	}
-	// Set the position
-	QPoint origin;
-	switch(mOrientation)
-	{
-	case eUBDockOrientation_Right:
-		origin.setX(parentWidget()->width() - this->width());
-		origin.setY(0);
-		break;
-	case eUBDockOrientation_Bottom:
-		// Not supported yet
-	case eUBDockOrientation_Top:
-		// Not supported yet
-	case eUBDockOrientation_Left:
-	default:
-		origin.setX(0);
-		origin.setY(0);
-		break;
-	}
-	move(origin.x(), origin.y());
-	moveTabs();
+    Q_UNUSED(event);
+    updateMaxWidth();
+    if(parentWidget())
+    {
+        setMinimumHeight(parentWidget()->height());
+    }
+    // Set the position
+    QPoint origin;
+    switch(mOrientation)
+    {
+    case eUBDockOrientation_Right:
+        origin.setX(parentWidget()->width() - this->width());
+        origin.setY(0);
+        break;
+    case eUBDockOrientation_Bottom:
+        // Not supported yet
+    case eUBDockOrientation_Top:
+        // Not supported yet
+    case eUBDockOrientation_Left:
+    default:
+        origin.setX(0);
+        origin.setY(0);
+        break;
+    }
+    move(origin.x(), origin.y());
+    moveTabs();
 }
 
 /**
@@ -187,9 +188,9 @@ void UBDockPalette::resizeEvent(QResizeEvent *event)
  */
 void UBDockPalette::enterEvent(QEvent *event)
 {
-	Q_UNUSED(event);
-	// We want to set the cursor as an arrow everytime it enters the palette
-	setCursor(Qt::ArrowCursor);
+    Q_UNUSED(event);
+    // We want to set the cursor as an arrow everytime it enters the palette
+    setCursor(Qt::ArrowCursor);
 }
 
 /**
@@ -198,9 +199,9 @@ void UBDockPalette::enterEvent(QEvent *event)
  */
 void UBDockPalette::leaveEvent(QEvent *event)
 {
-	Q_UNUSED(event);
-	// Restore the cursor to its previous shape
-	unsetCursor();
+    Q_UNUSED(event);
+    // Restore the cursor to its previous shape
+    unsetCursor();
 }
 
 /**
@@ -209,38 +210,29 @@ void UBDockPalette::leaveEvent(QEvent *event)
  */
 void UBDockPalette::paintEvent(QPaintEvent *event)
 {
-	Q_UNUSED(event);
-	QPainter painter(this);
-	painter.setRenderHint(QPainter::Antialiasing);
-	painter.setPen(Qt::NoPen);
-	painter.setBrush(mBackgroundBrush);
-	QPainterPath path;
-	path.setFillRule(Qt::WindingFill);
-
-	int nbTabs = mTabWidgets.size();
-	if(0 < nbTabs)
-	{
-		// First draw the BIG RECTANGLE (I write it big because the rectangle is big...)
-		if(mOrientation == eUBDockOrientation_Left)
-		{
-			path.addRect(0.0, 0.0, width(), height());
-		}
-		else if(mOrientation == eUBDockOrientation_Right)
-		{
-			path.addRect(0.0, 0.0, width(), height());
-		}
-
-		// THEN DRAW THE small tabs (yes, the tabs are small...)
-		if(eUBDockTabOrientation_Up == mTabsOrientation)
-		{
-			mHTab = border();
-		}
-		else
-		{
-			mHTab = height() - border() - nbTabs*TABSIZE - (nbTabs-1)*tabSpacing();
-		}
-		painter.drawPath(path);
-	}
+    Q_UNUSED(event);
+    QPainter painter(this);
+    painter.setRenderHint(QPainter::Antialiasing);
+    painter.setPen(Qt::NoPen);
+    painter.setBrush(mBackgroundBrush);
+    QPainterPath path;
+    path.setFillRule(Qt::WindingFill);
+
+    int nbTabs = mTabWidgets.size();
+    if(0 < nbTabs)
+    {
+        // First draw the BIG RECTANGLE (I write it big because the rectangle is big...)
+        if(mOrientation == eUBDockOrientation_Left)
+        {
+            path.addRect(0.0, 0.0, width(), height());
+        }
+        else if(mOrientation == eUBDockOrientation_Right)
+        {
+            path.addRect(0.0, 0.0, width(), height());
+        }
+
+        painter.drawPath(path);
+    }
 }
 
 /**
@@ -249,11 +241,11 @@ void UBDockPalette::paintEvent(QPaintEvent *event)
  */
 void UBDockPalette::setBackgroundBrush(const QBrush &brush)
 {
-	if (mBackgroundBrush != brush)
-	{
-		mBackgroundBrush = brush;
-		update();
-	}
+    if (mBackgroundBrush != brush)
+    {
+        mBackgroundBrush = brush;
+        update();
+    }
 }
 
 /**
@@ -262,7 +254,7 @@ void UBDockPalette::setBackgroundBrush(const QBrush &brush)
  */
 int UBDockPalette::border()
 {
-	return 15;
+    return 15;
 }
 
 /**
@@ -271,7 +263,7 @@ int UBDockPalette::border()
  */
 int UBDockPalette::radius()
 {
-	return 5;
+    return 5;
 }
 
 /**
@@ -279,7 +271,7 @@ int UBDockPalette::radius()
  */
 void UBDockPalette::updateMaxWidth()
 {
-	// Only the inherited class will overload this method
+    // Only the inherited class will overload this method
 }
 
 /**
@@ -288,7 +280,7 @@ void UBDockPalette::updateMaxWidth()
  */
 int UBDockPalette::collapseWidth()
 {
-	return mCollapseWidth;
+    return mCollapseWidth;
 }
 
 /**
@@ -296,17 +288,17 @@ int UBDockPalette::collapseWidth()
  */
 void UBDockPalette::tabClicked(int tabIndex)
 {
-	// If the current tab is not the clicked one, show its content
-	if(mCurrentTab != tabIndex)
-	{
-		showTabWidget(tabIndex);
-	}
-	// else collapse the palette
-	else
-	{
-		toggleCollapseExpand();
-	}
-	mTabPalette->update();
+    // If the current tab is not the clicked one, show its content
+    if(mCurrentTab != tabIndex)
+    {
+        showTabWidget(tabIndex);
+    }
+    // else collapse the palette
+    else
+    {
+        toggleCollapseExpand();
+    }
+    mTabPalette->update();
 }
 
 /**
@@ -315,13 +307,13 @@ void UBDockPalette::tabClicked(int tabIndex)
  */
 void UBDockPalette::showTabWidget(int tabIndex)
 {
-	mpStackWidget->setCurrentIndex(tabIndex);
-	mCurrentTab = tabIndex;
+    mpStackWidget->setCurrentIndex(tabIndex);
+    mCurrentTab = tabIndex;
 
-	// Update the current tab index
-	if(NULL != (dynamic_cast<UBDockPaletteWidget*>(mpStackWidget->widget(tabIndex)))){
-		mCrntTabWidget = dynamic_cast<UBDockPaletteWidget*>(mpStackWidget->widget(tabIndex))->name();
-	}
+    // Update the current tab index
+    if(NULL != (dynamic_cast<UBDockPaletteWidget*>(mpStackWidget->widget(tabIndex)))){
+        mCrntTabWidget = dynamic_cast<UBDockPaletteWidget*>(mpStackWidget->widget(tabIndex))->name();
+    }
 
 }
 
@@ -330,13 +322,13 @@ void UBDockPalette::showTabWidget(int tabIndex)
  */
 void UBDockPalette::toggleCollapseExpand()
 {
-	if(width() < mCollapseWidth)
-		resize(mLastWidth,height());
-	else{
-		mLastWidth = width();
+    if(width() < mCollapseWidth)
+        resize(mLastWidth,height());
+    else{
+        mLastWidth = width();
         update();
-		resize(0,height());
-	}
+        resize(0,height());
+    }
 }
 
 /**
@@ -345,7 +337,7 @@ void UBDockPalette::toggleCollapseExpand()
  */
 void UBDockPalette::setTabsOrientation(eUBDockTabOrientation orientation)
 {
-	mTabsOrientation = orientation;
+    mTabsOrientation = orientation;
 }
 
 /**
@@ -353,17 +345,17 @@ void UBDockPalette::setTabsOrientation(eUBDockTabOrientation orientation)
  */
 void UBDockPalette::onToolbarPosUpdated()
 {
-	// Get the position of the tab
-	if(UBSettings::settings()->appToolBarPositionedAtTop->get().toBool())
-	{
-		setTabsOrientation(eUBDockTabOrientation_Up);
-	}
-	else
-	{
-		setTabsOrientation(eUBDockTabOrientation_Down);
-	}
-	moveTabs();
-	update();
+    // Get the position of the tab
+    if(UBSettings::settings()->appToolBarPositionedAtTop->get().toBool())
+    {
+        setTabsOrientation(eUBDockTabOrientation_Up);
+    }
+    else
+    {
+        setTabsOrientation(eUBDockTabOrientation_Down);
+    }
+    moveTabs();
+    update();
 }
 
 /**
@@ -372,7 +364,7 @@ void UBDockPalette::onToolbarPosUpdated()
  */
 int UBDockPalette::customMargin()
 {
-	return 5;
+    return 5;
 }
 
 /**
@@ -381,15 +373,16 @@ int UBDockPalette::customMargin()
  */
 void UBDockPalette::addTab(UBDockPaletteWidget *widget)
 {
-	if(!mTabWidgets.contains(widget) && widget->visibleState())
-	{
-		widget->setVisible(true);
-		mTabWidgets.append(widget);
-		mpStackWidget->addWidget(widget);
-		mpStackWidget->setCurrentWidget(widget);
-		resizeTabs();
-		update();
-	}
+    if(!mTabWidgets.contains(widget) && widget->visibleState())
+    {
+        widget->setVisible(true);
+        mTabWidgets.append(widget);
+        mpStackWidget->addWidget(widget);
+        mpStackWidget->setCurrentWidget(widget);
+        showTabWidget(mTabWidgets.indexOf(widget));
+        resizeTabs();
+        update();
+    }
 }
 /**
  * \brief Remove the given tab
@@ -397,16 +390,16 @@ void UBDockPalette::addTab(UBDockPaletteWidget *widget)
  */
 void UBDockPalette::removeTab(UBDockPaletteWidget* widget)
 {
-	int nWidget = mTabWidgets.indexOf(widget);
-	if( nWidget >= 0 )
-	{
-		mpStackWidget->removeWidget(widget);
-		mTabWidgets.remove(nWidget);
-		widget->hide();
-		update();
-	}
-	resizeTabs();
-	mCurrentTab = qMax(mCurrentTab - 1, 0);
+    int nWidget = mTabWidgets.indexOf(widget);
+    if( nWidget >= 0 )
+    {
+        mpStackWidget->removeWidget(widget);
+        mTabWidgets.remove(nWidget);
+        widget->hide();
+        update();
+    }
+    resizeTabs();
+    mCurrentTab = qMax(mCurrentTab - 1, 0);
 }
 
 /**
@@ -415,7 +408,7 @@ void UBDockPalette::removeTab(UBDockPaletteWidget* widget)
  */
 void UBDockPalette::onResizeRequest(QResizeEvent *event)
 {
-	resizeEvent(event);
+    resizeEvent(event);
 }
 
 /**
@@ -424,7 +417,7 @@ void UBDockPalette::onResizeRequest(QResizeEvent *event)
  */
 int UBDockPalette::tabSpacing()
 {
-	return 2;
+    return 2;
 }
 
 /**
@@ -433,11 +426,12 @@ int UBDockPalette::tabSpacing()
  */
 void UBDockPalette::onShowTabWidget(UBDockPaletteWidget* widget)
 {
-	if (mRegisteredWidgets.contains(widget))
-	{
-		widget->setVisibleState(true);
-		addTab(widget);
-	}
+    if (mRegisteredWidgets.contains(widget))
+    {
+        widget->setVisibleState(true);
+        addTab(widget);
+        moveTabs();
+    }
 }
 
 /**
@@ -446,11 +440,11 @@ void UBDockPalette::onShowTabWidget(UBDockPaletteWidget* widget)
  */
 void UBDockPalette::onHideTabWidget(UBDockPaletteWidget* widget)
 {
-	if (mRegisteredWidgets.contains(widget))
-	{
-		widget->setVisibleState(false);
-		removeTab(widget);
-	}
+    if (mRegisteredWidgets.contains(widget))
+    {
+        widget->setVisibleState(false);
+        removeTab(widget);
+    }
 }
 
 /**
@@ -458,11 +452,11 @@ void UBDockPalette::onHideTabWidget(UBDockPaletteWidget* widget)
  */
 void UBDockPalette::connectSignals()
 {
-	for(int i=0; i < mRegisteredWidgets.size(); i++)
-	{
-		connect(mRegisteredWidgets.at(i), SIGNAL(showTab(UBDockPaletteWidget*)), this, SLOT(onShowTabWidget(UBDockPaletteWidget*)));
-		connect(mRegisteredWidgets.at(i), SIGNAL(hideTab(UBDockPaletteWidget*)), this, SLOT(onHideTabWidget(UBDockPaletteWidget*)));
-	}
+    for(int i=0; i < mRegisteredWidgets.size(); i++)
+    {
+        connect(mRegisteredWidgets.at(i), SIGNAL(showTab(UBDockPaletteWidget*)), this, SLOT(onShowTabWidget(UBDockPaletteWidget*)));
+        connect(mRegisteredWidgets.at(i), SIGNAL(hideTab(UBDockPaletteWidget*)), this, SLOT(onHideTabWidget(UBDockPaletteWidget*)));
+    }
 }
 
 /**
@@ -471,15 +465,15 @@ void UBDockPalette::connectSignals()
  */
 void UBDockPalette::registerWidget(UBDockPaletteWidget *widget)
 {
-	if(!mRegisteredWidgets.contains(widget))
-	{
-		// Update the parent of this widget
-		widget->setParent(this);
-		mRegisteredWidgets.append(widget);
+    if(!mRegisteredWidgets.contains(widget))
+    {
+        // Update the parent of this widget
+        widget->setParent(this);
+        mRegisteredWidgets.append(widget);
 
-		// By default, the widget is hidden
-		widget->hide();
-	}
+        // By default, the widget is hidden
+        widget->hide();
+    }
 }
 
 /**
@@ -487,180 +481,181 @@ void UBDockPalette::registerWidget(UBDockPaletteWidget *widget)
  */
 void UBDockPalette::onAllDownloadsFinished()
 {
-	for(int i=0; i<mTabWidgets.size(); i++){
-		UBDockPaletteWidget* pW = mTabWidgets.at(i);
-		if(NULL != pW && mCrntTabWidget == pW->name()){
-			mpStackWidget->setCurrentWidget(pW);
-		}
-	}
+    for(int i=0; i<mTabWidgets.size(); i++){
+        UBDockPaletteWidget* pW = mTabWidgets.at(i);
+        if(NULL != pW && mCrntTabWidget == pW->name()){
+            mpStackWidget->setCurrentWidget(pW);
+        }
+    }
 }
 
 void UBDockPalette::moveTabs()
 {
-	//   if (!mHTab) {
-	if(eUBDockTabOrientation_Up == mTabsOrientation) {
-		mHTab = border();
-	} else {
-		mHTab = height() - border() - mTabWidgets.size() * TABSIZE - (mTabWidgets.size() - 1) * tabSpacing();
-	}
-	//    }
-
-	QPoint origin(width(), mHTab + mTabPalette->mVerticalOffset);
-
-	switch (mOrientation) {
-	case eUBDockOrientation_Left:
-		origin.setX(width());
-		break;
-	case eUBDockOrientation_Right:
-		if (parentWidget()) {
-			origin.setX(parentWidget()->width() - width() - border() * 2);
-		}
-		break;
-	case eUBDockOrientation_Top: ;
-	case eUBDockOrientation_Bottom: ;
-	}
-
-	mTabPalette->move(origin.x(), origin.y());
+    //   if (!mHTab) {
+    if(eUBDockTabOrientation_Up == mTabsOrientation) {
+        mHTab = border();
+    } else {
+        mHTab = height() - border() - mTabWidgets.size() * TABSIZE - (mTabWidgets.size() - 1) * tabSpacing();
+    }
+    //    }
+
+    QPoint origin(width(), mHTab + mTabPalette->mVerticalOffset);
+
+    switch (mOrientation) {
+    case eUBDockOrientation_Left:
+        origin.setX(width());
+        break;
+    case eUBDockOrientation_Right:
+        if (parentWidget()) {
+            origin.setX(parentWidget()->width() - width() - border() * 2);
+        }
+        break;
+    case eUBDockOrientation_Top: ;
+    case eUBDockOrientation_Bottom: ;
+    }
+
+    mTabPalette->move(origin.x(), origin.y());
 }
 void UBDockPalette::resizeTabs()
 {
-	int numTabs = mTabWidgets.size();
-	mTabPalette->setFixedSize(2 * border(), (numTabs * TABSIZE) + qMax(numTabs - 1, 0) * tabSpacing());
+    int numTabs = mTabWidgets.size();
+    mTabPalette->setFixedSize(2 * border(), (numTabs * TABSIZE) + qMax(numTabs - 1, 0) * tabSpacing());
 }
+
 QRect UBDockPalette::getTabPaletteRect()
 {
-	QRect tabsRect = mTabPalette->rect();
-	QPoint topLeft = mTabPalette->mapToParent(tabsRect.topLeft());
-	QPoint bottomRight = mTabPalette->mapToParent(tabsRect.bottomRight());
+    QRect tabsRect = mTabPalette->rect();
+    QPoint topLeft = mTabPalette->mapToParent(tabsRect.topLeft());
+    QPoint bottomRight = mTabPalette->mapToParent(tabsRect.bottomRight());
 
-	return QRect(topLeft, bottomRight);
+    return QRect(topLeft, bottomRight);
 }
 void UBDockPalette::assignParent(QWidget *widget)
 {
-	setParent(widget);
-	mTabPalette->setParent(widget);
+    setParent(widget);
+    mTabPalette->setParent(widget);
 }
 void UBDockPalette::setVisible(bool visible)
 {
-	QWidget::setVisible(visible);
-	mTabPalette->setVisible(visible);
+    QWidget::setVisible(visible);
+    mTabPalette->setVisible(visible);
 }
 
 bool UBDockPalette::switchMode(eUBDockPaletteWidgetMode mode)
 {
-	mLastOpenedTabForMode.insert(mCurrentMode, mpStackWidget->currentIndex());
-	mCurrentMode = mode;
-	bool hasVisibleElements = false;
-	//-------------------------------//
-	// get full palette widgets list, parse it, show all widgets for BOARD mode, and hide all other
-	for(int i = 0; i < mRegisteredWidgets.size(); i++)
-	{
-		UBDockPaletteWidget* pNextWidget = mRegisteredWidgets.at(i);
-		if( pNextWidget != NULL )
-		{
-			if( pNextWidget->visibleInMode(mode) )
-			{
-				addTab(pNextWidget);
-				hasVisibleElements = true;
-			}
-			else
-			{
-				removeTab(pNextWidget);
-			}
-		}
-	}
-	//-------------------------------//
-
-	if(mRegisteredWidgets.size() > 0)
-		showTabWidget(mLastOpenedTabForMode.value(mCurrentMode));
-
-	update();
-
-	return hasVisibleElements;
+    mLastOpenedTabForMode.insert(mCurrentMode, mpStackWidget->currentIndex());
+    mCurrentMode = mode;
+    bool hasVisibleElements = false;
+    //-------------------------------//
+    // get full palette widgets list, parse it, show all widgets for BOARD mode, and hide all other
+    for(int i = 0; i < mRegisteredWidgets.size(); i++)
+    {
+        UBDockPaletteWidget* pNextWidget = mRegisteredWidgets.at(i);
+        if( pNextWidget != NULL )
+        {
+            if( pNextWidget->visibleInMode(mode) )
+            {
+                addTab(pNextWidget);
+                hasVisibleElements = true;
+            }
+            else
+            {
+                removeTab(pNextWidget);
+            }
+        }
+    }
+    //-------------------------------//
+
+    if(mRegisteredWidgets.size() > 0)
+        showTabWidget(mLastOpenedTabForMode.value(mCurrentMode));
+
+    update();
+
+    return hasVisibleElements;
 }
 
 
 UBTabDockPalette::UBTabDockPalette(UBDockPalette *dockPalette, QWidget *parent) :
-    		QWidget(parent)
+            QWidget(parent)
 , dock(dockPalette)
 , mVerticalOffset(0)
 , mFlotable(false)
 {
-	int numTabs = dock->mTabWidgets.size();
-	resize(2 * dock->border(), (numTabs * TABSIZE) + qMax(numTabs - 1, 0) * dock->tabSpacing());
+    int numTabs = dock->mTabWidgets.size();
+    resize(2 * dock->border(), (numTabs * TABSIZE) + qMax(numTabs - 1, 0) * dock->tabSpacing());
 
-	setAttribute(Qt::WA_TranslucentBackground);
+    setAttribute(Qt::WA_TranslucentBackground);
 }
 
 void UBTabDockPalette::paintEvent(QPaintEvent *)
 {
-	int nTabs = dock->mTabWidgets.size();
-	if (nTabs <= 0) {
-		qDebug() << "not enough tabs";
-		return;
-	}
-
-	QPainter painter(this);
-	painter.setRenderHint(QPainter::Antialiasing);
-	painter.setPen(Qt::NoPen);
-	painter.setBrush(dock->mBackgroundBrush);
-
-	int yFrom = 0;
-	for (int i = 0; i < nTabs; i++) {
-		UBDockPaletteWidget* pCrntWidget = dock->mTabWidgets.at(i);
-		QPainterPath path;
-		path.setFillRule(Qt::WindingFill);
-		QPixmap iconPixmap;
-
-		switch (dock->mOrientation) {
-		case eUBDockOrientation_Left:
-			path.addRect(0, yFrom, width() / 2, TABSIZE);
-			path.addRoundedRect(0, yFrom, width(), TABSIZE, dock->radius(), dock->radius());
-			if (pCrntWidget) {
-				if(dock->mCollapseWidth >= dock->width()) {
-					// Get the collapsed icon
-					iconPixmap = pCrntWidget->iconToRight();
-				} else {
-					// Get the expanded icon
-					iconPixmap = pCrntWidget->iconToLeft();
-				}
-
-			}
-			break;
-
-		case eUBDockOrientation_Right:
-			path.addRect(width() /2, yFrom, width() / 2, TABSIZE);
-			path.addRoundedRect(0, yFrom, width(), TABSIZE, dock->radius(), dock->radius());
-			if (pCrntWidget) {
-				if(dock->mCollapseWidth >= dock->width()) {
-					// Get the collapsed icon
-					iconPixmap = pCrntWidget->iconToLeft();
-				} else {
-					// Get the expanded icon
-					iconPixmap = pCrntWidget->iconToRight();
-				}
-			}
-			break;
-
-		case eUBDockOrientation_Top: ;
-		case eUBDockOrientation_Bottom: ;
-		default:
-			break;
-		}
-
-		painter.save();
-		QPixmap transparencyPix(":/images/tab_mask.png");
-		if (dock->mCurrentTab != i) {
-			iconPixmap.setAlphaChannel(transparencyPix);
-			QColor color(0x7F, 0x7F, 0x7F, 0x3F);
-			painter.setBrush(QBrush(color));
-		}
-
-		painter.drawPath(path);
-		painter.drawPixmap(2, yFrom + 2, width() - 4, TABSIZE - 4, iconPixmap);
-		yFrom += (TABSIZE + dock->tabSpacing());
-		painter.restore();
-	}
+    int nTabs = dock->mTabWidgets.size();
+    if (nTabs <= 0) {
+        qDebug() << "not enough tabs";
+        return;
+    }
+
+    QPainter painter(this);
+    painter.setRenderHint(QPainter::Antialiasing);
+    painter.setPen(Qt::NoPen);
+    painter.setBrush(dock->mBackgroundBrush);
+
+    int yFrom = 0;
+    for (int i = 0; i < nTabs; i++) {
+        UBDockPaletteWidget* pCrntWidget = dock->mTabWidgets.at(i);
+        QPainterPath path;
+        path.setFillRule(Qt::WindingFill);
+        QPixmap iconPixmap;
+
+        switch (dock->mOrientation) {
+        case eUBDockOrientation_Left:
+            path.addRect(0, yFrom, width() / 2, TABSIZE);
+            path.addRoundedRect(0, yFrom, width(), TABSIZE, dock->radius(), dock->radius());
+            if (pCrntWidget) {
+                if(dock->mCollapseWidth >= dock->width()) {
+                    // Get the collapsed icon
+                    iconPixmap = pCrntWidget->iconToRight();
+                } else {
+                    // Get the expanded icon
+                    iconPixmap = pCrntWidget->iconToLeft();
+                }
+
+            }
+            break;
+
+        case eUBDockOrientation_Right:
+            path.addRect(width() /2, yFrom, width() / 2, TABSIZE);
+            path.addRoundedRect(0, yFrom, width(), TABSIZE, dock->radius(), dock->radius());
+            if (pCrntWidget) {
+                if(dock->mCollapseWidth >= dock->width()) {
+                    // Get the collapsed icon
+                    iconPixmap = pCrntWidget->iconToLeft();
+                } else {
+                    // Get the expanded icon
+                    iconPixmap = pCrntWidget->iconToRight();
+                }
+            }
+            break;
+
+        case eUBDockOrientation_Top: ;
+        case eUBDockOrientation_Bottom: ;
+        default:
+            break;
+        }
+
+        painter.save();
+        QPixmap transparencyPix(":/images/tab_mask.png");
+                if (dock->mCurrentTab != i) {
+            iconPixmap.setAlphaChannel(transparencyPix);
+            QColor color(0x7F, 0x7F, 0x7F, 0x3F);
+            painter.setBrush(QBrush(color));
+        }
+
+        painter.drawPath(path);
+        painter.drawPixmap(2, yFrom + 2, width() - 4, TABSIZE - 4, iconPixmap);
+        yFrom += (TABSIZE + dock->tabSpacing());
+        painter.restore();
+    }
 }
 UBTabDockPalette::~UBTabDockPalette()
 {
@@ -668,100 +663,100 @@ UBTabDockPalette::~UBTabDockPalette()
 
 void UBTabDockPalette::mousePressEvent(QMouseEvent *event)
 {
-	dock->mClickTime = QTime::currentTime();
-	// The goal here is to verify if the user can resize the widget.
-	// It is only possible to resize it if the border is selected
-	QPoint p = event->pos();
-	dock->mMousePressPos = p;
-	dock->mResized = false;
-
-	switch(dock->mOrientation) {
-	case eUBDockOrientation_Left:
-		dock->mCanResize = true;
-		break;
-	case eUBDockOrientation_Right:
-		dock->mCanResize = true;
-		break;
-	case eUBDockOrientation_Top:
-		// Not supported yet
-		break;
-	case eUBDockOrientation_Bottom:
-		// Not supported yet
-		break;
-	default:
-		break;
-	}
+    dock->mClickTime = QTime::currentTime();
+    // The goal here is to verify if the user can resize the widget.
+    // It is only possible to resize it if the border is selected
+    QPoint p = event->pos();
+    dock->mMousePressPos = p;
+    dock->mResized = false;
+
+    switch(dock->mOrientation) {
+    case eUBDockOrientation_Left:
+        dock->mCanResize = true;
+        break;
+    case eUBDockOrientation_Right:
+        dock->mCanResize = true;
+        break;
+    case eUBDockOrientation_Top:
+        // Not supported yet
+        break;
+    case eUBDockOrientation_Bottom:
+        // Not supported yet
+        break;
+    default:
+        break;
+    }
 }
 void UBTabDockPalette::mouseMoveEvent(QMouseEvent *event)
 {
-	QPoint p = event->pos();
+    QPoint p = event->pos();
 
-	if(dock->mCanResize && ((dock->mMousePressPos - p).manhattanLength() > QApplication::startDragDistance()))
-	{
-		if (qAbs(dock->mMousePressPos.y() - p.y()) > 10 && mFlotable) {
-			qDebug() << "y differences" << dock->mMousePressPos.y() << p.y();
-			mVerticalOffset += p.y() - dock->mMousePressPos.y();
-			move(this->pos().x(),  p.y());
-		}
+    if(dock->mCanResize && ((dock->mMousePressPos - p).manhattanLength() > QApplication::startDragDistance()))
+    {
+        if (qAbs(dock->mMousePressPos.y() - p.y()) > 10 && mFlotable) {
+            qDebug() << "y differences" << dock->mMousePressPos.y() << p.y();
+            mVerticalOffset += p.y() - dock->mMousePressPos.y();
+            move(this->pos().x(),  p.y());
+        }
 
-		switch(dock->mOrientation) {
+        switch(dock->mOrientation) {
 
-		case eUBDockOrientation_Left:
-			p.setX(p.x() + dock->width());
-			if(p.x() < dock->collapseWidth() && p.x() >= dock->minimumWidth()) {
+        case eUBDockOrientation_Left:
+            p.setX(p.x() + dock->width());
+            if(p.x() < dock->collapseWidth() && p.x() >= dock->minimumWidth()) {
                 dock->update();
-				dock->resize(0, dock->height());
-				//dock->mLastWidth = dock->collapseWidth() + 1;
-				dock->mResized = true;
-			} else if (p.x() <= dock->maximumWidth() && p.x() >= dock->minimumWidth()) {
-				dock->resize(p.x(), dock->height());
-				dock->mResized = true;
-			}
-			break;
-
-		case eUBDockOrientation_Right:
-			p.setX(p.x() - 2 * dock->border());
-			if((dock->x() + p.x() > dock->parentWidget()->width() - dock->collapseWidth()) && (dock->x() + p.x() < dock->parentWidget()->width())) {
+                dock->resize(0, dock->height());
+                //dock->mLastWidth = dock->collapseWidth() + 1;
+                dock->mResized = true;
+            } else if (p.x() <= dock->maximumWidth() && p.x() >= dock->minimumWidth()) {
+                dock->resize(p.x(), dock->height());
+                dock->mResized = true;
+            }
+            break;
+
+        case eUBDockOrientation_Right:
+            p.setX(p.x() - 2 * dock->border());
+            if((dock->x() + p.x() > dock->parentWidget()->width() - dock->collapseWidth()) && (dock->x() + p.x() < dock->parentWidget()->width())) {
                 dock->update();
-				dock->resize(0, dock->height());
-				//dock->mLastWidth = dock->collapseWidth() + 1;
-				dock->mResized = true;
-			} else if((dock->x() + p.x() >= dock->parentWidget()->width() - dock->maximumWidth()) && (dock->x() + p.x() <= dock->parentWidget()->width() - dock->minimumWidth())) {
-				dock->resize(dock->parentWidget()->width() - (dock->x() + p.x()), dock->height());
-				dock->mResized = true;
-			}
-			break;
-
-		case eUBDockOrientation_Top:
-		case eUBDockOrientation_Bottom:
-			if(p.y() <= dock->maximumHeight()) {
-				dock->resize(width(), p.y());
-				dock->mResized = true;
-			}
-			break;
-
-		default:
-			break;
-		}
-	}
+                dock->resize(0, dock->height());
+                //dock->mLastWidth = dock->collapseWidth() + 1;
+                dock->mResized = true;
+            } else if((dock->x() + p.x() >= dock->parentWidget()->width() - dock->maximumWidth()) && (dock->x() + p.x() <= dock->parentWidget()->width() - dock->minimumWidth())) {
+                dock->resize(dock->parentWidget()->width() - (dock->x() + p.x()), dock->height());
+                dock->mResized = true;
+            }
+            break;
+
+        case eUBDockOrientation_Top:
+        case eUBDockOrientation_Bottom:
+            if(p.y() <= dock->maximumHeight()) {
+                dock->resize(width(), p.y());
+                dock->mResized = true;
+            }
+            break;
+
+        default:
+            break;
+        }
+    }
 }
 
 void UBTabDockPalette::mouseReleaseEvent(QMouseEvent *event)
 {
-	Q_UNUSED(event);
-	if(!dock->mResized && dock->mClickTime.elapsed() < CLICKTIME) {
-		int nbTabs = dock->mTabWidgets.size();
-		int clickedTab = 0;
-		// If the clicked position is in the tab, perform the related action
-
-		if(dock->mMousePressPos.x() >= 0 &&
-				dock->mMousePressPos.x() <= width() &&
-				dock->mMousePressPos.y() >= 0 &&
-				dock->mMousePressPos.y() <= nbTabs * TABSIZE + (nbTabs -1)*dock->tabSpacing()) {
-
-			clickedTab = (dock->mMousePressPos.y()) / (TABSIZE + dock->tabSpacing());
-			dock->tabClicked(clickedTab);
-		}
-	}
-	dock->mCanResize = false;
+    Q_UNUSED(event);
+    if(!dock->mResized && dock->mClickTime.elapsed() < CLICKTIME) {
+        int nbTabs = dock->mTabWidgets.size();
+        int clickedTab = 0;
+        // If the clicked position is in the tab, perform the related action
+
+        if(dock->mMousePressPos.x() >= 0 &&
+                dock->mMousePressPos.x() <= width() &&
+                dock->mMousePressPos.y() >= 0 &&
+                dock->mMousePressPos.y() <= nbTabs * TABSIZE + (nbTabs -1)*dock->tabSpacing()) {
+
+            clickedTab = (dock->mMousePressPos.y()) / (TABSIZE + dock->tabSpacing());
+            dock->tabClicked(clickedTab);
+        }
+    }
+    dock->mCanResize = false;
 }
diff --git a/Sankore-3.1/src/gui/UBDockPalette.h b/Sankore-3.1/src/gui/UBDockPalette.h
index c6ee4e4..fd67891 100644
--- a/Sankore-3.1/src/gui/UBDockPalette.h
+++ b/Sankore-3.1/src/gui/UBDockPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDOCKPALETTE_H
 #define UBDOCKPALETTE_H
 
diff --git a/Sankore-3.1/src/gui/UBDockPaletteWidget.cpp b/Sankore-3.1/src/gui/UBDockPaletteWidget.cpp
index ec03be9..d798c9d 100644
--- a/Sankore-3.1/src/gui/UBDockPaletteWidget.cpp
+++ b/Sankore-3.1/src/gui/UBDockPaletteWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,9 +20,11 @@
  */
 
 
+
 #include "UBDockPaletteWidget.h"
 
 #include "core/memcheck.h"
+#include <QIcon>
 
 UBDockPaletteWidget::UBDockPaletteWidget(QWidget *parent, const char *name):QWidget(parent)
 {
@@ -34,14 +36,14 @@ UBDockPaletteWidget::~UBDockPaletteWidget()
 
 }
 
-QPixmap UBDockPaletteWidget::iconToRight()
+QPixmap UBDockPaletteWidget::iconToRight() const
 {
-    return mIconToRight;
+    return QPixmap();
 }
 
-QPixmap UBDockPaletteWidget::iconToLeft()
+QPixmap UBDockPaletteWidget::iconToLeft() const
 {
-    return mIconToLeft;
+    return QPixmap();
 }
 
 QString UBDockPaletteWidget::name()
diff --git a/Sankore-3.1/src/gui/UBDockPaletteWidget.h b/Sankore-3.1/src/gui/UBDockPaletteWidget.h
index 63a0468..278ad61 100644
--- a/Sankore-3.1/src/gui/UBDockPaletteWidget.h
+++ b/Sankore-3.1/src/gui/UBDockPaletteWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDOCKPALETTEWIDGET_H
 #define UBDOCKPALETTEWIDGET_H
 
@@ -36,7 +37,7 @@ typedef enum
     eUBDockPaletteWidget_BOARD,
     eUBDockPaletteWidget_WEB,
     eUBDockPaletteWidget_DOCUMENT,
-    eUBDockPaletteWidget_DESKTOP,
+    eUBDockPaletteWidget_DESKTOP
 } eUBDockPaletteWidgetMode;
 
 class UBDockPaletteWidget : public QWidget
@@ -47,8 +48,8 @@ public:
     UBDockPaletteWidget(QWidget* parent=0, const char* name="UBDockPaletteWidget");
     ~UBDockPaletteWidget();
 
-    QPixmap iconToRight();
-    QPixmap iconToLeft();
+    virtual QPixmap iconToRight() const;
+    virtual QPixmap iconToLeft() const;
     QString name();
 
     virtual bool visibleInMode(eUBDockPaletteWidgetMode mode) = 0;
@@ -67,8 +68,8 @@ public slots:
 
 
 protected:
-    QPixmap mIconToRight;   // arrow like this: >
-    QPixmap mIconToLeft;    // arrow like this: <
+//    QPixmap mIconToRight;   // arrow like this: >
+//    QPixmap mIconToLeft;    // arrow like this: <
     QString mName;
 
     /* The current widget available mode list */
diff --git a/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.cpp b/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.cpp
index 368a2a7..d292588 100644
--- a/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.cpp
+++ b/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "core/UBApplication.h"
 #include "globals/UBGlobals.h"
 
@@ -37,9 +38,6 @@ UBDockTeacherGuideWidget::UBDockTeacherGuideWidget(QWidget* parent, const char*
     mVisibleState = true;
     SET_STYLE_SHEET();
 
-    mIconToLeft = QPixmap(":images/teacher_open.png");
-    mIconToRight = QPixmap(":images/teacher_close.png");
-
     mpLayout = new QVBoxLayout(this);
     setLayout(mpLayout);
     mpTeacherGuideWidget = new UBTeacherGuideWidget(this);
diff --git a/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.h b/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.h
index 38a15a7..cd43d22 100644
--- a/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.h
+++ b/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDOCKTEACHERGUIDEWIDGET_H
 #define UBDOCKTEACHERGUIDEWIDGET_H
 
@@ -38,6 +39,9 @@ public:
 
     bool visibleInMode(eUBDockPaletteWidgetMode mode){ return mode == eUBDockPaletteWidget_BOARD; }
 
+    QPixmap iconToLeft() const {return QPixmap(":images/teacher_close.png");}
+    QPixmap iconToRight() const {return QPixmap(":images/teacher_open");}
+
     UBTeacherGuideWidget* teacherGuideWidget();
 
 private:
diff --git a/Sankore-3.1/src/gui/UBDocumentNavigator.cpp b/Sankore-3.1/src/gui/UBDocumentNavigator.cpp
index 11cd0b2..d0347fa 100644
--- a/Sankore-3.1/src/gui/UBDocumentNavigator.cpp
+++ b/Sankore-3.1/src/gui/UBDocumentNavigator.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,271 +18,281 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include <QList>
-#include <QPointF>
-#include <QPixmap>
-#include <QTransform>
-#include <QScrollBar>
-#include <QFontMetrics>
-#include <QGraphicsItem>
-#include <QGraphicsPixmapItem>
-
-#include "core/UBApplication.h"
-#include "UBDocumentNavigator.h"
-#include "board/UBBoardController.h"
-#include "adaptors/UBThumbnailAdaptor.h"
-#include "adaptors/UBSvgSubsetAdaptor.h"
-#include "document/UBDocumentController.h"
-#include "domain/UBGraphicsScene.h"
-#include "board/UBBoardPaletteManager.h"
-#include "core/UBApplicationController.h"
-
-#include "core/memcheck.h"
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the object name
- */
-UBDocumentNavigator::UBDocumentNavigator(QWidget *parent, const char *name):QGraphicsView(parent)
-  , mScene(NULL)
-  , mNbColumns(1)
-  , mThumbnailWidth(0)
-  , mThumbnailMinWidth(100)
-{
-    setObjectName(name);
-    mScene = new QGraphicsScene(this);
-    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    setScene(mScene);
-    mThumbnailWidth = width() - 2*border();
-
-    setFrameShadow(QFrame::Plain);
-
-    connect(UBApplication::boardController, SIGNAL(documentThumbnailsUpdated(UBDocumentContainer*)), this, SLOT(generateThumbnails(UBDocumentContainer*)));
-    connect(UBApplication::boardController, SIGNAL(documentPageUpdated(int)), this, SLOT(updateSpecificThumbnail(int)));
-    connect(UBApplication::boardController, SIGNAL(pageSelectionChanged(int)), this, SLOT(onScrollToSelectedPage(int)));
-}
-
-/**
- * \brief Destructor
- */
-UBDocumentNavigator::~UBDocumentNavigator()
-{
-    if(NULL != mScene)
-    {
-        delete mScene;
-        mScene = NULL;
-    }
-}
-
-#include "gui/UBDockTeacherGuideWidget.h"
-#include "gui/UBTeacherGuideWidget.h"
-
-/**
- * \brief Generate the thumbnails
- */
-void UBDocumentNavigator::generateThumbnails(UBDocumentContainer* source)
-{
-
-	mThumbsWithLabels.clear();
-	foreach(QGraphicsItem* it, mScene->items())
-    {
-        mScene->removeItem(it);
-        delete it;
-        it = NULL;
-    }
-
-    for(int i = 0; i < source->selectedDocument()->pageCount(); i++)
-    {
-        const QPixmap* pix = source->pageAt(i);
-        Q_ASSERT(!pix->isNull());
-        int pageIndex = UBDocumentContainer::pageFromSceneIndex(i);
-
-        UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(*pix, source->selectedDocument(), i);
-
-        QString label = pageIndex == 0 ? tr("Title page") : tr("Page %0").arg(pageIndex);
-        UBThumbnailTextItem *labelItem = new UBThumbnailTextItem(label);
-
-		UBImgTextThumbnailElement thumbWithText(pixmapItem, labelItem);
-		thumbWithText.setBorder(border());
-		mThumbsWithLabels.append(thumbWithText);
-
-		mScene->addItem(pixmapItem);
-		mScene->addItem(labelItem);
-    }
-    
-	// Draw the items
-    refreshScene();
-}
-
-void UBDocumentNavigator::onScrollToSelectedPage(int index)
-{
-    int c  = 0;
-    foreach(UBImgTextThumbnailElement el, mThumbsWithLabels)
-    {
-        if (c==index)
-        {
-            el.getThumbnail()->setSelected(true);
-        }
-        else
-        {
-            el.getThumbnail()->setSelected(false);
-        }
-        c++;
-    }
-}
-
-/**
- * \brief Refresh the given thumbnail
- * @param iPage as the given page related thumbnail
- */
-void UBDocumentNavigator::updateSpecificThumbnail(int iPage)
-{
-    // Generate the new thumbnail
-    //UBGraphicsScene* pScene = UBApplication::boardController->activeScene();
-
-    const QPixmap* pix = UBApplication::boardController->pageAt(iPage);
-    UBSceneThumbnailNavigPixmap* newItem = new UBSceneThumbnailNavigPixmap(*pix, UBApplication::boardController->selectedDocument(), iPage);
-
-    // Get the old thumbnail
-    UBSceneThumbnailNavigPixmap* oldItem = mThumbsWithLabels.at(iPage).getThumbnail();
-    if(NULL != oldItem)
-    {
-        mScene->removeItem(oldItem);
-        mScene->addItem(newItem);
-        mThumbsWithLabels[iPage].setThumbnail(newItem);
-        delete oldItem;
-        oldItem = NULL;
-    }
-
-}
-
-/**
- * \brief Put the element in the right place in the scene.
- */
-void UBDocumentNavigator::refreshScene()
-{
-    qreal thumbnailHeight = mThumbnailWidth / UBSettings::minScreenRatio;
-
-    for(int i = 0; i < mThumbsWithLabels.size(); i++)
-    {
-        // Get the item
-        UBImgTextThumbnailElement& item = mThumbsWithLabels[i];
-        int columnIndex = i % mNbColumns;
-        int rowIndex = i / mNbColumns;
-		item.Place(rowIndex, columnIndex, mThumbnailWidth, thumbnailHeight);
-    }
-    scene()->setSceneRect(scene()->itemsBoundingRect());
-}
-
-/**
- * \brief  Set the number of thumbnails columns
- * @param nbColumns as the number of columns
- */
-void UBDocumentNavigator::setNbColumns(int nbColumns)
-{
-    mNbColumns = nbColumns;
-}
-
-/**
- * \brief Get the number of columns
- * @return the number of thumbnails columns
- */
-int UBDocumentNavigator::nbColumns()
-{
-    return mNbColumns;
-}
-
-/**
- * \brief Set the thumbnails minimum width
- * @param width as the minimum width
- */
-void UBDocumentNavigator::setThumbnailMinWidth(int width)
-{
-    mThumbnailMinWidth = width;
-}
-
-/**
- * \brief Get the thumbnails minimum width
- * @return the minimum thumbnails width
- */
-int UBDocumentNavigator::thumbnailMinWidth()
-{
-    return mThumbnailMinWidth;
-}
-
-/**
- * \brief Get the border size
- * @return the border size in pixels
- */
-int UBDocumentNavigator::border()
-{
-    return 20;
-}
-
-/**
- * \brief Handle the resize event
- * @param event as the resize event
- */
-void UBDocumentNavigator::resizeEvent(QResizeEvent *event)
-{
-    Q_UNUSED(event);
-
-    // Update the thumbnails width
-    mThumbnailWidth = (width() > mThumbnailMinWidth) ? width() - 2*border() : mThumbnailMinWidth;
-
-    // Refresh the scene
-    refreshScene();
-}
-
-/**
- * \brief Handle the mouse press event
- * @param event as the mouse event
- */
-void UBDocumentNavigator::mousePressEvent(QMouseEvent *event)
-{
-    QGraphicsItem* pClickedItem = itemAt(event->pos());
-    if(NULL != pClickedItem)
-    {
-
-        // First, select the clicked item
-        UBSceneThumbnailNavigPixmap* pCrntItem = dynamic_cast<UBSceneThumbnailNavigPixmap*>(pClickedItem);
-
-        if(NULL == pCrntItem)
-        {
-            // If we fall here we may have clicked on the label instead of the thumbnail
-            UBThumbnailTextItem* pTextItem = dynamic_cast<UBThumbnailTextItem*>(pClickedItem);
-            if(NULL != pTextItem) 
-            {
-                for(int i = 0; i < mThumbsWithLabels.size(); i++)
-				{
-					const UBImgTextThumbnailElement& el = mThumbsWithLabels.at(i);
-					if(el.getCaption() == pTextItem)
-					{
-						pCrntItem = el.getThumbnail();
-						break;
-					}
-				}
-            }
-        }
-
-        int index = 0;
-		for(int i = 0; i < mThumbsWithLabels.size(); i++)
-        {
-		    if (mThumbsWithLabels.at(i).getThumbnail() == pCrntItem)
-            {
-                index = i;
-                break;
-            }
-        }
-        UBApplication::boardController->setActiveDocumentScene(index);
-	}
-	QGraphicsView::mousePressEvent(event);
-}
-
-void UBDocumentNavigator::mouseReleaseEvent(QMouseEvent *event)
-{
-    event->accept();
-}
+
+
+
+#include <QList>
+#include <QPointF>
+#include <QPixmap>
+#include <QTransform>
+#include <QScrollBar>
+#include <QFontMetrics>
+#include <QGraphicsItem>
+#include <QGraphicsPixmapItem>
+
+#include "core/UBApplication.h"
+#include "UBDocumentNavigator.h"
+#include "board/UBBoardController.h"
+#include "adaptors/UBThumbnailAdaptor.h"
+#include "adaptors/UBSvgSubsetAdaptor.h"
+#include "document/UBDocumentController.h"
+#include "domain/UBGraphicsScene.h"
+#include "board/UBBoardPaletteManager.h"
+#include "core/UBApplicationController.h"
+
+#include "core/memcheck.h"
+
+/**
+ * \brief Constructor
+ * @param parent as the parent widget
+ * @param name as the object name
+ */
+UBDocumentNavigator::UBDocumentNavigator(QWidget *parent, const char *name):QGraphicsView(parent)
+  , mScene(NULL)
+  , mNbColumns(1)
+  , mThumbnailWidth(0)
+  , mThumbnailMinWidth(100)
+{
+    setObjectName(name);
+    mScene = new QGraphicsScene(this);
+    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    setScene(mScene);
+    mThumbnailWidth = width() - 2*border();
+
+    setFrameShadow(QFrame::Plain);
+
+    UBApplication::boardController->setDocumentNavigator(this);
+    connect(UBApplication::boardController, SIGNAL(documentThumbnailsUpdated(UBDocumentContainer*)), this, SLOT(generateThumbnails(UBDocumentContainer*)));
+    connect(UBApplication::boardController, SIGNAL(documentPageUpdated(int)), this, SLOT(updateSpecificThumbnail(int)));
+    connect(UBApplication::boardController, SIGNAL(pageSelectionChanged(int)), this, SLOT(onScrollToSelectedPage(int)));
+}
+
+/**
+ * \brief Destructor
+ */
+UBDocumentNavigator::~UBDocumentNavigator()
+{
+    if(NULL != mScene)
+    {
+        delete mScene;
+        mScene = NULL;
+    }
+}
+
+#include "gui/UBDockTeacherGuideWidget.h"
+#include "gui/UBTeacherGuideWidget.h"
+
+/**
+ * \brief Generate the thumbnails
+ */
+void UBDocumentNavigator::generateThumbnails(UBDocumentContainer* source)
+{
+	mThumbsWithLabels.clear();
+	foreach(QGraphicsItem* it, mScene->items())
+    {
+        mScene->removeItem(it);
+        delete it;
+        it = NULL;
+    }
+
+    for(int i = 0; i < source->pageCount(); i++)
+    {
+        const QPixmap* pix = source->pageAt(i);
+        Q_ASSERT(!pix->isNull());
+        int pageIndex = UBDocumentContainer::pageFromSceneIndex(i);
+
+        UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(*pix, source->selectedDocument(), i);
+
+        QString label = pageIndex == 0 ? tr("Title page") : tr("Page %0").arg(pageIndex);
+        UBThumbnailTextItem *labelItem = new UBThumbnailTextItem(label);
+
+        pixmapItem->setLabel(labelItem);
+
+		UBImgTextThumbnailElement thumbWithText(pixmapItem, labelItem);
+		thumbWithText.setBorder(border());
+		mThumbsWithLabels.append(thumbWithText);
+
+		mScene->addItem(pixmapItem);
+		mScene->addItem(labelItem);
+    }
+    
+	// Draw the items
+    refreshScene();
+}
+
+void UBDocumentNavigator::onScrollToSelectedPage(int index)
+{
+    int c  = 0;
+    foreach(UBImgTextThumbnailElement el, mThumbsWithLabels)
+    {
+        if (c==index)
+        {
+            el.getThumbnail()->setSelected(true);
+        }
+        else
+        {
+            el.getThumbnail()->setSelected(false);
+        }
+        c++;
+    }
+}
+
+/**
+ * \brief Refresh the given thumbnail
+ * @param iPage as the given page related thumbnail
+ */
+void UBDocumentNavigator::updateSpecificThumbnail(int iPage)
+{
+    // Generate the new thumbnail
+    //UBGraphicsScene* pScene = UBApplication::boardController->activeScene();
+
+    const QPixmap* pix = UBApplication::boardController->pageAt(iPage);
+    UBSceneThumbnailNavigPixmap* newItem = new UBSceneThumbnailNavigPixmap(*pix, UBApplication::boardController->selectedDocument(), iPage);
+
+    // Get the old thumbnail
+    UBSceneThumbnailNavigPixmap* oldItem = mThumbsWithLabels.at(iPage).getThumbnail();
+    if(NULL != oldItem)
+    {
+        mScene->removeItem(oldItem);
+        mScene->addItem(newItem);
+        mThumbsWithLabels[iPage].setThumbnail(newItem);
+        delete oldItem;
+        oldItem = NULL;
+    }
+
+}
+
+/**
+ * \brief Put the element in the right place in the scene.
+ */
+void UBDocumentNavigator::refreshScene()
+{
+    qreal thumbnailHeight = mThumbnailWidth / UBSettings::minScreenRatio;
+
+    for(int i = 0; i < mThumbsWithLabels.size(); i++)
+    {
+        // Get the item
+        UBImgTextThumbnailElement& item = mThumbsWithLabels[i];
+        int columnIndex = i % mNbColumns;
+        int rowIndex = i / mNbColumns;
+		item.Place(rowIndex, columnIndex, mThumbnailWidth, thumbnailHeight);
+        item.getCaption()->highlight(false);
+    }
+    scene()->setSceneRect(scene()->itemsBoundingRect());
+
+    if (mThumbsWithLabels.count() > UBApplication::boardController->activeSceneIndex())
+    {
+        mThumbsWithLabels.at(UBApplication::boardController->activeSceneIndex()).getThumbnail()->setSelected(true);
+        mThumbsWithLabels.at(UBApplication::boardController->activeSceneIndex()).getCaption()->highlight(true);
+    }
+}
+
+/**
+ * \brief  Set the number of thumbnails columns
+ * @param nbColumns as the number of columns
+ */
+void UBDocumentNavigator::setNbColumns(int nbColumns)
+{
+    mNbColumns = nbColumns;
+}
+
+/**
+ * \brief Get the number of columns
+ * @return the number of thumbnails columns
+ */
+int UBDocumentNavigator::nbColumns()
+{
+    return mNbColumns;
+}
+
+/**
+ * \brief Set the thumbnails minimum width
+ * @param width as the minimum width
+ */
+void UBDocumentNavigator::setThumbnailMinWidth(int width)
+{
+    mThumbnailMinWidth = width;
+}
+
+/**
+ * \brief Get the thumbnails minimum width
+ * @return the minimum thumbnails width
+ */
+int UBDocumentNavigator::thumbnailMinWidth()
+{
+    return mThumbnailMinWidth;
+}
+
+/**
+ * \brief Get the border size
+ * @return the border size in pixels
+ */
+int UBDocumentNavigator::border()
+{
+    return 20;
+}
+
+/**
+ * \brief Handle the resize event
+ * @param event as the resize event
+ */
+void UBDocumentNavigator::resizeEvent(QResizeEvent *event)
+{
+    Q_UNUSED(event);
+
+    // Update the thumbnails width
+    mThumbnailWidth = (width() > mThumbnailMinWidth) ? width() - 2*border() : mThumbnailMinWidth;
+
+    // Refresh the scene
+    refreshScene();
+}
+
+/**
+ * \brief Handle the mouse press event
+ * @param event as the mouse event
+ */
+void UBDocumentNavigator::mousePressEvent(QMouseEvent *event)
+{
+    QGraphicsItem* pClickedItem = itemAt(event->pos());
+    if(NULL != pClickedItem)
+    {
+
+        // First, select the clicked item
+        UBSceneThumbnailNavigPixmap* pCrntItem = dynamic_cast<UBSceneThumbnailNavigPixmap*>(pClickedItem);
+
+        if(NULL == pCrntItem)
+        {
+            // If we fall here we may have clicked on the label instead of the thumbnail
+            UBThumbnailTextItem* pTextItem = dynamic_cast<UBThumbnailTextItem*>(pClickedItem);
+            if(NULL != pTextItem) 
+            {
+                for(int i = 0; i < mThumbsWithLabels.size(); i++)
+				{
+					const UBImgTextThumbnailElement& el = mThumbsWithLabels.at(i);
+					if(el.getCaption() == pTextItem)
+					{
+						pCrntItem = el.getThumbnail();
+						break;
+					}
+				}
+            }
+        }
+
+        int index = 0;
+		for(int i = 0; i < mThumbsWithLabels.size(); i++)
+        {
+		    if (mThumbsWithLabels.at(i).getThumbnail() == pCrntItem)
+            {
+                index = i;
+                break;
+            }
+        }
+        UBApplication::boardController->setActiveDocumentScene(index);
+	}
+	QGraphicsView::mousePressEvent(event);
+}
+
+void UBDocumentNavigator::mouseReleaseEvent(QMouseEvent *event)
+{
+    event->accept();
+}
diff --git a/Sankore-3.1/src/gui/UBDocumentNavigator.h b/Sankore-3.1/src/gui/UBDocumentNavigator.h
index f96bae2..3bddeaa 100644
--- a/Sankore-3.1/src/gui/UBDocumentNavigator.h
+++ b/Sankore-3.1/src/gui/UBDocumentNavigator.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,63 +18,64 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBDOCUMENTNAVIGATOR_H
-#define UBDOCUMENTNAVIGATOR_H
-
-#include <QResizeEvent>
-#include <QGraphicsView>
-#include <QGraphicsScene>
-#include <QMouseEvent>
-#include <QThread>
-
-#include "document/UBDocumentProxy.h"
-#include "document/UBDocumentContainer.h"
-#include "UBThumbnailWidget.h"
-
-#define NO_PAGESELECTED		    -1
-
-class UBDocumentNavigator : public QGraphicsView
-{
-    Q_OBJECT
-public:
-    UBDocumentNavigator(QWidget* parent=0, const char* name="documentNavigator");
-    ~UBDocumentNavigator();
-
-    void setNbColumns(int nbColumns);
-    int nbColumns();
-    void setThumbnailMinWidth(int width);
-    int thumbnailMinWidth();
-
-public slots:
-    void onScrollToSelectedPage(int index);// { if (mCrntItem) centerOn(mCrntItem); }
-    void generateThumbnails(UBDocumentContainer* source);
-    void updateSpecificThumbnail(int iPage);
-
-protected:
-    virtual void resizeEvent(QResizeEvent *event);
-    virtual void mousePressEvent(QMouseEvent *event);
-    virtual void mouseReleaseEvent(QMouseEvent *event);
-
-private:
-    
-    void refreshScene();
-    int border();
-
-
-    /** The scene */
-    QGraphicsScene* mScene;
-    /** The current selected item */
-    //UBSceneThumbnailNavigPixmap* mCrntItem;
-	/** The list of current thumbnails with labels*/
-	QList<UBImgTextThumbnailElement> mThumbsWithLabels;
-    /** The current number of columns */
-    int mNbColumns;
-    /** The current thumbnails width */
-    int mThumbnailWidth;
-    /** The current thumbnails minimum width */
-    int mThumbnailMinWidth;
-};
- 
-#endif // UBDOCUMENTNAVIGATOR_H
+
+
+
+#ifndef UBDOCUMENTNAVIGATOR_H
+#define UBDOCUMENTNAVIGATOR_H
+
+#include <QResizeEvent>
+#include <QGraphicsView>
+#include <QGraphicsScene>
+#include <QMouseEvent>
+#include <QThread>
+
+#include "document/UBDocumentProxy.h"
+#include "document/UBDocumentContainer.h"
+#include "UBThumbnailWidget.h"
+
+#define NO_PAGESELECTED		    -1
+
+class UBDocumentNavigator : public QGraphicsView
+{
+    Q_OBJECT
+public:
+    UBDocumentNavigator(QWidget* parent=0, const char* name="documentNavigator");
+    ~UBDocumentNavigator();
+
+    void setNbColumns(int nbColumns);
+    int nbColumns();
+    void setThumbnailMinWidth(int width);
+    int thumbnailMinWidth();
+
+public slots:
+    void onScrollToSelectedPage(int index);// { if (mCrntItem) centerOn(mCrntItem); }
+    void generateThumbnails(UBDocumentContainer* source);
+    void updateSpecificThumbnail(int iPage);
+
+protected:
+    virtual void resizeEvent(QResizeEvent *event);
+    virtual void mousePressEvent(QMouseEvent *event);
+    virtual void mouseReleaseEvent(QMouseEvent *event);
+
+private:
+    
+    void refreshScene();
+    int border();
+
+
+    /** The scene */
+    QGraphicsScene* mScene;
+    /** The current selected item */
+    //UBSceneThumbnailNavigPixmap* mCrntItem;
+	/** The list of current thumbnails with labels*/
+	QList<UBImgTextThumbnailElement> mThumbsWithLabels;
+    /** The current number of columns */
+    int mNbColumns;
+    /** The current thumbnails width */
+    int mThumbnailWidth;
+    /** The current thumbnails minimum width */
+    int mThumbnailMinWidth;
+};
+ 
+#endif // UBDOCUMENTNAVIGATOR_H
diff --git a/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.cpp b/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.cpp
index d384aab..10ee578 100644
--- a/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.cpp
+++ b/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,305 +18,295 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBDocumentThumbnailWidget.h"
-
-#include "core/UBApplication.h"
-#include "core/UBMimeData.h"
-#include "core/UBSettings.h"
-
-#include "board/UBBoardController.h"
-
-#include "document/UBDocumentController.h"
-
-#include "core/memcheck.h"
-
-
-UBDocumentThumbnailWidget::UBDocumentThumbnailWidget(QWidget* parent)
-    : UBThumbnailWidget(parent)
-    , mDropCaretRectItem(0)
-    , mClosestDropItem(0)
-	, mDragEnabled(true)
-    , mScrollMagnitude(0)
-{
-	bCanDrag = false;
-    mScrollTimer = new QTimer(this);
-	connect(mScrollTimer, SIGNAL(timeout()), this, SLOT(autoScroll()));
-}
-
-
-UBDocumentThumbnailWidget::~UBDocumentThumbnailWidget()
-{
-    // NOOP
-}
-
-
-void UBDocumentThumbnailWidget::mouseMoveEvent(QMouseEvent *event)
-{
-    if (!dragEnabled())
-    {
-        event->ignore();
-        return;
-    }
-
-    if (!(event->buttons() & Qt::LeftButton))
-        return;
-
-    if ((event->pos() - mMousePressPos).manhattanLength() < QApplication::startDragDistance())
-             return;
-
-    QList<QGraphicsItem*> graphicsItems = items(mMousePressPos);
-
-    UBSceneThumbnailPixmap* sceneItem = 0;
-
-    while (!graphicsItems.isEmpty() && !sceneItem)
-        sceneItem = dynamic_cast<UBSceneThumbnailPixmap*>(graphicsItems.takeFirst());
-
-    if (sceneItem)
-    {
-        int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneItem->sceneIndex());
-        if(pageIndex != 0){
-        	QDrag *drag = new QDrag(this);
-        	QList<UBMimeDataItem> mimeDataItems;
-        	foreach (QGraphicsItem *item, selectedItems())
-        		mimeDataItems.append(UBMimeDataItem(sceneItem->proxy(), mGraphicItems.indexOf(item)));
-
-        	UBMimeData *mime = new UBMimeData(mimeDataItems);
-        	drag->setMimeData(mime);
-
-        	drag->setPixmap(sceneItem->pixmap().scaledToWidth(100));
-        	drag->setHotSpot(QPoint(drag->pixmap().width()/2, drag->pixmap().height() / 2));
-
-        	drag->exec(Qt::MoveAction);
-        }
-    }
-
-    UBThumbnailWidget::mouseMoveEvent(event);
-}
-
-void UBDocumentThumbnailWidget::dragEnterEvent(QDragEnterEvent *event)
-{
-    if (!event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
-    {
-        event->setDropAction(Qt::IgnoreAction);
-        event->ignore();
-        return;
-    }
-
-    UBThumbnailWidget::dragEnterEvent(event);
-}
-
-void UBDocumentThumbnailWidget::dragLeaveEvent(QDragLeaveEvent *event)
-{
-    Q_UNUSED(event);
-	if (mScrollTimer->isActive())
-	{
-		mScrollMagnitude = 0;
-		mScrollTimer->stop();
-	}
-    deleteDropCaret();
-    UBThumbnailWidget::dragLeaveEvent(event);
-}
-
-void UBDocumentThumbnailWidget::autoScroll()
-{
-	this->verticalScrollBar()->setValue(this->verticalScrollBar()->value() + mScrollMagnitude);
-}
-
-void UBDocumentThumbnailWidget::dragMoveEvent(QDragMoveEvent *event)
-{
-	QRect boundingFrame = frameRect();
-	//setting up automatic scrolling
-	const int SCROLL_DISTANCE = 16;
-	int bottomDist = boundingFrame.bottom() - event->pos().y(), topDist = boundingFrame.top() - event->pos().y();
-	if(qAbs(bottomDist) <= SCROLL_DISTANCE)
-	{
-		mScrollMagnitude = (SCROLL_DISTANCE - bottomDist)*4;
-		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
-	}
-	else if(qAbs(topDist) <= SCROLL_DISTANCE)
-	{
-		mScrollMagnitude = (- SCROLL_DISTANCE - topDist)*4;
-		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
-	}
-	else
-	{
-		mScrollMagnitude = 0;
-		mScrollTimer->stop();
-	}
-
-	QList<UBSceneThumbnailPixmap*> pixmapItems;
-    foreach (QGraphicsItem *item, scene()->items(mapToScene(boundingFrame)))
-    {
-        UBSceneThumbnailPixmap* sceneItem = dynamic_cast<UBSceneThumbnailPixmap*>(item);
-        if (sceneItem)
-            pixmapItems.append(sceneItem);
-    }
-
-    int minDistance = 0;
-    QGraphicsItem *underlyingItem = itemAt(event->pos());
-    mClosestDropItem = dynamic_cast<UBSceneThumbnailPixmap*>(underlyingItem);
-
-    int pageIndex = -1;
-    if(mClosestDropItem){
-    	pageIndex = UBDocumentContainer::pageFromSceneIndex(mClosestDropItem->sceneIndex());
-    	if(pageIndex == 0){
-    		 event->acceptProposedAction();
-    		 return;
-    	}
-    }
-    if (!mClosestDropItem)
-    {
-        foreach (UBSceneThumbnailPixmap *item, pixmapItems)
-        {
-            qreal scale = item->transform().m11();
-            QPointF itemCenter(
-                item->pos().x() + item->boundingRect().width() * scale / 2,
-                item->pos().y() + item->boundingRect().height() * scale / 2);
-
-            int distance = (itemCenter.toPoint() - mapToScene(event->pos()).toPoint()).manhattanLength();
-            if (!mClosestDropItem || distance < minDistance)
-            {
-                mClosestDropItem = item;
-                minDistance = distance;
-                pageIndex = UBDocumentContainer::pageFromSceneIndex(mClosestDropItem->sceneIndex());
-            }
-        }
-    }
-
-    if (mClosestDropItem && pageIndex != 0)
-    {
-        qreal scale = mClosestDropItem->transform().m11();
-
-        QPointF itemCenter(
-            mClosestDropItem->pos().x() + mClosestDropItem->boundingRect().width() * scale / 2,
-            mClosestDropItem->pos().y() + mClosestDropItem->boundingRect().height() * scale / 2);
-
-        mDropIsRight = mapToScene(event->pos()).x() > itemCenter.x();
-
-        if (!mDropCaretRectItem && selectedItems().count() < mGraphicItems.count())
-        {
-            mDropCaretRectItem = new QGraphicsRectItem(0, scene());
-            mDropCaretRectItem->setPen(QPen(Qt::darkGray));
-            mDropCaretRectItem->setBrush(QBrush(Qt::lightGray));
-        }
-
-        QRectF dropCaretRect(
-            mDropIsRight ? mClosestDropItem->pos().x() + mClosestDropItem->boundingRect().width() * scale + spacing() / 2 - 1 : mClosestDropItem->pos().x() - spacing() / 2 - 1,
-            mClosestDropItem->pos().y(),
-            3,
-            mClosestDropItem->boundingRect().height() * scale);
-
-        if (mDropCaretRectItem)
-            mDropCaretRectItem->setRect(dropCaretRect);
-    }
-
-    event->acceptProposedAction();
-}
-
-
-void UBDocumentThumbnailWidget::dropEvent(QDropEvent *event)
-{
-	if (mScrollTimer->isActive())
-	{
-		mScrollMagnitude = 0;
-		mScrollTimer->stop();
-	}
-	deleteDropCaret();
-
-    if (mClosestDropItem)
-    {
-        int targetIndex = mDropIsRight ? mGraphicItems.indexOf(mClosestDropItem) + 1 : mGraphicItems.indexOf(mClosestDropItem);
-        if(UBDocumentContainer::pageFromSceneIndex(targetIndex) == 0){
-        	event->ignore();
-        	return;
-        }
-
-        QList<UBMimeDataItem> mimeDataItems;
-        if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
-        {
-            const UBMimeData* mimeData = qobject_cast<const UBMimeData*>(event->mimeData());
-            if (mimeData)
-                mimeDataItems = mimeData->items();
-        }
-
-        if (1 == mimeDataItems.count() &&
-            (mimeDataItems.at(0).sceneIndex() == mGraphicItems.indexOf(mClosestDropItem) ||
-             targetIndex == mimeDataItems.at(0).sceneIndex() ||
-             targetIndex == mimeDataItems.at(0).sceneIndex() + 1))
-        {
-            return;
-        }
-
-        int sourceIndexOffset = 0;
-        int actualTargetIndex = targetIndex;
-        for (int i = mimeDataItems.count() - 1; i >= 0; i--)
-        {
-            UBMimeDataItem sourceItem = mimeDataItems.at(i);
-            int actualSourceIndex = sourceItem.sceneIndex();
-            if (sourceItem.sceneIndex() >= targetIndex)
-                actualSourceIndex += sourceIndexOffset;
-
-            //event->acceptProposedAction();
-            if (sourceItem.sceneIndex() < targetIndex)
-            {
-                if (actualSourceIndex != actualTargetIndex - 1)
-                    emit sceneDropped(sourceItem.documentProxy(), actualSourceIndex, actualTargetIndex - 1);
-                actualTargetIndex -= 1;
-            }
-            else
-            {
-                if (actualSourceIndex != actualTargetIndex)
-                    emit sceneDropped(sourceItem.documentProxy(), actualSourceIndex, actualTargetIndex);
-                sourceIndexOffset += 1;
-            }
-        }
-    }
-    UBThumbnailWidget::dropEvent(event);
-}
-
-void UBDocumentThumbnailWidget::deleteDropCaret()
-{
-    if (mDropCaretRectItem && scene())
-    {
-        scene()->removeItem(mDropCaretRectItem);
-        delete mDropCaretRectItem;
-        mDropCaretRectItem = 0;
-    }
-}
-
-void UBDocumentThumbnailWidget::setGraphicsItems(const QList<QGraphicsItem*>& pGraphicsItems,
-    const QList<QUrl>& pItemPaths, const QStringList pLabels,
-    const QString& pMimeType)
-{
-    deleteDropCaret();
-
-    UBThumbnailWidget::setGraphicsItems(pGraphicsItems, pItemPaths, pLabels, pMimeType);
-}
-
-void UBDocumentThumbnailWidget::setDragEnabled(bool enabled)
-{
-    mDragEnabled = enabled;
-}
-
-bool UBDocumentThumbnailWidget::dragEnabled() const
-{
-    return mDragEnabled;
-}
-
-void UBDocumentThumbnailWidget::hightlightItem(int index)
-{
-    if (0 <= index && index < mLabelsItems.length())
-    {
-        mLabelsItems.at(index)->highlight();
-    }
-    if (0 <= index && index < mGraphicItems.length())
-    {
-        UBSceneThumbnailPixmap *thumbnail = dynamic_cast<UBSceneThumbnailPixmap*>(mGraphicItems.at(index));
-        if (thumbnail)
-            thumbnail->highlight();
-    }
-
-    selectItemAt(index);
-}
+
+
+
+#include "UBDocumentThumbnailWidget.h"
+
+#include "core/UBApplication.h"
+#include "core/UBMimeData.h"
+#include "core/UBSettings.h"
+
+#include "board/UBBoardController.h"
+
+#include "document/UBDocumentController.h"
+
+#include "core/memcheck.h"
+
+
+UBDocumentThumbnailWidget::UBDocumentThumbnailWidget(QWidget* parent)
+    : UBThumbnailWidget(parent)
+    , mDropCaretRectItem(0)
+    , mClosestDropItem(0)
+	, mDragEnabled(true)
+    , mScrollMagnitude(0)
+{
+	bCanDrag = false;
+    mScrollTimer = new QTimer(this);
+	connect(mScrollTimer, SIGNAL(timeout()), this, SLOT(autoScroll()));
+}
+
+
+UBDocumentThumbnailWidget::~UBDocumentThumbnailWidget()
+{
+    // NOOP
+}
+
+
+void UBDocumentThumbnailWidget::mouseMoveEvent(QMouseEvent *event)
+{
+    if (!dragEnabled())
+    {
+        event->ignore();
+        return;
+    }
+
+    if (!(event->buttons() & Qt::LeftButton))
+        return;
+
+    if ((event->pos() - mMousePressPos).manhattanLength() < QApplication::startDragDistance())
+             return;
+
+    QList<QGraphicsItem*> graphicsItems = items(mMousePressPos);
+
+    UBSceneThumbnailPixmap* sceneItem = 0;
+
+    while (!graphicsItems.isEmpty() && !sceneItem)
+        sceneItem = dynamic_cast<UBSceneThumbnailPixmap*>(graphicsItems.takeFirst());
+
+    if (sceneItem)
+    {
+        int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneItem->sceneIndex());
+        if(pageIndex != 0){
+        	QDrag *drag = new QDrag(this);
+        	QList<UBMimeDataItem> mimeDataItems;
+        	foreach (QGraphicsItem *item, selectedItems())
+        		mimeDataItems.append(UBMimeDataItem(sceneItem->proxy(), mGraphicItems.indexOf(item)));
+
+        	UBMimeData *mime = new UBMimeData(mimeDataItems);
+        	drag->setMimeData(mime);
+
+        	drag->setPixmap(sceneItem->pixmap().scaledToWidth(100));
+        	drag->setHotSpot(QPoint(drag->pixmap().width()/2, drag->pixmap().height() / 2));
+
+        	drag->exec(Qt::MoveAction);
+        }
+    }
+
+    UBThumbnailWidget::mouseMoveEvent(event);
+}
+
+void UBDocumentThumbnailWidget::dragEnterEvent(QDragEnterEvent *event)
+{
+    if (!event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
+    {
+        event->setDropAction(Qt::IgnoreAction);
+        event->ignore();
+        return;
+    }
+
+    UBThumbnailWidget::dragEnterEvent(event);
+}
+
+void UBDocumentThumbnailWidget::dragLeaveEvent(QDragLeaveEvent *event)
+{
+    Q_UNUSED(event);
+	if (mScrollTimer->isActive())
+	{
+		mScrollMagnitude = 0;
+		mScrollTimer->stop();
+	}
+    deleteDropCaret();
+    UBThumbnailWidget::dragLeaveEvent(event);
+}
+
+void UBDocumentThumbnailWidget::autoScroll()
+{
+	this->verticalScrollBar()->setValue(this->verticalScrollBar()->value() + mScrollMagnitude);
+}
+
+void UBDocumentThumbnailWidget::dragMoveEvent(QDragMoveEvent *event)
+{
+	QRect boundingFrame = frameRect();
+	//setting up automatic scrolling
+	const int SCROLL_DISTANCE = 16;
+	int bottomDist = boundingFrame.bottom() - event->pos().y(), topDist = boundingFrame.top() - event->pos().y();
+	if(qAbs(bottomDist) <= SCROLL_DISTANCE)
+	{
+		mScrollMagnitude = (SCROLL_DISTANCE - bottomDist)*4;
+		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
+	}
+	else if(qAbs(topDist) <= SCROLL_DISTANCE)
+	{
+		mScrollMagnitude = (- SCROLL_DISTANCE - topDist)*4;
+		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
+	}
+	else
+	{
+		mScrollMagnitude = 0;
+		mScrollTimer->stop();
+	}
+
+	QList<UBSceneThumbnailPixmap*> pixmapItems;
+    foreach (QGraphicsItem *item, scene()->items(mapToScene(boundingFrame)))
+    {
+        UBSceneThumbnailPixmap* sceneItem = dynamic_cast<UBSceneThumbnailPixmap*>(item);
+        if (sceneItem)
+            pixmapItems.append(sceneItem);
+    }
+
+    int minDistance = 0;
+    QGraphicsItem *underlyingItem = itemAt(event->pos());
+    mClosestDropItem = dynamic_cast<UBSceneThumbnailPixmap*>(underlyingItem);
+
+    int pageIndex = -1;
+    if(mClosestDropItem){
+    	pageIndex = UBDocumentContainer::pageFromSceneIndex(mClosestDropItem->sceneIndex());
+    	if(pageIndex == 0){
+    		 event->acceptProposedAction();
+    		 return;
+    	}
+    }
+    if (!mClosestDropItem)
+    {
+        foreach (UBSceneThumbnailPixmap *item, pixmapItems)
+        {
+            qreal scale = item->transform().m11();
+            QPointF itemCenter(
+                item->pos().x() + item->boundingRect().width() * scale / 2,
+                item->pos().y() + item->boundingRect().height() * scale / 2);
+
+            int distance = (itemCenter.toPoint() - mapToScene(event->pos()).toPoint()).manhattanLength();
+            if (!mClosestDropItem || distance < minDistance)
+            {
+                mClosestDropItem = item;
+                minDistance = distance;
+                pageIndex = UBDocumentContainer::pageFromSceneIndex(mClosestDropItem->sceneIndex());
+            }
+        }
+    }
+
+    if (mClosestDropItem && pageIndex != 0)
+    {
+        qreal scale = mClosestDropItem->transform().m11();
+
+        QPointF itemCenter(
+            mClosestDropItem->pos().x() + mClosestDropItem->boundingRect().width() * scale / 2,
+            mClosestDropItem->pos().y() + mClosestDropItem->boundingRect().height() * scale / 2);
+
+        mDropIsRight = mapToScene(event->pos()).x() > itemCenter.x();
+
+        if (!mDropCaretRectItem && selectedItems().count() < mGraphicItems.count())
+        {
+            mDropCaretRectItem = new QGraphicsRectItem(0, scene());
+            mDropCaretRectItem->setPen(QPen(Qt::darkGray));
+            mDropCaretRectItem->setBrush(QBrush(Qt::lightGray));
+        }
+
+        QRectF dropCaretRect(
+            mDropIsRight ? mClosestDropItem->pos().x() + mClosestDropItem->boundingRect().width() * scale + spacing() / 2 - 1 : mClosestDropItem->pos().x() - spacing() / 2 - 1,
+            mClosestDropItem->pos().y(),
+            3,
+            mClosestDropItem->boundingRect().height() * scale);
+
+        if (mDropCaretRectItem)
+            mDropCaretRectItem->setRect(dropCaretRect);
+    }
+
+    event->acceptProposedAction();
+}
+
+
+void UBDocumentThumbnailWidget::dropEvent(QDropEvent *event)
+{
+	if (mScrollTimer->isActive())
+	{
+		mScrollMagnitude = 0;
+		mScrollTimer->stop();
+	}
+	deleteDropCaret();
+
+    if (mClosestDropItem)
+    {
+        int targetIndex = mDropIsRight ? mGraphicItems.indexOf(mClosestDropItem) + 1 : mGraphicItems.indexOf(mClosestDropItem);
+        if(UBDocumentContainer::pageFromSceneIndex(targetIndex) == 0){
+        	event->ignore();
+        	return;
+        }
+
+        QList<UBMimeDataItem> mimeDataItems;
+        if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
+        {
+            const UBMimeData* mimeData = qobject_cast<const UBMimeData*>(event->mimeData());
+            if (mimeData)
+                mimeDataItems = mimeData->items();
+        }
+
+        if (1 == mimeDataItems.count() &&
+            (mimeDataItems.at(0).sceneIndex() == mGraphicItems.indexOf(mClosestDropItem) ||
+             targetIndex == mimeDataItems.at(0).sceneIndex() ||
+             targetIndex == mimeDataItems.at(0).sceneIndex() + 1))
+        {
+            return;
+        }
+
+        int sourceIndexOffset = 0;
+        int actualTargetIndex = targetIndex;
+        for (int i = mimeDataItems.count() - 1; i >= 0; i--)
+        {
+            UBMimeDataItem sourceItem = mimeDataItems.at(i);
+            int actualSourceIndex = sourceItem.sceneIndex();
+            if (sourceItem.sceneIndex() >= targetIndex)
+                actualSourceIndex += sourceIndexOffset;
+
+            //event->acceptProposedAction();
+            if (sourceItem.sceneIndex() < targetIndex)
+            {
+                if (actualSourceIndex != actualTargetIndex - 1)
+                    emit sceneDropped(sourceItem.documentProxy(), actualSourceIndex, actualTargetIndex - 1);
+                actualTargetIndex -= 1;
+            }
+            else
+            {
+                if (actualSourceIndex != actualTargetIndex)
+                    emit sceneDropped(sourceItem.documentProxy(), actualSourceIndex, actualTargetIndex);
+                sourceIndexOffset += 1;
+            }
+        }
+    }
+    UBThumbnailWidget::dropEvent(event);
+}
+
+void UBDocumentThumbnailWidget::deleteDropCaret()
+{
+    if (mDropCaretRectItem && scene())
+    {
+        scene()->removeItem(mDropCaretRectItem);
+        delete mDropCaretRectItem;
+        mDropCaretRectItem = 0;
+    }
+}
+
+void UBDocumentThumbnailWidget::setGraphicsItems(const QList<QGraphicsItem*>& pGraphicsItems,
+    const QList<QUrl>& pItemPaths, const QStringList pLabels,
+    const QString& pMimeType)
+{
+    deleteDropCaret();
+
+    UBThumbnailWidget::setGraphicsItems(pGraphicsItems, pItemPaths, pLabels, pMimeType);
+}
+
+void UBDocumentThumbnailWidget::setDragEnabled(bool enabled)
+{
+    mDragEnabled = enabled;
+}
+
+bool UBDocumentThumbnailWidget::dragEnabled() const
+{
+    return mDragEnabled;
+}
+
+void UBDocumentThumbnailWidget::hightlightItem(int index)
+{
+    selectItemAt(index);
+}
diff --git a/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.h b/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.h
index 4156ef6..7dd3a9a 100644
--- a/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.h
+++ b/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDOCUMENTTHUMBNAILWIDGET_H_
 #define UBDOCUMENTTHUMBNAILWIDGET_H_
 
diff --git a/Sankore-3.1/src/gui/UBDocumentToolsPalette.cpp b/Sankore-3.1/src/gui/UBDocumentToolsPalette.cpp
index 00d4fd5..18f2738 100644
--- a/Sankore-3.1/src/gui/UBDocumentToolsPalette.cpp
+++ b/Sankore-3.1/src/gui/UBDocumentToolsPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBDocumentToolsPalette.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/gui/UBDocumentToolsPalette.h b/Sankore-3.1/src/gui/UBDocumentToolsPalette.h
index 5e26621..8796f10 100644
--- a/Sankore-3.1/src/gui/UBDocumentToolsPalette.h
+++ b/Sankore-3.1/src/gui/UBDocumentToolsPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDOCUMENTTOOLSPALLETTE_H_
 #define UBDOCUMENTTOOLSPALLETTE_H_
 
diff --git a/Sankore-3.1/src/gui/UBDocumentTreeWidget.cpp b/Sankore-3.1/src/gui/UBDocumentTreeWidget.cpp
index 19b45fe..aba7a52 100644
--- a/Sankore-3.1/src/gui/UBDocumentTreeWidget.cpp
+++ b/Sankore-3.1/src/gui/UBDocumentTreeWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,447 +18,447 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBDocumentTreeWidget.h"
-
-#include "document/UBDocumentProxy.h"
-
-#include "core/UBSettings.h"
-#include "core/UBApplication.h"
-#include "core/UBPersistenceManager.h"
-#include "core/UBMimeData.h"
-#include "core/UBApplicationController.h"
-#include "core/UBDocumentManager.h"
-#include "document/UBDocumentController.h"
-
-#include "adaptors/UBThumbnailAdaptor.h"
-#include "adaptors/UBSvgSubsetAdaptor.h"
-#include "frameworks/UBFileSystemUtils.h"
-
-#include "core/memcheck.h"
-
-UBDocumentTreeWidget::UBDocumentTreeWidget(QWidget * parent)
-    : QTreeWidget(parent)
-    , mSelectedProxyTi(0)
-    , mDropTargetProxyTi(0)
-{
-    setDragDropMode(QAbstractItemView::InternalMove);
-    setAutoScroll(true);
-
-    mScrollTimer = new QTimer(this);
-    connect(UBDocumentManager::documentManager(), SIGNAL(documentUpdated(UBDocumentProxy*))
-            , this, SLOT(documentUpdated(UBDocumentProxy*)));
-
-    connect(this, SIGNAL(itemChanged(QTreeWidgetItem *, int))
-            , this,  SLOT(itemChangedValidation(QTreeWidgetItem *, int)));
-    connect(mScrollTimer, SIGNAL(timeout())
-            , this, SLOT(autoScroll()));
-}
-
-
-UBDocumentTreeWidget::~UBDocumentTreeWidget()
-{
-    // NOOP
-}
-
-
-void UBDocumentTreeWidget::itemChangedValidation(QTreeWidgetItem * item, int column)
-{
-    if (column == 0)
-    {
-        UBDocumentGroupTreeItem *group = dynamic_cast< UBDocumentGroupTreeItem *>(item);
-
-        if (group)
-        {
-            QString name = group->text(0);
-
-            for(int i = 0; i < topLevelItemCount (); i++)
-            {
-                QTreeWidgetItem *someTopLevelItem = topLevelItem(i);
-
-                if (someTopLevelItem != group &&
-                        someTopLevelItem->text(0) == name)
-                {
-                    group->setText(0, tr("%1 (copy)").arg(name));
-                }
-            }
-        }
-    }
-}
-
-
-Qt::DropActions UBDocumentTreeWidget::supportedDropActions() const
-{
-    return Qt::MoveAction | Qt::CopyAction;
-}
-
-
-void UBDocumentTreeWidget::mousePressEvent(QMouseEvent *event)
-{
-    QTreeWidgetItem* twItem = this->itemAt(event->pos());
-
-    mSelectedProxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(twItem);
-
-    QTreeWidget::mousePressEvent(event);
-}
-
-
-void UBDocumentTreeWidget::dragEnterEvent(QDragEnterEvent *event)
-{
-    event->acceptProposedAction();
-}
-
-
-void UBDocumentTreeWidget::dragLeaveEvent(QDragLeaveEvent *event)
-{
-    Q_UNUSED(event);
-
-    if (mScrollTimer->isActive())
-	{
-		mScrollMagnitude = 0;
-		mScrollTimer->stop();
-	}
-
-    if (mDropTargetProxyTi)
-    {
-        mDropTargetProxyTi->setBackground(0, mBackground);
-        mDropTargetProxyTi = 0;
-    }
-}
-
-
-void UBDocumentTreeWidget::dragMoveEvent(QDragMoveEvent *event)
-{
-	QRect boundingFrame = frameRect();
-	//setting up automatic scrolling
-	const int SCROLL_DISTANCE = 4;
-	int bottomDist = boundingFrame.bottom() - event->pos().y(), topDist = boundingFrame.top() - event->pos().y();
-	if(qAbs(bottomDist) <= SCROLL_DISTANCE)
-	{
-		mScrollMagnitude = (SCROLL_DISTANCE - bottomDist)*4;
-		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
-	}
-	else if(qAbs(topDist) <= SCROLL_DISTANCE)
-	{
-		mScrollMagnitude = (- SCROLL_DISTANCE - topDist)*4;
-		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
-	}
-	else
-	{
-		mScrollMagnitude = 0;
-		mScrollTimer->stop();
-	}
-
-
-    QTreeWidgetItem* underlyingItem = this->itemAt(event->pos());
-
-    if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
-    {
-        UBDocumentProxyTreeItem *targetProxyTreeItem = dynamic_cast<UBDocumentProxyTreeItem*>(underlyingItem);
-        if (targetProxyTreeItem && targetProxyTreeItem != mSelectedProxyTi)
-        {
-            event->setDropAction(Qt::CopyAction);
-            event->accept();
-        }
-        else
-        {
-            event->ignore();
-        }
-    }
-    else
-    {
-        UBDocumentGroupTreeItem *groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(underlyingItem);
-
-        if (groupItem && mSelectedProxyTi && groupItem != mSelectedProxyTi->parent())
-            event->acceptProposedAction();
-        else
-            event->ignore();
-    }
-
-    if (event->isAccepted())
-    {
-        if (mDropTargetProxyTi)
-        {
-            if (underlyingItem != mDropTargetProxyTi)
-            {
-                mBackground = underlyingItem->background(0);
-                mDropTargetProxyTi->setBackground(0, mBackground);
-                mDropTargetProxyTi = underlyingItem;
-                mDropTargetProxyTi->setBackground(0, QBrush(QColor("#6682b5")));
-            }
-        }
-        else
-        {
-            mBackground = underlyingItem->background(0);
-            mDropTargetProxyTi = underlyingItem;
-            mDropTargetProxyTi->setBackground(0, QBrush(QColor("#6682b5")));
-        }
-    }
-    else if (mDropTargetProxyTi)
-    {
-        mDropTargetProxyTi->setBackground(0, mBackground);
-        mDropTargetProxyTi = 0;
-    }
-}
-
-
-void UBDocumentTreeWidget::focusInEvent(QFocusEvent *event)
-{
-    Q_UNUSED(event);
-
-    // Tolik
-    //itemSelectionChanged();
-
-    QTreeWidget::focusInEvent(event);
-}
-
-
-void UBDocumentTreeWidget::dropEvent(QDropEvent *event)
-{
-    if (mDropTargetProxyTi)
-    {
-        mDropTargetProxyTi->setBackground(0, mBackground);
-        mDropTargetProxyTi = 0;
-    }
-
-    QTreeWidgetItem* underlyingItem = this->itemAt(event->pos());
-
-    UBDocumentGroupTreeItem *groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(underlyingItem);
-
-    if (groupItem && mSelectedProxyTi && mSelectedProxyTi->proxy())
-    {
-        UBDocumentGroupTreeItem *sourceGroupItem = dynamic_cast<UBDocumentGroupTreeItem*>(mSelectedProxyTi->parent());
-        bool isTrashItem = sourceGroupItem && sourceGroupItem->isTrashFolder();
-        if ((isTrashItem && !groupItem->isTrashFolder()) ||
-            (!isTrashItem && mSelectedProxyTi->proxy()->groupName() != groupItem->groupName()))
-        {
-            QString groupName;
-            if (groupItem->isTrashFolder())
-            {
-                QString oldGroupName = mSelectedProxyTi->proxy()->metaData(UBSettings::documentGroupName).toString();
-                groupName = UBSettings::trashedDocumentGroupNamePrefix + oldGroupName;
-            }
-            else
-            {
-                if (groupItem->groupName() == UBApplication::app()->documentController->defaultDocumentGroupName())
-                    groupName = "";
-                else
-                    groupName = groupItem->groupName();
-            }
-            mSelectedProxyTi->proxy()->setMetaData(UBSettings::documentGroupName, groupName);
-            UBPersistenceManager::persistenceManager()->persistDocumentMetadata(mSelectedProxyTi->proxy());
-
-            mSelectedProxyTi->parent()->removeChild(mSelectedProxyTi);
-
-            int i = 0;
-            for (i = 0; i < groupItem->childCount(); i++)
-            {
-                QTreeWidgetItem *ti = groupItem->child(i);
-                UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>(ti);
-                if (pi)
-                {
-                    if (mSelectedProxyTi->proxy()->metaData(UBSettings::documentUpdatedAt).toString() >= pi->proxy()->metaData(UBSettings::documentUpdatedAt).toString())
-                    {
-                        break;
-                    }
-                }
-            }
-            groupItem->insertChild(i, mSelectedProxyTi);
-
-            if (isTrashItem)
-                mSelectedProxyTi->setFlags(mSelectedProxyTi->flags() | Qt::ItemIsEditable);
-
-            if (groupItem->isTrashFolder())
-                mSelectedProxyTi->setFlags(mSelectedProxyTi->flags() ^ Qt::ItemIsEditable);
-
-            //clearSelection();
-            expandItem(groupItem);
-            scrollToItem(mSelectedProxyTi);
-
-            // disabled, as those 2 calls are buggy on windows, the item disappears if we selected them
-            //
-            setCurrentItem(mSelectedProxyTi);
-            mSelectedProxyTi->setSelected(true);
-
-            event->setDropAction(Qt::IgnoreAction);
-            event->accept();
-        }
-    }
-    else
-    {
-        QTreeWidgetItem* underlyingTreeItem = this->itemAt(event->pos());
-
-        UBDocumentProxyTreeItem *targetProxyTreeItem = dynamic_cast<UBDocumentProxyTreeItem*>(underlyingTreeItem);
-        if (targetProxyTreeItem && targetProxyTreeItem != mSelectedProxyTi)
-        {
-            if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
-            {
-                event->setDropAction(Qt::CopyAction);
-                event->accept();
-
-                const UBMimeData *mimeData = qobject_cast <const UBMimeData*>(event->mimeData());
-
-                if (mimeData && mimeData->items().size() > 0)
-                {
-                        int count = 0;
-                        int total = mimeData->items().size();
-
-                        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-
-                    foreach (UBMimeDataItem sourceItem, mimeData->items())
-                    {
-                        count++;
-
-                        UBApplication::applicationController->showMessage(tr("Copying page %1/%2").arg(count).arg(total), true);
-
-                        // TODO UB 4.x Move following code to some controller class
-                        UBGraphicsScene *scene = UBPersistenceManager::persistenceManager()->loadDocumentScene(sourceItem.documentProxy(), sourceItem.sceneIndex());
-                        if (scene)
-                        {
-                            UBGraphicsScene* sceneClone = scene->sceneDeepCopy();
-
-                            UBDocumentProxy *targetDocProxy = targetProxyTreeItem->proxy();
-
-                            foreach (QUrl relativeFile, scene->relativeDependencies())
-                            {
-                                QString source = scene->document()->persistencePath() + "/" + relativeFile.toString();
-                                QString target = targetDocProxy->persistencePath() + "/" + relativeFile.toString();
-
-                                QFileInfo fi(target);
-                                QDir d = fi.dir();
-
-                                d.mkpath(d.absolutePath());
-                                QFile::copy(source, target);
-                            }
-
-                            UBPersistenceManager::persistenceManager()->insertDocumentSceneAt(targetDocProxy, sceneClone, targetDocProxy->pageCount());
-
-                            //due to incorrect generation of thumbnails of invisible scene I've used direct copying of thumbnail files
-                            //it's not universal and good way but it's faster
-                            QString from = sourceItem.documentProxy()->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", sourceItem.sceneIndex());
-                            QString to  = targetDocProxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", targetDocProxy->pageCount());
-                            QFile::remove(to);
-                            QFile::copy(from, to);
-                          }
-                    }
-
-                    QApplication::restoreOverrideCursor();
-
-                    UBApplication::applicationController->showMessage(tr("%1 pages copied", "", total).arg(total), false);
-                }
-            }
-            else
-            {
-                event->setDropAction(Qt::IgnoreAction);
-                event->ignore();
-            }
-        }
-    }
-}
-
-
-void UBDocumentTreeWidget::documentUpdated(UBDocumentProxy *pDocument)
-{
-    UBDocumentProxyTreeItem *treeItem = UBApplication::documentController->findDocument(pDocument);
-    if (treeItem)
-    {
-        QTreeWidgetItem * parent = treeItem->parent();
-
-        if (parent)
-        {
-            for (int i = 0; i < parent->indexOfChild(treeItem); i++)
-            {
-                QTreeWidgetItem *ti = parent->child(i);
-                UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>(ti);
-                if (pi)
-                {
-                    if (pDocument->metaData(UBSettings::documentUpdatedAt).toString() >= pi->proxy()->metaData(UBSettings::documentUpdatedAt).toString())
-                    {
-                        bool selected = treeItem->isSelected();
-                        parent->removeChild(treeItem);
-                        parent->insertChild(i, treeItem);
-                        for (int j = 0; j < selectedItems().count(); j++)
-                            selectedItems().at(j)->setSelected(false);
-                        if (selected)
-                            treeItem->setSelected(true);
-                        break;
-                    }
-                }
-            }
-        }
-    }
-}
-
-
-UBDocumentProxyTreeItem::UBDocumentProxyTreeItem(QTreeWidgetItem * parent, UBDocumentProxy* proxy, bool isEditable)
-    : QTreeWidgetItem()
-    , mProxy(proxy)
-{
-    Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled;
-
-    if (isEditable)
-        flags |= Qt::ItemIsEditable;
-
-    setFlags(flags);
-
-    int i = 0;
-    for (i = 0; i < parent->childCount(); i++)
-    {
-        QTreeWidgetItem *ti = parent->child(i);
-        UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>(ti);
-        if (pi)
-        {
-            if (proxy->metaData(UBSettings::documentUpdatedAt).toString() >= pi->proxy()->metaData(UBSettings::documentUpdatedAt).toString())
-            {
-                break;
-            }
-        }
-    }
-    parent->insertChild(i, this);
-}
-
-
-UBDocumentGroupTreeItem::UBDocumentGroupTreeItem(QTreeWidgetItem *parent, bool isEditable)
-    : QTreeWidgetItem(parent)
-{
-    Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled;
-    if (isEditable)
-        flags |= Qt::ItemIsEditable;
-    setFlags(flags);
-}
-
-
-UBDocumentGroupTreeItem::~UBDocumentGroupTreeItem()
-{
-    // NOOP
-}
-
-
-void UBDocumentGroupTreeItem::setGroupName(const QString& groupName)
-{
-    setText(0, groupName);
-}
-
-
-QString UBDocumentGroupTreeItem::groupName() const
-{
-    return text(0);
-}
-
-
-bool UBDocumentGroupTreeItem::isTrashFolder() const
-{
-    return (0 == (flags() & Qt::ItemIsEditable)) &&  UBApplication::app()->documentController && (groupName() == UBApplication::app()->documentController->documentTrashGroupName());
-}
-
-bool UBDocumentGroupTreeItem::isDefaultFolder() const
-{
-    return (0 == (flags() & Qt::ItemIsEditable)) && UBApplication::app()->documentController && (groupName() == UBApplication::app()->documentController->defaultDocumentGroupName());
-}
-
-
-void UBDocumentTreeWidget::autoScroll()
-{
-	this->verticalScrollBar()->setValue(this->verticalScrollBar()->value() + mScrollMagnitude);
-}
+
+
+
+#include "UBDocumentTreeWidget.h"
+
+#include "document/UBDocumentProxy.h"
+
+#include "core/UBSettings.h"
+#include "core/UBApplication.h"
+#include "core/UBPersistenceManager.h"
+#include "core/UBMimeData.h"
+#include "core/UBApplicationController.h"
+#include "core/UBDocumentManager.h"
+#include "document/UBDocumentController.h"
+
+#include "adaptors/UBThumbnailAdaptor.h"
+#include "adaptors/UBSvgSubsetAdaptor.h"
+#include "frameworks/UBFileSystemUtils.h"
+
+#include "core/memcheck.h"
+
+UBDocumentTreeWidget::UBDocumentTreeWidget(QWidget * parent)
+    : QTreeWidget(parent)
+    , mSelectedProxyTi(0)
+    , mDropTargetProxyTi(0)
+{
+    setDragDropMode(QAbstractItemView::InternalMove);
+    setAutoScroll(true);
+
+    mScrollTimer = new QTimer(this);
+    connect(UBDocumentManager::documentManager(), SIGNAL(documentUpdated(UBDocumentProxy*))
+            , this, SLOT(documentUpdated(UBDocumentProxy*)));
+
+    connect(this, SIGNAL(itemChanged(QTreeWidgetItem *, int))
+            , this,  SLOT(itemChangedValidation(QTreeWidgetItem *, int)));
+    connect(mScrollTimer, SIGNAL(timeout())
+            , this, SLOT(autoScroll()));
+}
+
+
+UBDocumentTreeWidget::~UBDocumentTreeWidget()
+{
+    // NOOP
+}
+
+
+void UBDocumentTreeWidget::itemChangedValidation(QTreeWidgetItem * item, int column)
+{
+    if (column == 0)
+    {
+        UBDocumentGroupTreeItem *group = dynamic_cast< UBDocumentGroupTreeItem *>(item);
+
+        if (group)
+        {
+            QString name = group->text(0);
+
+            for(int i = 0; i < topLevelItemCount (); i++)
+            {
+                QTreeWidgetItem *someTopLevelItem = topLevelItem(i);
+
+                if (someTopLevelItem != group &&
+                        someTopLevelItem->text(0) == name)
+                {
+                    group->setText(0, tr("%1 (copy)").arg(name));
+                }
+            }
+        }
+    }
+}
+
+
+Qt::DropActions UBDocumentTreeWidget::supportedDropActions() const
+{
+    return Qt::MoveAction | Qt::CopyAction;
+}
+
+
+void UBDocumentTreeWidget::mousePressEvent(QMouseEvent *event)
+{
+    QTreeWidgetItem* twItem = this->itemAt(event->pos());
+
+    mSelectedProxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(twItem);
+
+    QTreeWidget::mousePressEvent(event);
+}
+
+
+void UBDocumentTreeWidget::dragEnterEvent(QDragEnterEvent *event)
+{
+    event->acceptProposedAction();
+}
+
+
+void UBDocumentTreeWidget::dragLeaveEvent(QDragLeaveEvent *event)
+{
+    Q_UNUSED(event);
+
+    if (mScrollTimer->isActive())
+    {
+        mScrollMagnitude = 0;
+        mScrollTimer->stop();
+    }
+
+    if (mDropTargetProxyTi)
+    {
+        mDropTargetProxyTi->setBackground(0, mBackground);
+        mDropTargetProxyTi = 0;
+    }
+}
+
+
+void UBDocumentTreeWidget::dragMoveEvent(QDragMoveEvent *event)
+{
+    QRect boundingFrame = frameRect();
+    //setting up automatic scrolling
+    const int SCROLL_DISTANCE = 4;
+    int bottomDist = boundingFrame.bottom() - event->pos().y(), topDist = boundingFrame.top() - event->pos().y();
+    if(qAbs(bottomDist) <= SCROLL_DISTANCE)
+    {
+        mScrollMagnitude = (SCROLL_DISTANCE - bottomDist)*4;
+        if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
+    }
+    else if(qAbs(topDist) <= SCROLL_DISTANCE)
+    {
+        mScrollMagnitude = (- SCROLL_DISTANCE - topDist)*4;
+        if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
+    }
+    else
+    {
+        mScrollMagnitude = 0;
+        mScrollTimer->stop();
+    }
+
+
+    QTreeWidgetItem* underlyingItem = this->itemAt(event->pos());
+
+    if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
+    {
+        UBDocumentProxyTreeItem *targetProxyTreeItem = dynamic_cast<UBDocumentProxyTreeItem*>(underlyingItem);
+        if (targetProxyTreeItem && targetProxyTreeItem != mSelectedProxyTi)
+        {
+            event->setDropAction(Qt::CopyAction);
+            event->accept();
+        }
+        else
+        {
+            event->ignore();
+        }
+    }
+    else
+    {
+        UBDocumentGroupTreeItem *groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(underlyingItem);
+
+        if (groupItem && mSelectedProxyTi && groupItem != mSelectedProxyTi->parent())
+            event->acceptProposedAction();
+        else
+            event->ignore();
+    }
+
+    if (event->isAccepted())
+    {
+        if (mDropTargetProxyTi)
+        {
+            if (underlyingItem != mDropTargetProxyTi)
+            {
+                mBackground = underlyingItem->background(0);
+                mDropTargetProxyTi->setBackground(0, mBackground);
+                mDropTargetProxyTi = underlyingItem;
+                mDropTargetProxyTi->setBackground(0, QBrush(QColor("#6682b5")));
+            }
+        }
+        else
+        {
+            mBackground = underlyingItem->background(0);
+            mDropTargetProxyTi = underlyingItem;
+            mDropTargetProxyTi->setBackground(0, QBrush(QColor("#6682b5")));
+        }
+    }
+    else if (mDropTargetProxyTi)
+    {
+        mDropTargetProxyTi->setBackground(0, mBackground);
+        mDropTargetProxyTi = 0;
+    }
+}
+
+
+void UBDocumentTreeWidget::focusInEvent(QFocusEvent *event)
+{
+    Q_UNUSED(event);
+
+    // Tolik
+    //itemSelectionChanged();
+
+    QTreeWidget::focusInEvent(event);
+}
+
+
+void UBDocumentTreeWidget::dropEvent(QDropEvent *event)
+{
+    if (mDropTargetProxyTi)
+    {
+        mDropTargetProxyTi->setBackground(0, mBackground);
+        mDropTargetProxyTi = 0;
+    }
+
+    QTreeWidgetItem* underlyingItem = this->itemAt(event->pos());
+
+    UBDocumentGroupTreeItem *groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(underlyingItem);
+
+    if (groupItem && mSelectedProxyTi && mSelectedProxyTi->proxy())
+    {
+        UBDocumentGroupTreeItem *sourceGroupItem = dynamic_cast<UBDocumentGroupTreeItem*>(mSelectedProxyTi->parent());
+        bool isTrashItem = sourceGroupItem && sourceGroupItem->isTrashFolder();
+        if ((isTrashItem && !groupItem->isTrashFolder()) ||
+            (!isTrashItem && mSelectedProxyTi->proxy()->groupName() != groupItem->groupName()))
+        {
+            QString groupName;
+            if (groupItem->isTrashFolder())
+            {
+                QString oldGroupName = mSelectedProxyTi->proxy()->metaData(UBSettings::documentGroupName).toString();
+                groupName = UBSettings::trashedDocumentGroupNamePrefix + oldGroupName;
+            }
+            else
+            {
+                if (groupItem->groupName() == UBApplication::app()->documentController->defaultDocumentGroupName())
+                    groupName = "";
+                else
+                    groupName = groupItem->groupName();
+            }
+            mSelectedProxyTi->proxy()->setMetaData(UBSettings::documentGroupName, groupName);
+            UBPersistenceManager::persistenceManager()->persistDocumentMetadata(mSelectedProxyTi->proxy());
+
+            mSelectedProxyTi->parent()->removeChild(mSelectedProxyTi);
+
+            int i = 0;
+            for (i = 0; i < groupItem->childCount(); i++)
+            {
+                QTreeWidgetItem *ti = groupItem->child(i);
+                UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>(ti);
+                if (pi)
+                {
+                    if (mSelectedProxyTi->proxy()->metaData(UBSettings::documentUpdatedAt).toString() >= pi->proxy()->metaData(UBSettings::documentUpdatedAt).toString())
+                    {
+                        break;
+                    }
+                }
+            }
+            groupItem->insertChild(i, mSelectedProxyTi);
+
+            if (isTrashItem)
+                mSelectedProxyTi->setFlags(mSelectedProxyTi->flags() | Qt::ItemIsEditable);
+
+            if (groupItem->isTrashFolder())
+                mSelectedProxyTi->setFlags(mSelectedProxyTi->flags() ^ Qt::ItemIsEditable);
+
+            //clearSelection();
+            expandItem(groupItem);
+            scrollToItem(mSelectedProxyTi);
+
+            // disabled, as those 2 calls are buggy on windows, the item disappears if we selected them
+            //
+            setCurrentItem(mSelectedProxyTi);
+            mSelectedProxyTi->setSelected(true);
+
+            event->setDropAction(Qt::IgnoreAction);
+            event->accept();
+        }
+    }
+    else
+    {
+        QTreeWidgetItem* underlyingTreeItem = this->itemAt(event->pos());
+
+        UBDocumentProxyTreeItem *targetProxyTreeItem = dynamic_cast<UBDocumentProxyTreeItem*>(underlyingTreeItem);
+        if (targetProxyTreeItem && targetProxyTreeItem != mSelectedProxyTi)
+        {
+            if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
+            {
+                event->setDropAction(Qt::CopyAction);
+                event->accept();
+
+                const UBMimeData *mimeData = qobject_cast <const UBMimeData*>(event->mimeData());
+
+                if (mimeData && mimeData->items().size() > 0)
+                {
+                        int count = 0;
+                        int total = mimeData->items().size();
+
+                        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+                    foreach (UBMimeDataItem sourceItem, mimeData->items())
+                    {
+                        count++;
+
+                        UBApplication::applicationController->showMessage(tr("Copying page %1/%2").arg(count).arg(total), true);
+
+                        // TODO UB 4.x Move following code to some controller class
+                        UBGraphicsScene *scene = UBPersistenceManager::persistenceManager()->loadDocumentScene(sourceItem.documentProxy(), sourceItem.sceneIndex());
+                        if (scene)
+                        {
+                            UBGraphicsScene* sceneClone = scene->sceneDeepCopy();
+
+                            UBDocumentProxy *targetDocProxy = targetProxyTreeItem->proxy();
+
+                            foreach (QUrl relativeFile, scene->relativeDependencies())
+                            {
+                                QString source = scene->document()->persistencePath() + "/" + relativeFile.toString();
+                                QString target = targetDocProxy->persistencePath() + "/" + relativeFile.toString();
+
+                                QFileInfo fi(target);
+                                QDir d = fi.dir();
+
+                                d.mkpath(d.absolutePath());
+                                QFile::copy(source, target);
+                            }
+
+                            UBPersistenceManager::persistenceManager()->insertDocumentSceneAt(targetDocProxy, sceneClone, targetDocProxy->pageCount());
+
+                            //due to incorrect generation of thumbnails of invisible scene I've used direct copying of thumbnail files
+                            //it's not universal and good way but it's faster
+                            QString from = sourceItem.documentProxy()->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", sourceItem.sceneIndex());
+                            QString to  = targetDocProxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", targetDocProxy->pageCount());
+                            QFile::remove(to);
+                            QFile::copy(from, to);
+                          }
+                    }
+
+                    QApplication::restoreOverrideCursor();
+
+                    UBApplication::applicationController->showMessage(tr("%1 pages copied", "", total).arg(total), false);
+                }
+            }
+            else
+            {
+                event->setDropAction(Qt::IgnoreAction);
+                event->ignore();
+            }
+        }
+    }
+}
+
+
+void UBDocumentTreeWidget::documentUpdated(UBDocumentProxy */*pDocument*/)
+{
+//    UBDocumentProxyTreeItem *treeItem = UBApplication::documentController->findDocument(pDocument);
+//    if (treeItem)
+//    {
+//        QTreeWidgetItem * parent = treeItem->parent();
+
+//        if (parent)
+//        {
+//            for (int i = 0; i < parent->indexOfChild(treeItem); i++)
+//            {
+//                QTreeWidgetItem *ti = parent->child(i);
+//                UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>(ti);
+//                if (pi)
+//                {
+//                    if (pDocument->metaData(UBSettings::documentUpdatedAt).toString() >= pi->proxy()->metaData(UBSettings::documentUpdatedAt).toString())
+//                    {
+//                        bool selected = treeItem->isSelected();
+//                        parent->removeChild(treeItem);
+//                        parent->insertChild(i, treeItem);
+//                        for (int j = 0; j < selectedItems().count(); j++)
+//                            selectedItems().at(j)->setSelected(false);
+//                        if (selected)
+//                            treeItem->setSelected(true);
+//                        break;
+//                    }
+//                }
+//            }
+//        }
+//    }
+}
+
+UBDocumentProxyTreeItem::UBDocumentProxyTreeItem(QTreeWidgetItem * parent, UBDocumentProxy* proxy, bool isEditable)
+    : QTreeWidgetItem()
+    , mProxy(proxy)
+{
+    Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled;
+
+    if (isEditable)
+        flags |= Qt::ItemIsEditable;
+
+    setFlags(flags);
+
+    int i = 0;
+    for (i = 0; i < parent->childCount(); i++)
+    {
+        QTreeWidgetItem *ti = parent->child(i);
+        UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>(ti);
+        if (pi)
+        {
+            if (proxy->metaData(UBSettings::documentUpdatedAt).toString() >= pi->proxy()->metaData(UBSettings::documentUpdatedAt).toString())
+            {
+                break;
+            }
+        }
+    }
+    parent->insertChild(i, this);
+}
+
+
+UBDocumentGroupTreeItem::UBDocumentGroupTreeItem(QTreeWidgetItem *parent, bool isEditable)
+    : QTreeWidgetItem(parent)
+{
+    Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled;
+    if (isEditable)
+        flags |= Qt::ItemIsEditable;
+    setFlags(flags);
+}
+
+
+UBDocumentGroupTreeItem::~UBDocumentGroupTreeItem()
+{
+    // NOOP
+}
+
+
+void UBDocumentGroupTreeItem::setGroupName(const QString& groupName)
+{
+    setText(0, groupName);
+}
+
+
+QString UBDocumentGroupTreeItem::groupName() const
+{
+    return text(0);
+}
+
+
+bool UBDocumentGroupTreeItem::isTrashFolder() const
+{
+    return (0 == (flags() & Qt::ItemIsEditable)) &&  UBApplication::app()->documentController && (groupName() == UBApplication::app()->documentController->documentTrashGroupName());
+}
+
+bool UBDocumentGroupTreeItem::isDefaultFolder() const
+{
+    return (0 == (flags() & Qt::ItemIsEditable)) && UBApplication::app()->documentController && (groupName() == UBApplication::app()->documentController->defaultDocumentGroupName());
+}
+
+
+void UBDocumentTreeWidget::autoScroll()
+{
+    this->verticalScrollBar()->setValue(this->verticalScrollBar()->value() + mScrollMagnitude);
+}
diff --git a/Sankore-3.1/src/gui/UBDocumentTreeWidget.h b/Sankore-3.1/src/gui/UBDocumentTreeWidget.h
index 5d977ac..43df862 100644
--- a/Sankore-3.1/src/gui/UBDocumentTreeWidget.h
+++ b/Sankore-3.1/src/gui/UBDocumentTreeWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDOCUMENTTREEWIDGET_H_
 #define UBDOCUMENTTREEWIDGET_H_
 
diff --git a/Sankore-3.1/src/gui/UBDownloadWidget.cpp b/Sankore-3.1/src/gui/UBDownloadWidget.cpp
index 5e9333d..d097c48 100644
--- a/Sankore-3.1/src/gui/UBDownloadWidget.cpp
+++ b/Sankore-3.1/src/gui/UBDownloadWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QDebug>
 #include <QHeaderView>
 #include <QStyleOptionProgressBarV2>
diff --git a/Sankore-3.1/src/gui/UBDownloadWidget.h b/Sankore-3.1/src/gui/UBDownloadWidget.h
index 063d59d..6f9a53f 100644
--- a/Sankore-3.1/src/gui/UBDownloadWidget.h
+++ b/Sankore-3.1/src/gui/UBDownloadWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBDOWNLOADWIDGET_H
 #define UBDOWNLOADWIDGET_H
 
diff --git a/Sankore-3.1/src/gui/UBFavoriteToolPalette.cpp b/Sankore-3.1/src/gui/UBFavoriteToolPalette.cpp
index 98d1581..114fba3 100644
--- a/Sankore-3.1/src/gui/UBFavoriteToolPalette.cpp
+++ b/Sankore-3.1/src/gui/UBFavoriteToolPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBFavoriteToolPalette.h"
 
 #include "core/UBSettings.h"
diff --git a/Sankore-3.1/src/gui/UBFavoriteToolPalette.h b/Sankore-3.1/src/gui/UBFavoriteToolPalette.h
index 177590d..8c6341a 100644
--- a/Sankore-3.1/src/gui/UBFavoriteToolPalette.h
+++ b/Sankore-3.1/src/gui/UBFavoriteToolPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBFAVORITETOOLPALETTE_H_
 #define UBFAVORITETOOLPALETTE_H_
 
diff --git a/Sankore-3.1/src/gui/UBFeaturesActionBar.cpp b/Sankore-3.1/src/gui/UBFeaturesActionBar.cpp
index 2d4a850..20cd601 100644
--- a/Sankore-3.1/src/gui/UBFeaturesActionBar.cpp
+++ b/Sankore-3.1/src/gui/UBFeaturesActionBar.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBFeaturesActionBar.h"
 #include "core/memcheck.h"
 #include "gui/UBFeaturesWidget.h"
@@ -124,7 +125,13 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid
     mLayout->addWidget(mpRemoveFavoriteBtn);
 	setCurrentState( IN_ROOT );
 	mpDeleteBtn->setAcceptDrops(true);
-	setAcceptDrops( true );
+    mpFavoriteBtn->setAcceptDrops(true);
+    mpRemoveFavoriteBtn->setAcceptDrops(true);
+    setAcceptDrops( false );
+
+    mpDeleteBtn->installEventFilter(this);
+    mpFavoriteBtn->installEventFilter(this);
+    mpRemoveFavoriteBtn->installEventFilter(this);
 }
 
 void UBFeaturesActionBar::setCurrentState( UBFeaturesActionBarState state )
@@ -145,9 +152,6 @@ void UBFeaturesActionBar::setButtons()
         mpCloseBtn->hide();
         mpRemoveFavoriteBtn->hide();
         mpNewFolderBtn->show();
-		mpNewFolderBtn->setEnabled(true);
-		mpDeleteBtn->setEnabled(true);
-//        mpRescanModelBtn->show();
 		break;
     case IN_ROOT:
         mpFavoriteBtn->show();
@@ -241,14 +245,9 @@ void UBFeaturesActionBar::unlockIt()
     setEnabled(true);
 }
 
-void UBFeaturesActionBar::dragEnterEvent( QDragEnterEvent *event )
+void UBFeaturesActionBar::allowDeleteButton(bool pAllow)
 {
-    const UBFeaturesMimeData *fMimeData = qobject_cast<const UBFeaturesMimeData*>(event->mimeData());
-    if (fMimeData) {
-        event->acceptProposedAction();
-    } else {
-        event->ignore();
-    }
+    mpDeleteBtn->setEnabled(pAllow);
 }
 
 void UBFeaturesActionBar::dropEvent(QDropEvent *event)
@@ -271,10 +270,6 @@ void UBFeaturesActionBar::dropEvent(QDropEvent *event)
                 return;
             }
         }
-        event->setDropAction(Qt::MoveAction);
-		event->accept();
-
-        emit deleteElements(fMimeData);
 
     } else if (dest == mpFavoriteBtn) {
         event->setDropAction( Qt::CopyAction);
@@ -283,13 +278,69 @@ void UBFeaturesActionBar::dropEvent(QDropEvent *event)
         emit addToFavorite(fMimeData);
 
     } else if (dest == mpRemoveFavoriteBtn) {
-		event->setDropAction( Qt::MoveAction );
+        event->setDropAction(Qt::MoveAction);
 		event->accept();
 
         emit removeFromFavorite(fMimeData);
 	}
 }
 
+bool UBFeaturesActionBar::eventFilter(QObject *obj, QEvent *event)
+{
+    if (event->type() == QEvent::DragEnter) {
+        QDragEnterEvent *enterEvent = static_cast<QDragEnterEvent*>(event);
+        const UBFeaturesMimeData *fMimeData = qobject_cast<const UBFeaturesMimeData*>(enterEvent->mimeData());
+        if (fMimeData) {
+
+            if (obj == mpDeleteBtn) {
+                foreach (UBFeature curFeature, fMimeData->features()) {
+                    if (!curFeature.isDeletable()) {
+                        event->ignore();
+                        return true;
+                    }
+                }
+                event->accept();
+
+            } else if (obj == mpFavoriteBtn) {
+                foreach (UBFeature curFeature, fMimeData->features()) {
+                    if (curFeature.getType() == FEATURE_FOLDER) {
+                        event->ignore();
+                        return true;
+                    }
+                }
+                event->accept();
+
+            } else if (obj == mpRemoveFavoriteBtn) {
+                event->accept();
+                return true;
+            }
+        }
+    } else if (event->type() == QEvent::Drop) {
+        QDropEvent *dropEvent = static_cast<QDropEvent*>(event);
+        const UBFeaturesMimeData *fMimeData = qobject_cast<const UBFeaturesMimeData*>(dropEvent->mimeData());
+        if (fMimeData) {
+
+            if (obj == mpDeleteBtn) {
+                dropEvent->setDropAction(Qt::MoveAction);
+                event->accept();
+                emit deleteElements(fMimeData);
+
+            } else if (obj == mpFavoriteBtn) {
+                dropEvent->setDropAction(Qt::CopyAction);
+                event->accept();
+                emit addToFavorite(fMimeData);
+
+            } else if (obj == mpRemoveFavoriteBtn) {
+                dropEvent->setDropAction(Qt::MoveAction);
+                event->accept();
+
+                emit removeFromFavorite(fMimeData);
+            }
+        }
+    }
+    return QWidget::eventFilter(obj, event);
+}
+
 UBFeaturesActionBar::~UBFeaturesActionBar()
 {
 }
diff --git a/Sankore-3.1/src/gui/UBFeaturesActionBar.h b/Sankore-3.1/src/gui/UBFeaturesActionBar.h
index 9166726..68f3c5d 100644
--- a/Sankore-3.1/src/gui/UBFeaturesActionBar.h
+++ b/Sankore-3.1/src/gui/UBFeaturesActionBar.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBFEATURESACTIONBAR_H
 #define UBFEATURESACTIONBAR_H
 
@@ -59,6 +60,7 @@ enum UBFeaturesActionBarState
 class UBFeaturesActionBar : public QWidget
 {
 	Q_OBJECT
+
 public:
 	UBFeaturesActionBar(UBFeaturesController *controller, QWidget* parent=0, const char* name="UBFeaturesActionBar");
     ~UBFeaturesActionBar();
@@ -86,10 +88,12 @@ private slots:
     void onActionRescanModel();
     void lockIt();
     void unlockIt();
+    void allowNewFolderBtn(bool pAllow) {mpNewFolderBtn->setEnabled(pAllow);}
+    void allowDeleteButton(bool pAllow);
 
 protected:
-    void dragEnterEvent( QDragEnterEvent *event );
 	void dropEvent( QDropEvent *event );
+    bool eventFilter(QObject *, QEvent *);
 
 private:
 	void setButtons();
diff --git a/Sankore-3.1/src/gui/UBFeaturesWidget.cpp b/Sankore-3.1/src/gui/UBFeaturesWidget.cpp
index 1e5e51e..437453b 100644
--- a/Sankore-3.1/src/gui/UBFeaturesWidget.cpp
+++ b/Sankore-3.1/src/gui/UBFeaturesWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QDomDocument>
 #include <QWebView>
 
@@ -30,6 +31,7 @@
 #include "core/UBDownloadManager.h"
 #include "globals/UBGlobals.h"
 #include "board/UBBoardController.h"
+#include "web/UBWebController.h"
 
 const char *UBFeaturesWidget::objNamePathList = "PathList";
 const char *UBFeaturesWidget::objNameFeatureList = "FeatureList";
@@ -49,8 +51,6 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name)
 
     SET_STYLE_SHEET();
 
-    mIconToLeft = QPixmap(":images/library_open.png");
-    mIconToRight = QPixmap(":images/library_close.png");
     setAcceptDrops(true);
 
     //Main UBFeature functionality
@@ -75,8 +75,12 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name)
     layout->addWidget(centralWidget);
     layout->addWidget(mActionBar);
 
-    connect(centralWidget->listView(), SIGNAL(clicked(const QModelIndex &)), this, SLOT(currentSelected(const QModelIndex &)));
+    connect(centralWidget->listView(), SIGNAL(clicked(QModelIndex)), this, SLOT(currentSelected(QModelIndex)));
+    connect(centralWidget->listView()->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection))
+            , this, SLOT(processViewSelectionChanged(QItemSelection,QItemSelection)));
     connect(this, SIGNAL(sendFileNameList(QStringList)), centralWidget, SIGNAL(sendFileNameList(QStringList)));
+    connect(this, SIGNAL(allowNewFolderButton(bool)), mActionBar, SLOT(allowNewFolderBtn(bool)));
+    connect(this, SIGNAL(allowDeleteButton(bool)), mActionBar, SLOT(allowDeleteButton(bool)));
     connect(mActionBar, SIGNAL(searchElement(const QString &)), this, SLOT( searchStarted(const QString &)));
     connect(mActionBar, SIGNAL(newFolderToCreate()), this, SLOT(createNewFolder()));
     connect(mActionBar, SIGNAL(deleteElements(const UBFeaturesMimeData *)), this, SLOT(deleteElements(const UBFeaturesMimeData *)));
@@ -162,20 +166,35 @@ void UBFeaturesWidget::currentSelected(const QModelIndex &current)
             mActionBar->setCurrentState(IN_FOLDER);
         }
 
-//    } else if (feature.getType() == FEATURE_SEARCH) {
-//        centralWidget->showElement(feature, UBFeaturesCentralWidget::FeaturesWebView);
-
     } else {
-        centralWidget->showElement(feature, UBFeaturesCentralWidget::FeaturePropertiesList);
-        mActionBar->setCurrentState( IN_PROPERTIES );
+        if(feature.getType() == FEATURE_BOOKMARK){
+            QString url;
+            QFile bookmarkFile(feature.getFullPath().toLocalFile());
+            if(bookmarkFile.open(QIODevice::ReadOnly|QIODevice::Text)){
+            url = QString::fromUtf8(bookmarkFile.readAll());
+            bookmarkFile.close();
+            UBApplication::webController->loadUrl(QUrl(url));
+            }
+            else
+                qWarning() << "failed to read file named " << feature.getFullPath().toLocalFile();
+        }
+        else{
+            centralWidget->showElement(feature, UBFeaturesCentralWidget::FeaturePropertiesList);
+            mActionBar->setCurrentState( IN_PROPERTIES );
+        }
     }
+
     mActionBar->cleanText();
+    emit allowNewFolderButton(controller->newFolderAllowed());
+
 }
 
 void UBFeaturesWidget::createNewFolder()
 {
-    centralWidget->showAdditionalData(UBFeaturesCentralWidget::NewFolderDialog, UBFeaturesCentralWidget::Modal);
-    emit sendFileNameList(controller->getFileNamesInFolders());
+    if (controller->newFolderAllowed()) {
+        centralWidget->showAdditionalData(UBFeaturesCentralWidget::NewFolderDialog, UBFeaturesCentralWidget::Modal);
+        emit sendFileNameList(controller->getFileNamesInFolders());
+    }
 }
 
 void UBFeaturesWidget::deleteElements( const UBFeaturesMimeData * mimeData )
@@ -233,6 +252,27 @@ void UBFeaturesWidget::lockIt(bool pLock)
     centralWidget->setLockedExcludingAdditional(pLock);
 }
 
+void UBFeaturesWidget::processViewSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
+{
+    Q_UNUSED(deselected)
+
+    bool selectedDeletable = true;
+
+    if (!selected.indexes().count()) {
+        selectedDeletable = false;
+    } else {
+        foreach (QModelIndex curIndex, selected.indexes()) {
+            UBFeature curFeature = curIndex.data(Qt::UserRole + 1).value<UBFeature>();
+            if (!curFeature.isDeletable()) {
+                selectedDeletable = false;
+                break;
+            }
+        }
+    }
+
+    emit allowDeleteButton(selectedDeletable);
+}
+
 void UBFeaturesWidget::addToFavorite( const UBFeaturesMimeData * mimeData )
 {
     if ( !mimeData->hasUrls() )
@@ -327,7 +367,6 @@ void UBFeaturesWidget::onPreviewLoaded(int id, bool pSuccess, QUrl sourceUrl, QU
 void UBFeaturesWidget::onAddDownloadedFileToLibrary(bool pSuccess, QUrl sourceUrl, QString pContentHeader, QByteArray pData, QString pTitle)
 {
     if (pSuccess) {
-		qDebug() << pData.length();
         controller->addDownloadedFile(sourceUrl, pData, pContentHeader, pTitle);
         controller->refreshModels();
     }
@@ -345,7 +384,9 @@ void UBFeaturesWidget::addElementsToFavorite()
         QModelIndexList selected = centralWidget->listView()->selectionModel()->selectedIndexes();
         for ( int i = 0; i < selected.size(); ++i ) {
             UBFeature feature = selected.at(i).data( Qt::UserRole + 1 ).value<UBFeature>();
-            controller->addToFavorite(feature.getFullPath());
+            if (feature.getType() != FEATURE_FOLDER) {
+                controller->addToFavorite(feature.getFullPath());
+            }
        }
     }
 
@@ -396,6 +437,40 @@ void UBFeaturesWidget::importImage(const QImage &image, const QString &fileName)
     controller->importImage(image, fileName);
 }
 
+void UBFeaturesWidget::createBookmark(const QString& title, const QString& urlString)
+{
+    controller->createBookmark(title,urlString);
+}
+
+void UBFeaturesWidget::createLink(QString title, QString& urlString,QSize& size, QString mimeType, QString embedCode)
+{
+    controller->createLink(title,urlString,size,mimeType,embedCode);
+}
+
+QString UBFeaturesWidget::importFromUrl(const QUrl &url) const
+{
+    return controller->moveExternalData(url,UBFeature());
+}
+
+void UBFeaturesWidget::switchToElement(const UBFeature &feature)
+{
+    QString newPath = feature.getFullVirtualPath();
+    controller->setCurrentElement(feature);
+    controller->siftElements(newPath);
+
+    centralWidget->switchTo(UBFeaturesCentralWidget::MainList);
+}
+
+void UBFeaturesWidget::switchToRoot()
+{
+    switchToElement(controller->getRootElement());
+}
+
+void UBFeaturesWidget::switchToBookmarks()
+{
+    switchToElement(controller->getBookmarkElement());
+}
+
 UBFeaturesListView::UBFeaturesListView( QWidget* parent, const char* name )
     : QListView(parent)
 {
@@ -414,7 +489,9 @@ void UBFeaturesListView::dragMoveEvent( QDragMoveEvent *event )
     QModelIndex index = indexAt(event->pos());
     UBFeature onFeature = model()->data(index, Qt::UserRole + 1).value<UBFeature>();
     if (fMimeData) {
-        if (!index.isValid() || !onFeature.isFolder()) {
+        if (!index.isValid()
+                || !onFeature.isFolder()
+                || !onFeature.testPermissions(UBFeature::WRITE_P)) {
             event->ignore();
             return;
         }
@@ -470,6 +547,7 @@ UBFeaturesNavigatorWidget::UBFeaturesNavigatorWidget(QWidget *parent, const char
     mListSlider->setMinimumHeight(20);
 
     mListView->setParent(this);
+
     QVBoxLayout *mainLayer = new QVBoxLayout(this);
 
     mainLayer->addWidget(mListView, 1);
@@ -660,13 +738,13 @@ void UBFeaturesNewFolderDialog::setRegexp(const QRegExp pRegExp)
 }
 bool UBFeaturesNewFolderDialog::validString(const QString &pStr)
 {
-    return mLineEdit->hasAcceptableInput() && !mFileNameList.contains(pStr, Qt::CaseSensitive);
+    return mLineEdit->hasAcceptableInput() && !mFileNameList.contains(pStr.trimmed(), Qt::CaseSensitive);
 }
 
 void UBFeaturesNewFolderDialog::accept()
 {
 //     Setting all the constraints we need
-    emit createNewFolder(mLineEdit->text());
+    emit createNewFolder(mLineEdit->text().trimmed());
     mLineEdit->clear();
 }
 void UBFeaturesNewFolderDialog::reject()
@@ -876,6 +954,8 @@ UBFeatureProperties::UBFeatureProperties( QWidget *parent, const char *name ) :
     mpThumbnail->setAlignment(Qt::AlignHCenter);
     mpLayout->addWidget(mpThumbnail, 0);
 
+    mpLayout->addWidget(new QLabel(tr("Add"),this));
+
     mpButtonLayout = new QHBoxLayout();
     mpLayout->addLayout(mpButtonLayout, 0);
 
@@ -1083,7 +1163,7 @@ void UBFeatureProperties::onAddToPage()
 
 void UBFeatureProperties::onAddToLib()
 {
-    if ( UBApplication::isFromWeb(  mpElement->getFullPath().toString() ) )
+    if ( UBApplication::isFromWeb(mpElement->getFullPath().toString() ) )
     {
         sDownloadFileDesc desc;
         desc.isBackground = false;
@@ -1092,15 +1172,6 @@ void UBFeatureProperties::onAddToLib()
         desc.name = mpElement->getMetadata().value("Title", QString());
         qDebug() << desc.name;
         desc.srcUrl = mpElement->getFullPath().toString();
-        QString str1 = mpElement->getFullPath().toString().normalized(QString::NormalizationForm_C);
-        QString str2 = mpElement->getFullPath().toString().normalized(QString::NormalizationForm_D);
-        QString str3 = mpElement->getFullPath().toString().normalized(QString::NormalizationForm_KC);
-        QString str4 = mpElement->getFullPath().toString().normalized(QString::NormalizationForm_KD);
-        qDebug() << desc.srcUrl << endl
-                    << "str1" << str1 << endl
-                    << "str2" << str2 << endl
-                    << "str3" << str3 << endl
-                    << "str4" << str4 << endl;
         UBDownloadManager::downloadManager()->addFileToDownload(desc);
     }
 }
@@ -1347,6 +1418,12 @@ void UBFeaturesModel::moveData(const UBFeature &source, const UBFeature &destina
                     } else {
                         curFeature.setFullPath(newPath);
                     }
+                } else {
+                    if (action == Qt::CopyAction) {
+                        copyFeature.setPermissions(curFeature.getPermissions());
+                    } else {
+                        curFeature.setPermissions(UBFeature::WRITE_P | UBFeature::DELETE_P);
+                    }
                 }
                 // processing copy or move action for virtual FS
                 if (action == Qt::CopyAction) {
@@ -1369,9 +1446,9 @@ void UBFeaturesModel::moveData(const UBFeature &source, const UBFeature &destina
         deleteItem(source);
     }
 
-// Commented because of crashes on mac. But works fine. It is not predictable behavior. 
+// Commented because of crashes on mac. But works fine. It is not predictable behavior.
 // Please uncomment it if model will not refreshes
-//   emit dataRestructured();. 
+//   emit dataRestructured();.
 }
 
 Qt::ItemFlags UBFeaturesModel::flags( const QModelIndex &index ) const
@@ -1387,6 +1464,8 @@ Qt::ItemFlags UBFeaturesModel::flags( const QModelIndex &index ) const
              || item.getType() == FEATURE_IMAGE
              || item.getType() == FEATURE_FLASH
              || item.getType() == FEATURE_INTERNAL
+             || item.getType() == FEATURE_LINK
+             || item.getType() == FEATURE_BOOKMARK
              || item.getType() == FEATURE_FOLDER)
 
             resultFlags |= Qt::ItemIsDragEnabled;
@@ -1422,6 +1501,28 @@ bool UBFeaturesProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex &
     return filterRegExp().exactMatch(path);
 }
 
+bool UBFeaturesProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const
+{
+    UBFeature leftFeature = left.data(Qt::UserRole + 1).value<UBFeature>();
+    UBFeature rightFeature = right.data(Qt::UserRole + 1).value<UBFeature>();
+
+    if (leftFeature.getType() == FEATURE_FOLDER) {
+        if (rightFeature.getType() == FEATURE_FOLDER) {
+            return leftFeature.getSortKey() < rightFeature.getSortKey();
+        } else {
+            return true;
+        }
+    } else {
+        if (rightFeature.getType() == FEATURE_FOLDER) {
+            return false;
+        } else {
+            return leftFeature.getSortKey() < rightFeature.getSortKey();
+        }
+    }
+
+    return QSortFilterProxyModel::lessThan(left, right);
+}
+
 bool UBFeaturesSearchProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex & sourceParent )const
 {
     QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
@@ -1445,9 +1546,8 @@ bool UBFeaturesPathProxyModel::filterAcceptsRow( int sourceRow, const QModelInde
 {
     QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
     UBFeature feature = sourceModel()->data(index, Qt::UserRole + 1).value<UBFeature>();
-	
-    return feature.isFolder() && path.startsWith( feature.getFullVirtualPath()) ;
 
+    return feature.isFolder() && path.startsWith( feature.getFullVirtualPath()) ;
 }
 
 QString	UBFeaturesItemDelegate::displayText ( const QVariant & value, const QLocale & locale ) const
diff --git a/Sankore-3.1/src/gui/UBFeaturesWidget.h b/Sankore-3.1/src/gui/UBFeaturesWidget.h
index 1476c5c..844400e 100644
--- a/Sankore-3.1/src/gui/UBFeaturesWidget.h
+++ b/Sankore-3.1/src/gui/UBFeaturesWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBFEATURESWIDGET_H
 #define UBFEATURESWIDGET_H
 
@@ -75,20 +76,29 @@ class UBFeaturesWidget : public UBDockPaletteWidget
 {
     Q_OBJECT
 public:
-	UBFeaturesWidget(QWidget* parent=0, const char* name="UBFeaturesWidget");
+    UBFeaturesWidget(QWidget* parent=0, const char* name="UBFeaturesWidget");
     virtual ~UBFeaturesWidget();
 
-	bool visibleInMode(eUBDockPaletteWidgetMode mode)
+    bool visibleInMode(eUBDockPaletteWidgetMode mode)
     {
         return mode == eUBDockPaletteWidget_BOARD
-            || mode == eUBDockPaletteWidget_DESKTOP;
+            || mode == eUBDockPaletteWidget_DESKTOP
+            || mode == eUBDockPaletteWidget_WEB;
     }
     UBFeaturesController * getFeaturesController() const { return controller; }
     void importImage(const QImage &image, const QString &fileName = QString());
+    void createBookmark(const QString& title, const QString& urlString);
+    void createLink(QString title, QString& urlString, QSize &size, QString mimeType, QString embedCode);
+
+    QString importFromUrl(const QUrl &url) const;
+
+    void switchToElement(const UBFeature &feature);
+    void switchToRoot();
+    void switchToBookmarks();
 
-	static const int minThumbnailSize = 20;
-	static const int maxThumbnailSize = 100;
-	static const int defaultThumbnailSize = 40;
+    static const int minThumbnailSize = 20;
+    static const int maxThumbnailSize = 100;
+    static const int defaultThumbnailSize = 40;
 
     static const char *objNamePathList;
     static const char *objNameFeatureList;
@@ -97,8 +107,13 @@ public:
     int scrollbarHorisontalPadding() const { return 10;}
     int scrollbarVerticalIndent() const { return 0;}
 
+    QPixmap iconToLeft() const {return QPixmap(":images/library_open.png");}
+    QPixmap iconToRight() const {return QPixmap(":images/library_close.png");}
+
 signals:
     void sendFileNameList(const QStringList lst);
+    void allowNewFolderButton(bool pAllow);
+    void allowDeleteButton(bool pAllow);
 
 private slots:
     void onPreviewLoaded(int id, bool pSuccess, QUrl sourceUrl, QUrl originalUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground);
@@ -115,6 +130,7 @@ private slots:
     void deleteSelectedElements();
     void rescanModel();
     void lockIt(bool pLock);
+    void processViewSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
 
 private:
     void switchToListView();
@@ -147,16 +163,16 @@ private:
 
 class UBFeaturesListView : public QListView
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-    UBFeaturesListView( QWidget* parent=0, const char* name="UBFeaturesListView" );
+    UBFeaturesListView(QWidget* parent=0, const char* name="UBFeaturesListView");
     virtual ~UBFeaturesListView() {;}
 
 protected:
-    virtual void dragEnterEvent( QDragEnterEvent *event );
-    virtual void dropEvent( QDropEvent *event );
-    virtual void dragMoveEvent( QDragMoveEvent *event );
+    virtual void dragEnterEvent(QDragEnterEvent *event);
+    virtual void dropEvent(QDropEvent *event);
+    virtual void dragMoveEvent(QDragMoveEvent *event);
 
 private slots:
     void thumbnailSizeChanged(int);
@@ -336,7 +352,7 @@ private slots:
     //void onBack();
 
 private:
-	void populateMetadata();
+    void populateMetadata();
     void adaptSize();
 
     QVBoxLayout* mpLayout;
@@ -362,7 +378,7 @@ public:
 
 class UBFeaturesModel : public QAbstractListModel
 {
-	Q_OBJECT
+    Q_OBJECT
 
 signals:
     void dataRestructured();
@@ -371,18 +387,18 @@ public:
     UBFeaturesModel(QList<UBFeature> *pFeaturesList, QObject *parent = 0) : QAbstractListModel(parent), featuresList(pFeaturesList) {;}
     virtual ~UBFeaturesModel(){;}
 
-	void deleteFavoriteItem( const QString &path );
+    void deleteFavoriteItem( const QString &path );
     void deleteItem( const QString &path );
     void deleteItem(const UBFeature &feature);
 
-	QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const;
-	QMimeData *mimeData( const QModelIndexList &indexes ) const;
-	QStringList mimeTypes() const;
-	int rowCount( const QModelIndex &parent ) const;
-	Qt::ItemFlags flags( const QModelIndex &index ) const;
+    QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const;
+    QMimeData *mimeData( const QModelIndexList &indexes ) const;
+    QStringList mimeTypes() const;
+    int rowCount( const QModelIndex &parent ) const;
+    Qt::ItemFlags flags( const QModelIndex &index ) const;
     bool dropMimeData(const QMimeData *mimeData, Qt::DropAction action, int row, int column, const QModelIndex &parent);
-	bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
-	bool removeRow(int row, const QModelIndex &parent = QModelIndex());
+    bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
+    bool removeRow(int row, const QModelIndex &parent = QModelIndex());
     //bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
     //bool insertRow(int row, const QModelIndex &parent = QModelIndex());
 
@@ -394,69 +410,71 @@ public slots:
     void addItem( const UBFeature &item );
 
 private:
-	QList <UBFeature> *featuresList;
+    QList <UBFeature> *featuresList;
 };
 
 class UBFeaturesProxyModel : public QSortFilterProxyModel
 {
-	Q_OBJECT
+    Q_OBJECT
 public:
-    UBFeaturesProxyModel(QObject *parent = 0) : QSortFilterProxyModel(parent) {;}
+    UBFeaturesProxyModel(QObject *parent = 0) : QSortFilterProxyModel(parent) {setDynamicSortFilter(true);}
     virtual ~UBFeaturesProxyModel() {}
+
 protected:
-	virtual bool filterAcceptsRow ( int sourceRow, const QModelIndex & sourceParent ) const;
+    virtual bool filterAcceptsRow ( int sourceRow, const QModelIndex & sourceParent ) const;
+    virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
 };
 
 class UBFeaturesSearchProxyModel : public QSortFilterProxyModel
 {
-	Q_OBJECT
+    Q_OBJECT
 public:
     UBFeaturesSearchProxyModel(QObject *parent = 0) : QSortFilterProxyModel(parent), mFilterPrefix() {;}
     virtual ~UBFeaturesSearchProxyModel() {}
     void setFilterPrefix(const QString &newPrefix) {mFilterPrefix = newPrefix;}
 protected:
-	virtual bool filterAcceptsRow ( int sourceRow, const QModelIndex & sourceParent ) const;
+    virtual bool filterAcceptsRow ( int sourceRow, const QModelIndex & sourceParent ) const;
 private:
     QString mFilterPrefix;
 };
 
 class UBFeaturesPathProxyModel : public QSortFilterProxyModel
 {
-	Q_OBJECT
+    Q_OBJECT
 public:
     UBFeaturesPathProxyModel(QObject *parent = 0) : QSortFilterProxyModel(parent) {;}
     virtual ~UBFeaturesPathProxyModel() {}
     void setPath( const QString &p ) { path = p; }
 protected:
-	virtual bool filterAcceptsRow ( int sourceRow, const QModelIndex & sourceParent ) const;
+    virtual bool filterAcceptsRow ( int sourceRow, const QModelIndex & sourceParent ) const;
 private:
-	QString path;
+    QString path;
 };
 
 class UBFeaturesItemDelegate : public QStyledItemDelegate
 {
-	Q_OBJECT
+    Q_OBJECT
 public:
     UBFeaturesItemDelegate(QObject *parent = 0, const QListView *lw = 0) : QStyledItemDelegate(parent) { listView = lw; }
     ~UBFeaturesItemDelegate() {}
-	//UBFeaturesItemDelegate(const QListView *lw = 0) { listView = lw; };
-	//void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
+    //UBFeaturesItemDelegate(const QListView *lw = 0) { listView = lw; };
+    //void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
     //QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
-	virtual QString	displayText ( const QVariant & value, const QLocale & locale ) const;
+    virtual QString	displayText ( const QVariant & value, const QLocale & locale ) const;
 private:
-	const QListView *listView;
+    const QListView *listView;
 };
 
 class UBFeaturesPathItemDelegate : public QStyledItemDelegate
 {
-	Q_OBJECT
+    Q_OBJECT
 public:
     UBFeaturesPathItemDelegate(QObject *parent = 0);
-	~UBFeaturesPathItemDelegate();
-	virtual QString	displayText ( const QVariant & value, const QLocale & locale ) const;
-	void paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
+    ~UBFeaturesPathItemDelegate();
+    virtual QString	displayText ( const QVariant & value, const QLocale & locale ) const;
+    void paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
 private:
-	QPixmap *arrowPixmap;
+    QPixmap *arrowPixmap;
 };
 
 
diff --git a/Sankore-3.1/src/gui/UBFloatingPalette.cpp b/Sankore-3.1/src/gui/UBFloatingPalette.cpp
index 14738f1..4ebb5db 100644
--- a/Sankore-3.1/src/gui/UBFloatingPalette.cpp
+++ b/Sankore-3.1/src/gui/UBFloatingPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 #include <QPainterPath>
 
@@ -207,7 +208,7 @@ QSize UBFloatingPalette::preferredSize()
     return palettePreferredSize;
 }
 
-void UBFloatingPalette::adjustSizeAndPosition(bool pUp)
+void UBFloatingPalette::adjustSizeAndPosition(bool pUp, bool resetPosition)
 {
     QSize newPreferredSize = preferredSize();
 
@@ -234,6 +235,9 @@ void UBFloatingPalette::adjustSizeAndPosition(bool pUp)
             palette->resize(newPreferredSize.width(), palette->size().height());
         }
     }
+
+    if (parentWidget() && resetPosition)
+        move((parentWidget()->width() - width()) / 2, (parentWidget()->height() - height()) / 5);
 }
 
 void UBFloatingPalette::removeAllAssociatedPalette()
@@ -283,46 +287,46 @@ void UBFloatingPalette::minimizePalette(const QPoint& pos)
     if(!mCanBeMinimized)
     {
         //  If this floating palette cannot be minimized, we exit this method.
-	return;
+    return;
     }
 
     if(mMinimizedLocation == eMinimizedLocation_None)
     {
-	//  Verify if we have to minimize this palette
-	if(pos.x() == 5)
-	{
-	    mMinimizedLocation = eMinimizedLocation_Left;
-	}
+    //  Verify if we have to minimize this palette
+    if(pos.x() == 5)
+    {
+        mMinimizedLocation = eMinimizedLocation_Left;
+    }
 //	else if(pos.y() == 5)
 //	{
 //	    mMinimizedLocation = eMinimizedLocation_Top;
 //	}
     else if(pos.x() == parentWidget()->width() - getParentRightOffset() - width() - 5)
-	{
-	    mMinimizedLocation = eMinimizedLocation_Right;
-	}
+    {
+        mMinimizedLocation = eMinimizedLocation_Right;
+    }
 //	else if(pos.y() == parentSize.height() - height() - 5)
 //	{
 //	    mMinimizedLocation = eMinimizedLocation_Bottom;
 //	}
 
-	//  Minimize the Palette
-	if(mMinimizedLocation != eMinimizedLocation_None)
-	{
-	    emit minimizeStart(mMinimizedLocation);
-	}
+    //  Minimize the Palette
+    if(mMinimizedLocation != eMinimizedLocation_None)
+    {
+        emit minimizeStart(mMinimizedLocation);
+    }
     }
     else
     {
-	//  Restore the palette
-	if(pos.x() > 5 &&
-	   pos.y() > 5 &&
+    //  Restore the palette
+    if(pos.x() > 5 &&
+       pos.y() > 5 &&
        pos.x() < parentWidget()->width() - getParentRightOffset()  - width() - 5 &&
        pos.y() < parentWidget()->size().height() - height() - 5)
-	{
-	    mMinimizedLocation = eMinimizedLocation_None;
-	    emit maximizeStart();
-	}
+    {
+        mMinimizedLocation = eMinimizedLocation_None;
+        emit maximizeStart();
+    }
     }
 }
 
@@ -330,3 +334,13 @@ void UBFloatingPalette::setMinimizePermission(bool permission)
 {
     mCanBeMinimized = permission;
 }
+
+void UBFloatingPalette::savePos()
+{
+    mOldPos = pos();
+}
+
+void UBFloatingPalette::restorePos()
+{
+    move(mOldPos);
+}
diff --git a/Sankore-3.1/src/gui/UBFloatingPalette.h b/Sankore-3.1/src/gui/UBFloatingPalette.h
index 4aae193..eeb5c29 100644
--- a/Sankore-3.1/src/gui/UBFloatingPalette.h
+++ b/Sankore-3.1/src/gui/UBFloatingPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBFLOATINGPALLETTE_H_
 #define UBFLOATINGPALLETTE_H_
 
@@ -54,7 +55,7 @@ class UBFloatingPalette : public QWidget
         void addAssociatedPalette(UBFloatingPalette* pOtherPalette);
         void removeAssociatedPalette(UBFloatingPalette* pOtherPalette);
 
-        virtual void adjustSizeAndPosition(bool pUp = true);
+        virtual void adjustSizeAndPosition(bool pUp = true, bool resetPosition = true);
 
         void setCustomPosition(bool pFlag);
 
@@ -65,6 +66,9 @@ class UBFloatingPalette : public QWidget
 
         void setMinimizePermission(bool permission);
 
+        void savePos();
+        void restorePos();
+
     protected:
 
         virtual void enterEvent(QEvent *event);
@@ -97,6 +101,8 @@ class UBFloatingPalette : public QWidget
         eMinimizedLocation mMinimizedLocation;
         Qt::Corner mDefaultPosition;
 
+        QPoint mOldPos;
+
     signals:
         void mouseEntered();
         void minimizeStart(eMinimizedLocation location);
diff --git a/Sankore-3.1/src/gui/UBIconButton.cpp b/Sankore-3.1/src/gui/UBIconButton.cpp
index 9e7a5e2..335db35 100644
--- a/Sankore-3.1/src/gui/UBIconButton.cpp
+++ b/Sankore-3.1/src/gui/UBIconButton.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 
 #include "UBIconButton.h"
diff --git a/Sankore-3.1/src/gui/UBIconButton.h b/Sankore-3.1/src/gui/UBIconButton.h
index a7c4934..710e637 100644
--- a/Sankore-3.1/src/gui/UBIconButton.h
+++ b/Sankore-3.1/src/gui/UBIconButton.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBICONBUTTON_H_
 #define UBICONBUTTON_H_
 
diff --git a/Sankore-3.1/src/gui/UBKeyboardPalette.cpp b/Sankore-3.1/src/gui/UBKeyboardPalette.cpp
index 6bec141..5446f9a 100644
--- a/Sankore-3.1/src/gui/UBKeyboardPalette.cpp
+++ b/Sankore-3.1/src/gui/UBKeyboardPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,726 +18,756 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include <QtGui>
-#include <QList>
-#include <QSize>
-
-#include "UBKeyboardPalette.h"
-#include "core/UBSettings.h"
-
-#include "core/UBApplication.h"
-#include "gui/UBMainWindow.h"
-
-#include "core/memcheck.h"
-
-/*
-
-            UBKeyboardPalette
-
-*/
-
-
-UBKeyboardPalette::UBKeyboardPalette(QWidget *parent)
-        : UBActionPalette(Qt::TopRightCorner, parent)
-{
-
-  //  setWindowFlags(/*Qt::CustomizeWindowHint|*/Qt::WindowStaysOnTopHint|Qt::FramelessWindowHint);
-
-    setCustomCloseProcessing(true);
-    setCustomPosition(true);
-    setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
-    setFocusPolicy(Qt::NoFocus);
-    setClosable(true);
-    setGrip(false);
-
-    capsLock = false;
-    shift = false;
-    languagePopupActive = false;
-    keyboardActive = false;
-    nSpecialModifierIndex = 0;
-    specialModifier = 0;
-    btnWidth = btnHeight = 16;
-    strSize = "16x16";
-    currBtnImages = new BTNImages("16", btnWidth, btnHeight);
-    storage = NULL;
-
-
-    buttons = new UBKeyButton*[47];
-    for (int i=0; i<47; i++)
-    {
-        buttons[i] = new UBKeyButton(this);
-    }
-
-    locales = UBPlatformUtils::getKeyboardLayouts(this->nLocalesCount);
-
-    createCtrlButtons();
-
-    nCurrentLocale = UBSettings::settings()->KeyboardLocale->get().toInt();
-	if (nCurrentLocale < 0 || nCurrentLocale >= nLocalesCount)
-		nCurrentLocale = 0;
-	if (locales!=NULL)
-	    setInput(locales[nCurrentLocale]);
-
-    setContentsMargins( 22, 22, 22, 22 );
-
-    init();
-}
-
-//QList<UBKeyboardPalette*> UBKeyboardPalette::instances;
-void UBKeyboardPalette::init()
-{
-    m_isVisible = false;
-    setVisible(false);
-
-    setKeyButtonSize(UBSettings::settings()->boardKeyboardPaletteKeyBtnSize->get().toString());
-
-    connect(this, SIGNAL(keyboardActivated(bool)), this, SLOT(onActivated(bool)));
-    connect(UBSettings::settings()->boardKeyboardPaletteKeyBtnSize, SIGNAL(changed(QVariant)), this, SLOT(keyboardPaletteButtonSizeChanged(QVariant)));
-    connect(UBApplication::mainWindow->actionVirtualKeyboard, SIGNAL(triggered(bool)), this, SLOT(showKeyboard(bool)));
-    connect(this, SIGNAL(closed()), this, SLOT(hideKeyboard()));
-
-    //------------------------------//
-
-    UBPlatformUtils::setWindowNonActivableFlag(this, true);
-}
-
-void UBKeyboardPalette::showKeyboard(bool show)
-{
-    m_isVisible = show;
-}
-
-
-void UBKeyboardPalette::hideKeyboard()
-{
-    UBApplication::mainWindow->actionVirtualKeyboard->activate(QAction::Trigger);
-}
-
-void UBKeyboardPalette::syncPosition(const QPoint & pos)
-{
-    m_pos = pos;
-    move(pos);
-}
-
-void UBKeyboardPalette::syncLocale(int nLocale)
-{
-    nCurrentLocale = nLocale;
-    setInput(locales[nCurrentLocale]);
-}
-
-void UBKeyboardPalette::keyboardPaletteButtonSizeChanged(QVariant size)
-{
-    setKeyButtonSize(size.toString());
-}
-
-void UBKeyboardPalette::setInput(const UBKeyboardLocale* locale)
-{
-    if (locale!=NULL)
-    {
-        for (int i=0; i<47; i++)
-            buttons[i]->setKeyBt((*locale)[i]);
-    }
-    else
-    {
-        this->hide();
-    }
-}
-
-UBKeyboardPalette::~UBKeyboardPalette()
-{
-    //for (int i=0; i<47; i++)
-    //    delete buttons[i];
-    delete [] buttons;
-
-    //for (int i=0; i<8; i++)
-    //    delete ctrlButtons[i];
-    delete [] ctrlButtons;
-
-    //if (locales!=NULL)
-    //{
-    //    for (int i=0; i<nLocalesCount; i++)
-    //        delete locales[i];
-    //    delete [] locales;
-    //}
-
-    if(currBtnImages != NULL)
-    {
-        delete currBtnImages;
-        currBtnImages = NULL;
-    }
-
-    onActivated(false);
-}
-
-QSize  UBKeyboardPalette::sizeHint () const
-{
-    int w = contentsMargins().left() + 15 * btnWidth + contentsMargins().right();
-    int h = contentsMargins().top() + 5 * btnHeight + contentsMargins().bottom();
-    return QSize(w, h);
-}
-
-const QString* UBKeyboardPalette::getLocaleName()
-{
-    return locales == NULL ? NULL : &(locales[nCurrentLocale]->name);
-}
-
-void UBKeyboardPalette::setLocale(int nLocale)
-{
-    if (locales != NULL)
-    {
-        nCurrentLocale = nLocale;
-
-        setInput(locales[nCurrentLocale]);
-        onLocaleChanged(locales[nCurrentLocale]);
-        update();
-
-		UBSettings::settings()->KeyboardLocale->set(nCurrentLocale);
-    }
-    emit localeChanged(nLocale);
-}
-
-void UBKeyboardPalette::setKeyButtonSize(const QString& _strSize)
-{
-    QStringList strs = _strSize.split('x');
-
-    if (strs.size()==2)
-    {
-        strSize = _strSize;
-        btnWidth = strs[0].toInt();
-        btnHeight = strs[1].toInt();
-
-        if(currBtnImages != NULL)
-            delete currBtnImages;
-        currBtnImages = new BTNImages(strs[1], btnWidth, btnHeight);
-
-        adjustSizeAndPosition();
-    }
-}
-
-void UBKeyboardPalette::enterEvent ( QEvent * )
-{
-    if (keyboardActive)
-        return;
-
-    keyboardActive = true;
-
-    adjustSizeAndPosition();
-
-    emit keyboardActivated(true);
-}
-
-void UBKeyboardPalette::leaveEvent ( QEvent * )
-{
-    if (languagePopupActive || !keyboardActive || mIsMoving)
-        return;
-
-    keyboardActive = false;
-
-    adjustSizeAndPosition();
-
-    emit keyboardActivated(false);
-}
-
-void  UBKeyboardPalette::moveEvent ( QMoveEvent * event )
-{
-    UBActionPalette::moveEvent(event);
-    emit moved(event->pos());
-}
-
-void UBKeyboardPalette::adjustSizeAndPosition(bool pUp)
-{
-    QSize rSize = sizeHint();
-    if (rSize != size())
-    {
-        int dx = (rSize.width() - size().width()) /2;
-        int dy = rSize.height() - size().height();
-
-        this->move(x()-dx, y() - dy);
-        this->resize(rSize.width(), rSize.height());
-    }
-    UBActionPalette::adjustSizeAndPosition(pUp);
-}
-
-void  UBKeyboardPalette::paintEvent( QPaintEvent* event)
-{
-    checkLayout();
-
-    UBActionPalette::paintEvent(event);
-
-    QRect r = this->geometry();
-
-    int lleft, ltop, lright, lbottom;
-    getContentsMargins ( &lleft, &ltop, &lright, &lbottom ) ;
-
-    //------------------------------------------------
-    // calculate start offset from left, and from top
-
-    int ctrlButtonsId = 0;
-    lleft = ( r.width() - btnWidth * 15 ) / 2;
-    ltop = ( r.height() - btnHeight * 5 ) / 2;
-
-    //------------------------------------------------
-    // set geometry (position) for row 1
-
-    int offX = lleft;
-    int offY = ltop;
-
-    //-------------------
-
-    // buttons [`]..[+]
-    for (int i = 0; i<13; i++)
-    {
-        buttons[i]->setGeometry(offX, offY, btnWidth, btnHeight);
-        offX += btnWidth;
-    }
-
-    // button Backspace
-    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth * 2, btnHeight);
-    offX += btnWidth * 2;
-
-    //------------------------------------------------
-    // set geometry (position) for row 2
-
-    offX = lleft;
-    offY += btnHeight;
-    offX += btnWidth / 2;
-
-    //-------------------
-
-    // button Tab
-    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth * 2, btnHeight);
-    offX += btnWidth * 2;
-
-    // buttons [q]..[]]
-    for (int i = 0; i<12; i++)
-    {
-        buttons[i + 13]->setGeometry(offX, offY, btnWidth, btnHeight);
-        offX += btnWidth;
-    }
-
-//     // Row 2 Stub
-//     ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth * 1.5, btnHeight);
-//     offX += btnWidth * 1.5;
-
-    //------------------------------------------------
-    // set geometry (position) for row 3
-
-    offX = lleft;
-    offY += btnHeight;
-
-    //-------------------
-
-//     // Row 3 Stub
-
-    // button Enter
-    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth * 1, btnHeight);
-    offX += btnWidth*1;
-
-    // buttons [a]..[\]
-    for (int i = 0; i < 12; i++)
-    {
-        buttons[i + 12 + 13]->setGeometry(offX, offY, btnWidth, btnHeight);
-        offX += btnWidth;
-    }
-
-    // button Enter
-    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth * 2, btnHeight);
-    offX += btnWidth*2;
-
-    //------------------------------------------------
-    // set geometry (position) for row 4
-
-    offX = lleft;
-    offY += btnHeight;
-
-    //-------------------
-
-    // button LCapsLock
-    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth*2.5, btnHeight);
-    offX += btnWidth*2.5;
-
-    for (int i = 0; i < 10; i++)
-    {
-        buttons[i + 12 + 12 + 13]->setGeometry(offX, offY, btnWidth, btnHeight);
-        offX += btnWidth;
-    }
-
-    // button RCapsLock
-    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth*2.5, btnHeight);
-    offX += btnWidth*2.5;
-
-    //------------------------------------------------
-    // set geometry (position) for row 5
-
-    offX = lleft;
-    offY += btnHeight;
-
-    //-------------------
-
-    ctrlButtons[ctrlButtonsId++]->setGeometry(offX + btnWidth * 1 , offY, btnWidth * 2, btnHeight);
-    ctrlButtons[ctrlButtonsId++]->setGeometry(offX + btnWidth * 3 , offY, btnWidth * 9, btnHeight);
-    ctrlButtons[ctrlButtonsId++]->setGeometry(offX + btnWidth * 12, offY, btnWidth * 2, btnHeight);
-
-    //------------------------------------------------
-}
-
-void  UBKeyboardPalette::onDeactivated()
-{
-    onActivated(false);
-}
-
-
-//-----------------------------------------------------------------------//
-// BTNImages Class
-//-----------------------------------------------------------------------//
-
-BTNImages::BTNImages(QString strHeight, int width, int height)
-{
-    m_strHeight = strHeight;
-    m_width = width;
-    m_height = height;
-
-    m_strLeftPassive    = ":/images/virtual.keyboard/" + strHeight + "/left-passive.png";
-    m_strCenterPassive  = ":/images/virtual.keyboard/" + strHeight + "/centre-passive.png";
-    m_strRightPassive   = ":/images/virtual.keyboard/" + strHeight + "/right-passive.png";
-    m_strLeftActive     = ":/images/virtual.keyboard/" + strHeight + "/left-active.png";
-    m_strCenterActive   = ":/images/virtual.keyboard/" + strHeight + "/centre-active.png";
-    m_strRightActive    = ":/images/virtual.keyboard/" + strHeight + "/right-active.png";
-
-    m_btnLeftPassive    = QImage(m_strLeftPassive);
-    m_btnCenterPassive  = QImage(m_strCenterPassive);
-    m_btnRightPassive   = QImage(m_strRightPassive);
-    m_btnLeftActive     = QImage(m_strLeftActive);
-    m_btnCenterActive   = QImage(m_strCenterActive);
-    m_btnRightActive    = QImage(m_strRightActive);
-}
-
-ContentImage::ContentImage(QString strHeight, int height, QString strContentName)
-{
-    m_strHeight = strHeight;
-    m_height = height;
-
-    m_strContent = ":/images/virtual.keyboard/" + strHeight + "/" + strContentName + ".png";
-    m_btnContent = QImage(m_strContent);
-}
-
-//-----------------------------------------------------------------------//
-// UBKeyboardButton Class
-//-----------------------------------------------------------------------//
-
-UBKeyboardButton::UBKeyboardButton(UBKeyboardPalette* parent, QString contentImagePath = "")
-        :QWidget(parent),
-        keyboard(parent),
-        bFocused(false),
-        bPressed(false)
-{
-    m_parent = parent;
-
-    m_contentImagePath = contentImagePath;
-    imgContent = NULL;
-
-    setCursor(Qt::PointingHandCursor);
-}
-
-UBKeyboardButton::~UBKeyboardButton()
-{
-    if(imgContent != NULL)
-    {
-        delete imgContent;
-        imgContent = NULL;
-    }
-}
-
-bool UBKeyboardButton::isPressed()
-{
-    return bPressed;
-}
-
-void UBKeyboardButton::paintEvent(QPaintEvent*)
-{
-
-    QPainter painter(this);
-
-    //--------------------------
-
-    if(imgContent != NULL)
-    {
-        if(imgContent->m_height != m_parent->currBtnImages->m_height)
-        {
-            delete imgContent;
-            if(!m_contentImagePath.isEmpty())
-                imgContent = new ContentImage(m_parent->currBtnImages->m_strHeight, m_parent->currBtnImages->m_height, m_contentImagePath);
-        }
-    }
-    else
-    if(!m_contentImagePath.isEmpty())
-        imgContent = new ContentImage(m_parent->currBtnImages->m_strHeight, m_parent->currBtnImages->m_height, m_contentImagePath);
-
-    //--------------------------
-
-    if (isPressed())
-    {
-        painter.drawImage( 0,0, m_parent->currBtnImages->m_btnLeftActive, 0,0, m_parent->currBtnImages->m_btnLeftActive.width(), m_parent->currBtnImages->m_btnLeftActive.height() );
-        painter.drawImage( QRect(m_parent->currBtnImages->m_btnLeftActive.width(), 0, width() - m_parent->currBtnImages->m_btnLeftActive.width() - m_parent->currBtnImages->m_btnRightActive.width(), height()), m_parent->currBtnImages->m_btnCenterActive );
-        painter.drawImage( width() - m_parent->currBtnImages->m_btnRightActive.width(), 0, m_parent->currBtnImages->m_btnRightActive, 0,0, m_parent->currBtnImages->m_btnRightActive.width(), m_parent->currBtnImages->m_btnRightActive.height() );
-    }
-    else
-    {
-        painter.drawImage( 0,0, m_parent->currBtnImages->m_btnLeftPassive, 0,0, m_parent->currBtnImages->m_btnLeftPassive.width(), m_parent->currBtnImages->m_btnLeftPassive.height() );
-        painter.drawImage( QRect(m_parent->currBtnImages->m_btnLeftPassive.width(), 0, width() - m_parent->currBtnImages->m_btnLeftPassive.width() - m_parent->currBtnImages->m_btnRightPassive.width(), height()), m_parent->currBtnImages->m_btnCenterPassive );
-        painter.drawImage( width() - m_parent->currBtnImages->m_btnRightPassive.width(), 0, m_parent->currBtnImages->m_btnRightPassive, 0,0, m_parent->currBtnImages->m_btnRightPassive.width(), m_parent->currBtnImages->m_btnRightPassive.height() );
-    }
-
-    //--------------------------
-
-    this->paintContent(painter);
-
-    //--------------------------
-}
-
-void  UBKeyboardButton::enterEvent ( QEvent*)
-{
-    bFocused = true;
-    update();
-}
-
-void  UBKeyboardButton::leaveEvent ( QEvent*)
-{
-    bFocused = false;
-    update();
-}
-
-void  UBKeyboardButton::mousePressEvent ( QMouseEvent * event)
-{
-    event->accept(); 
-    bPressed = true;
-    update();
-    this->onPress();
-}
-
-void  UBKeyboardButton::mouseReleaseEvent ( QMouseEvent * )
-{
-    bPressed = false;
-    update();
-    this->onRelease();
-}
-
-UBKeyButton::UBKeyButton(UBKeyboardPalette* parent)
-        :UBKeyboardButton(parent),
-        keybt(0)
-{}
-
-UBKeyButton::~UBKeyButton()
-{}
-
-bool UBKeyButton::shifted()
-{
-    bool b = keyboard->shift;
-    if (keybt->capsLockSwitch && keyboard->capsLock)
-        b = !b;
-    return b;
-}
-
-void UBKeyButton::onPress()
-{
-    if (keybt!=NULL)
-    {
-        int codeIndex = keyboard->nSpecialModifierIndex * 2 + shifted();
-
-        if (keyboard->nSpecialModifierIndex)
-        {
-            if (keybt->codes[codeIndex].empty())
-            {
-                sendUnicodeSymbol(keyboard->specialModifier);
-                sendUnicodeSymbol(keybt->codes[shifted()]);
-            }
-            else
-            {
-                sendUnicodeSymbol(keybt->codes[codeIndex]);
-            }
-
-            keyboard->nSpecialModifierIndex = 0;
-        }
-        else
-        {
-            int nSpecialModifierIndex = shifted()? keybt->modifier2 : keybt->modifier1;
-
-            if (nSpecialModifierIndex)
-            {
-                keyboard->nSpecialModifierIndex = nSpecialModifierIndex;
-                keyboard->specialModifier = keybt->codes[codeIndex];
-            }
-            else
-            {
-                sendUnicodeSymbol(keybt->codes[codeIndex]);            
-            }
-        }
-    }
-
-    if (keyboard->shift)
-    {
-        keyboard->shift = false;
-        keyboard->update();
-    }
-}
-
-void UBKeyButton::onRelease()
-{}
-
-void UBKeyButton::paintContent(QPainter& painter)
-{
-    if (keybt)
-    {
-        QString text(QChar(shifted() ? keybt->symbol2 : keybt->symbol1));
-        QRect textRect(rect().x()+2, rect().y()+2, rect().width()-4, rect().height()-4);
-        painter.drawText(textRect, Qt::AlignCenter, text);
-    }
-}
-
-UBCntrlButton::UBCntrlButton(UBKeyboardPalette* parent, int _code, const QString& _contentImagePath )
-        :UBKeyboardButton(parent, _contentImagePath),
-        label(""),
-        code(_code)
-{}
-
-
-UBCntrlButton::UBCntrlButton(UBKeyboardPalette* parent, const QString& _label, int _code )
-        :UBKeyboardButton(parent),
-        label(_label),
-        code(_code)
-{}
-
-UBCntrlButton::~UBCntrlButton()
-{}
-
-void UBCntrlButton::onPress()
-{
-     sendControlSymbol(code);
-}
-
-void UBCntrlButton::onRelease()
-{}
-
-void UBCntrlButton::paintContent(QPainter& painter)
-{
-    if(!label.isEmpty())
-    {
-        painter.drawText(rect(), Qt::AlignCenter, label);
-    }
-    else
-    if(imgContent != NULL)
-    {
-        painter.drawImage(( rect().width() - imgContent->m_btnContent.width() ) / 2, ( rect().height() - imgContent->m_btnContent.height() ) / 2,
-            imgContent->m_btnContent, 0,0, imgContent->m_btnContent.width(), imgContent->m_btnContent.height());
-    }
-}
-
-UBCapsLockButton::UBCapsLockButton(UBKeyboardPalette* parent, const QString _contentImagePath)
-        :UBKeyboardButton(parent, _contentImagePath)
-{}
-
-UBCapsLockButton::~UBCapsLockButton()
-{}
-
-void UBCapsLockButton::onPress()
-{
-    keyboard->capsLock = !keyboard->capsLock;
-    keyboard->update();
-}
-
-void UBCapsLockButton::onRelease()
-{}
-
-bool UBCapsLockButton::isPressed()
-{
-    return keyboard->capsLock;
-}
-
-void UBCapsLockButton::paintContent(QPainter& painter)
-{
-    if(imgContent != NULL)
-    {
-        painter.drawImage(( rect().width() - imgContent->m_btnContent.width() ) / 2, ( rect().height() - imgContent->m_btnContent.height() ) / 2,
-            imgContent->m_btnContent, 0,0, imgContent->m_btnContent.width(), imgContent->m_btnContent.height());
-    }
-    else
-        painter.drawText(rect(), Qt::AlignCenter, "^");
-}
-
-UBShiftButton::UBShiftButton(UBKeyboardPalette* parent, const QString _contentImagePath)
-    :UBKeyboardButton(parent, _contentImagePath)
-{}
-
-UBShiftButton::~UBShiftButton()
-{}
-
-void UBShiftButton::onPress()
-{
-    keyboard->shift = !keyboard->shift;
-    keyboard->update();
-}
-
-
-void UBShiftButton::onRelease()
-{}
-
-bool UBShiftButton::isPressed()
-{
-    return keyboard->shift;
-}
-
-void UBShiftButton::paintContent(QPainter& painter)
-{
-    if(imgContent != NULL)
-    {
-        painter.drawImage(( rect().width() - imgContent->m_btnContent.width() ) / 2, ( rect().height() - imgContent->m_btnContent.height() ) / 2,
-            imgContent->m_btnContent, 0,0, imgContent->m_btnContent.width(), imgContent->m_btnContent.height());
-    }
-    else
-        painter.drawText(rect(), Qt::AlignCenter, "^");
-}
-
-
-
-UBLocaleButton::UBLocaleButton(UBKeyboardPalette* parent)
-        :UBKeyboardButton(parent)
-{
-    localeMenu = new QMenu(this);
-
-    for (int i=0; i<parent->nLocalesCount; i++)
-    {
-        QAction* action = (parent->locales[i]->icon!=NULL) ?
-                          localeMenu->addAction(*parent->locales[i]->icon, parent->locales[i]->fullName)
-                          : localeMenu->addAction(parent->locales[i]->fullName);
-        action->setData(QVariant(i));
-    }
-}
-
-UBLocaleButton::~UBLocaleButton()
-{
-    delete localeMenu;
-}
-
-void UBLocaleButton::onPress()
-{
-}
-
-void UBLocaleButton::onRelease()
-{
-    keyboard->languagePopupActive = true;
-    QAction* action = localeMenu->exec(mapToGlobal(QPoint(0,0)));
-    keyboard->languagePopupActive = false;
-    if (action!=NULL)
-    {
-        int nLocale = action->data().toInt();
-        keyboard->setLocale(nLocale);
-    }
-}
-
-void UBLocaleButton::paintContent(QPainter& painter)
-{
-    const QString* localeName = keyboard->getLocaleName();
-    if (localeName!=NULL)
-        painter.drawText(rect(), Qt::AlignCenter, *localeName);
-}
+
+
+
+#include <QtGui>
+#include <QList>
+#include <QSize>
+
+#include "UBKeyboardPalette.h"
+#include "core/UBSettings.h"
+
+#include "core/UBApplication.h"
+#include "gui/UBMainWindow.h"
+
+#include "core/memcheck.h"
+
+/*
+
+            UBKeyboardPalette
+
+*/
+
+
+UBKeyboardPalette::UBKeyboardPalette(QWidget *parent)
+        : UBActionPalette(Qt::TopRightCorner, parent)
+{
+
+  //  setWindowFlags(/*Qt::CustomizeWindowHint|*/Qt::WindowStaysOnTopHint|Qt::FramelessWindowHint);
+
+    setCustomCloseProcessing(true);
+    setCustomPosition(true);
+    setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+    setFocusPolicy(Qt::NoFocus);
+    setClosable(true);
+    setGrip(false);
+
+    capsLock = false;
+    shift = false;
+    languagePopupActive = false;
+    keyboardActive = false;
+    nSpecialModifierIndex = 0;
+    specialModifier = 0;
+    btnWidth = btnHeight = 16;
+    strSize = "16x16";
+    currBtnImages = new BTNImages("16", btnWidth, btnHeight);
+    storage = NULL;
+
+
+    buttons = new UBKeyButton*[47];
+    for (int i=0; i<47; i++)
+    {
+        buttons[i] = new UBKeyButton(this);
+    }
+
+    locales = UBPlatformUtils::getKeyboardLayouts(this->nLocalesCount);
+
+    createCtrlButtons();
+
+    nCurrentLocale = UBSettings::settings()->KeyboardLocale->get().toInt();
+    if (nCurrentLocale < 0 || nCurrentLocale >= nLocalesCount)
+        nCurrentLocale = 0;
+    if (locales!=NULL)
+        setInput(locales[nCurrentLocale]);
+
+    setContentsMargins( 22, 22, 22, 22 );
+
+    init();
+}
+
+//QList<UBKeyboardPalette*> UBKeyboardPalette::instances;
+void UBKeyboardPalette::init()
+{
+    m_isVisible = false;
+    setVisible(false);
+
+    setKeyButtonSize(UBSettings::settings()->boardKeyboardPaletteKeyBtnSize->get().toString());
+
+    connect(this, SIGNAL(keyboardActivated(bool)), this, SLOT(onActivated(bool)));
+    connect(UBSettings::settings()->boardKeyboardPaletteKeyBtnSize, SIGNAL(changed(QVariant)), this, SLOT(keyboardPaletteButtonSizeChanged(QVariant)));
+    connect(UBApplication::mainWindow->actionVirtualKeyboard, SIGNAL(triggered(bool)), this, SLOT(showKeyboard(bool)));
+    connect(this, SIGNAL(closed()), this, SLOT(hideKeyboard()));
+
+    //------------------------------//
+
+    UBPlatformUtils::setWindowNonActivableFlag(this, true);
+}
+
+void UBKeyboardPalette::showKeyboard(bool show)
+{
+    m_isVisible = show;
+}
+
+
+void UBKeyboardPalette::hideKeyboard()
+{
+    UBApplication::mainWindow->actionVirtualKeyboard->activate(QAction::Trigger);
+}
+
+void UBKeyboardPalette::syncPosition(const QPoint & pos)
+{
+    m_pos = pos;
+    move(pos);
+}
+
+void UBKeyboardPalette::syncLocale(int nLocale)
+{
+    nCurrentLocale = nLocale;
+    setInput(locales[nCurrentLocale]);
+}
+
+void UBKeyboardPalette::keyboardPaletteButtonSizeChanged(QVariant size)
+{
+    setKeyButtonSize(size.toString());
+}
+
+void UBKeyboardPalette::setInput(const UBKeyboardLocale* locale)
+{
+    if (locale!=NULL)
+    {
+        for (int i=0; i<47; i++)
+            buttons[i]->setKeyBt((*locale)[i]);
+    }
+    else
+    {
+        this->hide();
+    }
+}
+
+UBKeyboardPalette::~UBKeyboardPalette()
+{
+    //for (int i=0; i<47; i++)
+    //    delete buttons[i];
+    delete [] buttons;
+
+    //for (int i=0; i<8; i++)
+    //    delete ctrlButtons[i];
+    delete [] ctrlButtons;
+
+    //if (locales!=NULL)
+    //{
+    //    for (int i=0; i<nLocalesCount; i++)
+    //        delete locales[i];
+    //    delete [] locales;
+    //}
+
+    if(currBtnImages != NULL)
+    {
+        delete currBtnImages;
+        currBtnImages = NULL;
+    }
+
+    onActivated(false);
+}
+
+QSize  UBKeyboardPalette::sizeHint () const
+{
+    int w = contentsMargins().left() + 15 * btnWidth + contentsMargins().right();
+    int h = contentsMargins().top() + 5 * btnHeight + contentsMargins().bottom();
+    return QSize(w, h);
+}
+
+const QString* UBKeyboardPalette::getLocaleName()
+{
+    return locales == NULL ? NULL : &(locales[nCurrentLocale]->name);
+}
+
+void UBKeyboardPalette::setLocale(int nLocale)
+{
+    if (locales != NULL)
+    {
+        nCurrentLocale = nLocale;
+
+        setInput(locales[nCurrentLocale]);
+        onLocaleChanged(locales[nCurrentLocale]);
+        update();
+
+        UBSettings::settings()->KeyboardLocale->set(nCurrentLocale);
+    }
+    emit localeChanged(nLocale);
+}
+
+void UBKeyboardPalette::setKeyButtonSize(const QString& _strSize)
+{
+    QStringList strs = _strSize.split('x');
+
+    if (strs.size()==2)
+    {
+        strSize = _strSize;
+        btnWidth = strs[0].toInt();
+        btnHeight = strs[1].toInt();
+
+        if(currBtnImages != NULL)
+            delete currBtnImages;
+        currBtnImages = new BTNImages(strs[1], btnWidth, btnHeight);
+
+        adjustSizeAndPosition();
+    }
+}
+
+void UBKeyboardPalette::enterEvent ( QEvent * )
+{
+    if (keyboardActive)
+        return;
+
+    keyboardActive = true;
+
+    //adjustSizeAndPosition();
+
+    emit keyboardActivated(true);
+}
+
+void UBKeyboardPalette::leaveEvent ( QEvent * )
+{
+    if (languagePopupActive || !keyboardActive || mIsMoving)
+        return;
+
+    keyboardActive = false;
+
+    //adjustSizeAndPosition();
+
+    emit keyboardActivated(false);
+}
+
+void  UBKeyboardPalette::moveEvent ( QMoveEvent * event )
+{
+    UBActionPalette::moveEvent(event);
+    emit moved(event->pos());
+}
+
+void UBKeyboardPalette::adjustSizeAndPosition(bool pUp)
+{
+    QSize rSize = sizeHint();
+    if (rSize != size())
+    {
+        int dx = (rSize.width() - size().width()) /2;
+        int dy = rSize.height() - size().height();
+
+        this->move(x()-dx, y() - dy);
+        this->resize(rSize.width(), rSize.height());
+    }
+    UBActionPalette::adjustSizeAndPosition(pUp);
+}
+
+void  UBKeyboardPalette::paintEvent( QPaintEvent* event)
+{
+    checkLayout();
+
+    UBActionPalette::paintEvent(event);
+
+    QRect r = this->geometry();
+
+    int lleft, ltop, lright, lbottom;
+    getContentsMargins ( &lleft, &ltop, &lright, &lbottom ) ;
+
+    //------------------------------------------------
+    // calculate start offset from left, and from top
+
+    int ctrlButtonsId = 0;
+    lleft = ( r.width() - btnWidth * 15 ) / 2;
+    ltop = ( r.height() - btnHeight * 5 ) / 2;
+
+    //------------------------------------------------
+    // set geometry (position) for row 1
+
+    int offX = lleft;
+    int offY = ltop;
+
+    //-------------------
+
+    // buttons [`]..[+]
+    for (int i = 0; i<13; i++)
+    {
+        buttons[i]->setGeometry(offX, offY, btnWidth, btnHeight);
+        offX += btnWidth;
+    }
+
+    // button Backspace
+    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth * 2, btnHeight);
+    offX += btnWidth * 2;
+
+    //------------------------------------------------
+    // set geometry (position) for row 2
+
+    offX = lleft;
+    offY += btnHeight;
+    offX += btnWidth / 2;
+
+    //-------------------
+
+    // button Tab
+    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth * 2, btnHeight);
+    offX += btnWidth * 2;
+
+    // buttons [q]..[]]
+    for (int i = 0; i<12; i++)
+    {
+        buttons[i + 13]->setGeometry(offX, offY, btnWidth, btnHeight);
+        offX += btnWidth;
+    }
+
+//     // Row 2 Stub
+//     ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth * 1.5, btnHeight);
+//     offX += btnWidth * 1.5;
+
+    //------------------------------------------------
+    // set geometry (position) for row 3
+
+    offX = lleft;
+    offY += btnHeight;
+
+    //-------------------
+
+//     // Row 3 Stub
+
+    // button Enter
+    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth * 1, btnHeight);
+    offX += btnWidth*1;
+
+    // buttons [a]..[\]
+    for (int i = 0; i < 12; i++)
+    {
+        buttons[i + 12 + 13]->setGeometry(offX, offY, btnWidth, btnHeight);
+        offX += btnWidth;
+    }
+
+    // button Enter
+    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth * 2, btnHeight);
+    offX += btnWidth*2;
+
+    //------------------------------------------------
+    // set geometry (position) for row 4
+
+    offX = lleft;
+    offY += btnHeight;
+
+    //-------------------
+
+    // button LCapsLock
+    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth*2.5, btnHeight);
+    offX += btnWidth*2.5;
+
+    for (int i = 0; i < 10; i++)
+    {
+        buttons[i + 12 + 12 + 13]->setGeometry(offX, offY, btnWidth, btnHeight);
+        offX += btnWidth;
+    }
+
+    // button RCapsLock
+    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth*2.5, btnHeight);
+    offX += btnWidth*2.5;
+
+    //------------------------------------------------
+    // set geometry (position) for row 5
+
+    offX = lleft;
+    offY += btnHeight;
+
+    //-------------------
+
+    ctrlButtons[ctrlButtonsId++]->setGeometry(offX + btnWidth * 1 , offY, btnWidth * 2, btnHeight);
+    ctrlButtons[ctrlButtonsId++]->setGeometry(offX + btnWidth * 3 , offY, btnWidth * 9, btnHeight);
+    ctrlButtons[ctrlButtonsId++]->setGeometry(offX + btnWidth * 12, offY, btnWidth * 2, btnHeight);
+
+    //------------------------------------------------
+}
+
+void  UBKeyboardPalette::onDeactivated()
+{
+    onActivated(false);
+}
+
+
+//-----------------------------------------------------------------------//
+// BTNImages Class
+//-----------------------------------------------------------------------//
+
+BTNImages::BTNImages(QString strHeight, int width, int height)
+{
+    m_strHeight = strHeight;
+    m_width = width;
+    m_height = height;
+
+    m_strLeftPassive    = ":/images/virtual.keyboard/" + strHeight + "/left-passive.png";
+    m_strCenterPassive  = ":/images/virtual.keyboard/" + strHeight + "/centre-passive.png";
+    m_strRightPassive   = ":/images/virtual.keyboard/" + strHeight + "/right-passive.png";
+    m_strLeftActive     = ":/images/virtual.keyboard/" + strHeight + "/left-active.png";
+    m_strCenterActive   = ":/images/virtual.keyboard/" + strHeight + "/centre-active.png";
+    m_strRightActive    = ":/images/virtual.keyboard/" + strHeight + "/right-active.png";
+
+    m_btnLeftPassive    = QImage(m_strLeftPassive);
+    m_btnCenterPassive  = QImage(m_strCenterPassive);
+    m_btnRightPassive   = QImage(m_strRightPassive);
+    m_btnLeftActive     = QImage(m_strLeftActive);
+    m_btnCenterActive   = QImage(m_strCenterActive);
+    m_btnRightActive    = QImage(m_strRightActive);
+}
+
+ContentImage::ContentImage(QString strHeight, int height, QString strContentName)
+{
+    m_strHeight = strHeight;
+    m_height = height;
+
+    m_strContent = ":/images/virtual.keyboard/" + strHeight + "/" + strContentName + ".png";
+    m_btnContent = QImage(m_strContent);
+}
+
+//-----------------------------------------------------------------------//
+// UBKeyboardButton Class
+//-----------------------------------------------------------------------//
+
+UBKeyboardButton::UBKeyboardButton(UBKeyboardPalette* parent, QString contentImagePath = "")
+        :QWidget(parent),
+        keyboard(parent),
+        bFocused(false),
+        bPressed(false)
+{
+    m_parent = parent;
+
+    m_contentImagePath = contentImagePath;
+    imgContent = NULL;
+
+    setCursor(Qt::PointingHandCursor);
+}
+
+UBKeyboardButton::~UBKeyboardButton()
+{
+    if(imgContent != NULL)
+    {
+        delete imgContent;
+        imgContent = NULL;
+    }
+}
+
+bool UBKeyboardButton::isPressed()
+{
+    return bPressed;
+}
+
+void UBKeyboardButton::paintEvent(QPaintEvent*)
+{
+
+    QPainter painter(this);
+
+    //--------------------------
+
+    if(imgContent != NULL)
+    {
+        if(imgContent->m_height != m_parent->currBtnImages->m_height)
+        {
+            delete imgContent;
+            if(!m_contentImagePath.isEmpty())
+                imgContent = new ContentImage(m_parent->currBtnImages->m_strHeight, m_parent->currBtnImages->m_height, m_contentImagePath);
+        }
+    }
+    else
+    if(!m_contentImagePath.isEmpty())
+        imgContent = new ContentImage(m_parent->currBtnImages->m_strHeight, m_parent->currBtnImages->m_height, m_contentImagePath);
+
+    //--------------------------
+
+    if (isPressed())
+    {
+        painter.drawImage( 0,0, m_parent->currBtnImages->m_btnLeftActive, 0,0, m_parent->currBtnImages->m_btnLeftActive.width(), m_parent->currBtnImages->m_btnLeftActive.height() );
+        painter.drawImage( QRect(m_parent->currBtnImages->m_btnLeftActive.width(), 0, width() - m_parent->currBtnImages->m_btnLeftActive.width() - m_parent->currBtnImages->m_btnRightActive.width(), height()), m_parent->currBtnImages->m_btnCenterActive );
+        painter.drawImage( width() - m_parent->currBtnImages->m_btnRightActive.width(), 0, m_parent->currBtnImages->m_btnRightActive, 0,0, m_parent->currBtnImages->m_btnRightActive.width(), m_parent->currBtnImages->m_btnRightActive.height() );
+    }
+    else
+    {
+        painter.drawImage( 0,0, m_parent->currBtnImages->m_btnLeftPassive, 0,0, m_parent->currBtnImages->m_btnLeftPassive.width(), m_parent->currBtnImages->m_btnLeftPassive.height() );
+        painter.drawImage( QRect(m_parent->currBtnImages->m_btnLeftPassive.width(), 0, width() - m_parent->currBtnImages->m_btnLeftPassive.width() - m_parent->currBtnImages->m_btnRightPassive.width(), height()), m_parent->currBtnImages->m_btnCenterPassive );
+        painter.drawImage( width() - m_parent->currBtnImages->m_btnRightPassive.width(), 0, m_parent->currBtnImages->m_btnRightPassive, 0,0, m_parent->currBtnImages->m_btnRightPassive.width(), m_parent->currBtnImages->m_btnRightPassive.height() );
+    }
+
+    //--------------------------
+
+    this->paintContent(painter);
+
+    //--------------------------
+}
+
+void  UBKeyboardButton::enterEvent ( QEvent*)
+{
+    bFocused = true;
+    update();
+}
+
+void  UBKeyboardButton::leaveEvent ( QEvent*)
+{
+    bFocused = false;
+    update();
+}
+
+void  UBKeyboardButton::mousePressEvent ( QMouseEvent * event)
+{
+    event->accept();
+    bPressed = true;
+    update();
+    this->onPress();
+}
+
+void  UBKeyboardButton::mouseReleaseEvent ( QMouseEvent * )
+{
+    bPressed = false;
+    update();
+    this->onRelease();
+}
+
+UBKeyButton::UBKeyButton(UBKeyboardPalette* parent)
+        :UBKeyboardButton(parent),
+        keybt(0)
+{}
+
+UBKeyButton::~UBKeyButton()
+{}
+
+bool UBKeyButton::shifted()
+{
+#if defined(Q_WS_MACX)
+    return keyboard->shift;
+#else
+    bool b = keyboard->shift;
+    if (keybt->capsLockSwitch && keyboard->capsLock)
+        b = !b;
+    return b;
+#endif
+}
+
+bool UBKeyButton::capsed()
+{
+    return keyboard->capsLock;
+}
+
+void UBKeyButton::onPress()
+{
+    if (keybt!=NULL)
+    {
+#if defined(Q_WS_MACX)
+        int codeIndex = keyboard->nSpecialModifierIndex + (shifted())?1:(capsed() ? 2 : 0); 
+#else
+        int codeIndex = keyboard->nSpecialModifierIndex * 2 + shifted();
+#endif
+        if (keyboard->nSpecialModifierIndex)
+        {
+            if (keybt->codes[codeIndex].empty())
+            {
+                sendUnicodeSymbol(keyboard->specialModifier);
+                sendUnicodeSymbol(keybt->codes[shifted()]);
+            }
+            else
+            {
+                sendUnicodeSymbol(keybt->codes[codeIndex]);
+            }
+
+            keyboard->nSpecialModifierIndex = 0;
+        }
+        else
+        {
+
+#if defined(Q_WS_MACX)
+            int nSpecialModifierIndex;
+
+            if (shifted())
+                nSpecialModifierIndex = keybt->modifierShift;
+            else if(capsed())
+                nSpecialModifierIndex = keybt->modifierCaps;
+            else
+                nSpecialModifierIndex = keybt->modifierNo;
+#else
+            int nSpecialModifierIndex = shifted()? keybt->modifierShift : keybt->modifierNo;
+#endif
+
+
+            if (nSpecialModifierIndex)
+            {
+                keyboard->nSpecialModifierIndex = nSpecialModifierIndex;
+                keyboard->specialModifier = keybt->codes[codeIndex];
+            }
+            else
+            {
+                sendUnicodeSymbol(keybt->codes[codeIndex]);
+            }
+        }
+    }
+
+    if (keyboard->shift)
+    {
+        keyboard->shift = false;
+        keyboard->update();
+    }
+}
+
+void UBKeyButton::onRelease()
+{}
+
+void UBKeyButton::paintContent(QPainter& painter)
+{
+    if (keybt)
+    {
+#if defined(Q_WS_MACX)
+        QString text(QChar(shifted() ? keybt->shiftedSymbol : (capsed() ? keybt->capsedSymbol : keybt->simpleSymbol)));
+#else
+        QString text(QChar(shifted() ? keybt->shiftedSymbol : keybt->simpleSymbol));
+#endif
+        QRect textRect(rect().x()+2, rect().y()+2, rect().width()-4, rect().height()-4);
+        painter.drawText(textRect, Qt::AlignCenter, text);
+    }
+}
+
+UBCntrlButton::UBCntrlButton(UBKeyboardPalette* parent, int _code, const QString& _contentImagePath )
+        :UBKeyboardButton(parent, _contentImagePath),
+        label(""),
+        code(_code)
+{}
+
+
+UBCntrlButton::UBCntrlButton(UBKeyboardPalette* parent, const QString& _label, int _code )
+        :UBKeyboardButton(parent),
+        label(_label),
+        code(_code)
+{}
+
+UBCntrlButton::~UBCntrlButton()
+{}
+
+void UBCntrlButton::onPress()
+{
+     sendControlSymbol(code);
+}
+
+void UBCntrlButton::onRelease()
+{}
+
+void UBCntrlButton::paintContent(QPainter& painter)
+{
+    if(!label.isEmpty())
+    {
+        painter.drawText(rect(), Qt::AlignCenter, label);
+    }
+    else
+    if(imgContent != NULL)
+    {
+        painter.drawImage(( rect().width() - imgContent->m_btnContent.width() ) / 2, ( rect().height() - imgContent->m_btnContent.height() ) / 2,
+            imgContent->m_btnContent, 0,0, imgContent->m_btnContent.width(), imgContent->m_btnContent.height());
+    }
+}
+
+UBCapsLockButton::UBCapsLockButton(UBKeyboardPalette* parent, const QString _contentImagePath)
+        :UBKeyboardButton(parent, _contentImagePath)
+{}
+
+UBCapsLockButton::~UBCapsLockButton()
+{}
+
+void UBCapsLockButton::onPress()
+{
+    keyboard->capsLock = !keyboard->capsLock;
+    keyboard->update();
+}
+
+void UBCapsLockButton::onRelease()
+{}
+
+bool UBCapsLockButton::isPressed()
+{
+    return keyboard->capsLock;
+}
+
+void UBCapsLockButton::paintContent(QPainter& painter)
+{
+    if(imgContent != NULL)
+    {
+        painter.drawImage(( rect().width() - imgContent->m_btnContent.width() ) / 2, ( rect().height() - imgContent->m_btnContent.height() ) / 2,
+            imgContent->m_btnContent, 0,0, imgContent->m_btnContent.width(), imgContent->m_btnContent.height());
+    }
+    else
+        painter.drawText(rect(), Qt::AlignCenter, "^");
+}
+
+UBShiftButton::UBShiftButton(UBKeyboardPalette* parent, const QString _contentImagePath)
+    :UBKeyboardButton(parent, _contentImagePath)
+{}
+
+UBShiftButton::~UBShiftButton()
+{}
+
+void UBShiftButton::onPress()
+{
+    keyboard->shift = !keyboard->shift;
+    keyboard->update();
+}
+
+
+void UBShiftButton::onRelease()
+{}
+
+bool UBShiftButton::isPressed()
+{
+    return keyboard->shift;
+}
+
+void UBShiftButton::paintContent(QPainter& painter)
+{
+    if(imgContent != NULL)
+    {
+        painter.drawImage(( rect().width() - imgContent->m_btnContent.width() ) / 2, ( rect().height() - imgContent->m_btnContent.height() ) / 2,
+            imgContent->m_btnContent, 0,0, imgContent->m_btnContent.width(), imgContent->m_btnContent.height());
+    }
+    else
+        painter.drawText(rect(), Qt::AlignCenter, "^");
+}
+
+
+
+UBLocaleButton::UBLocaleButton(UBKeyboardPalette* parent)
+        :UBKeyboardButton(parent)
+{
+    localeMenu = new QMenu(this);
+
+    for (int i=0; i<parent->nLocalesCount; i++)
+    {
+        QAction* action = (parent->locales[i]->icon!=NULL) ?
+                          localeMenu->addAction(*parent->locales[i]->icon, parent->locales[i]->fullName)
+                          : localeMenu->addAction(parent->locales[i]->fullName);
+        action->setData(QVariant(i));
+    }
+}
+
+UBLocaleButton::~UBLocaleButton()
+{
+    delete localeMenu;
+}
+
+void UBLocaleButton::onPress()
+{
+}
+
+void UBLocaleButton::onRelease()
+{
+    keyboard->languagePopupActive = true;
+    QAction* action = localeMenu->exec(mapToGlobal(QPoint(0,0)));
+    keyboard->languagePopupActive = false;
+    if (action!=NULL)
+    {
+        int nLocale = action->data().toInt();
+        keyboard->setLocale(nLocale);
+    }
+}
+
+void UBLocaleButton::paintContent(QPainter& painter)
+{
+    const QString* localeName = keyboard->getLocaleName();
+    if (localeName!=NULL)
+        painter.drawText(rect(), Qt::AlignCenter, *localeName);
+}
diff --git a/Sankore-3.1/src/gui/UBKeyboardPalette.h b/Sankore-3.1/src/gui/UBKeyboardPalette.h
index c964975..e3b3d2e 100644
--- a/Sankore-3.1/src/gui/UBKeyboardPalette.h
+++ b/Sankore-3.1/src/gui/UBKeyboardPalette.h
@@ -1,23 +1,24 @@
-/*
- * Copyright (C) 2012 Webdoc SA
- *
- * This file is part of Open-Sankoré.
- *
- * Open-Sankoré is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
- * with a specific linking exception for the OpenSSL project's
- * "OpenSSL" library (or with modified versions of it that use the
- * same license as the "OpenSSL" library).
- *
- * Open-Sankoré is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
- */
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 
 #ifndef UBKEYBOARDPALETTE_H
@@ -228,6 +229,7 @@ public:
 
 private:
     bool shifted();
+    bool capsed();
     const KEYBT* keybt;
 };
 
diff --git a/Sankore-3.1/src/gui/UBKeyboardPalette_linux.cpp b/Sankore-3.1/src/gui/UBKeyboardPalette_linux.cpp
index 5c27cc0..13c95a2 100644
--- a/Sankore-3.1/src/gui/UBKeyboardPalette_linux.cpp
+++ b/Sankore-3.1/src/gui/UBKeyboardPalette_linux.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBKeyboardPalette.h"
 
 #include <X11/Xlib.h>
diff --git a/Sankore-3.1/src/gui/UBKeyboardPalette_mac.cpp b/Sankore-3.1/src/gui/UBKeyboardPalette_mac.cpp
index 341ff40..643924a 100644
--- a/Sankore-3.1/src/gui/UBKeyboardPalette_mac.cpp
+++ b/Sankore-3.1/src/gui/UBKeyboardPalette_mac.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBKeyboardPalette.h"
 
 #include <stdio.h>
@@ -32,12 +33,22 @@
 
 void UBKeyboardButton::sendUnicodeSymbol(KEYCODE keycode)
 {
-    if (keycode.modifier)
-		CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, 56, true));
+    // if shift pressrd
+    if (1 == keycode.modifier)
+        CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, 56, true));
+    //if caps pressed
+    if (2 == keycode.modifier)
+        CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, 57, true));
+
     CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, keycode.code, true));
     CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, keycode.code, false));
+
+    //release shift
     if (keycode.modifier)
 		CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, 56, false));
+    //release caps
+    if (2 == keycode.modifier)
+        CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, 57, false));
 	
 }
 
diff --git a/Sankore-3.1/src/gui/UBKeyboardPalette_win.cpp b/Sankore-3.1/src/gui/UBKeyboardPalette_win.cpp
index 4c52552..89b6423 100644
--- a/Sankore-3.1/src/gui/UBKeyboardPalette_win.cpp
+++ b/Sankore-3.1/src/gui/UBKeyboardPalette_win.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,79 +18,80 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBKeyboardPalette.h"
-
-#include <windows.h>
-
-#include "../core/UBApplication.h"
-#include "../gui/UBMainWindow.h"
-
-#include "core/memcheck.h"
-
-void UBKeyboardButton::sendUnicodeSymbol(KEYCODE keycode)
-{
-	INPUT input[2];
-	input[0].type = INPUT_KEYBOARD;
-	input[0].ki.wVk = 0;
-    input[0].ki.wScan = keycode.symbol;
-	input[0].ki.dwFlags = KEYEVENTF_UNICODE;
-	input[0].ki.time = 0;
-	input[0].ki.dwExtraInfo = 0;
-
-	input[1].type = INPUT_KEYBOARD;
-	input[1].ki.wVk = 0;
-    input[1].ki.wScan = keycode.symbol;
-	input[1].ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP;
-	input[1].ki.time = 0;
-	input[1].ki.dwExtraInfo = 0;
-
-	::SendInput(2, input, sizeof(input[0]));
-}
-
-void UBKeyboardButton::sendControlSymbol(int nSymbol)
-{
-	INPUT input[2];
-	input[0].type = INPUT_KEYBOARD;
-	input[0].ki.wVk = nSymbol;
-	input[0].ki.wScan = 0;
-	input[0].ki.dwFlags = 0;
-	input[0].ki.time = 0;
-	input[0].ki.dwExtraInfo = 0;
-
-	input[1].type = INPUT_KEYBOARD;
-	input[1].ki.wVk = nSymbol;
-	input[1].ki.wScan = 0;
-	input[1].ki.dwFlags = KEYEVENTF_KEYUP;
-	input[1].ki.time = 0;
-	input[1].ki.dwExtraInfo = 0;
-
-	::SendInput(2, input, sizeof(input[0]));
-}
-
-void UBKeyboardPalette::createCtrlButtons()
-{
-    int ctrlID = 0;
-    ctrlButtons = new UBKeyboardButton*[9];
-
-    ctrlButtons[ctrlID++] = new UBCntrlButton(this, 0x08, "backspace");// Backspace
-    ctrlButtons[ctrlID++] = new UBCntrlButton(this, 0x09, "tab");      // Tab
-    ctrlButtons[ctrlID++] = new UBCapsLockButton(this, "capslock");    // Shift
-    ctrlButtons[ctrlID++] = new UBCntrlButton(this, tr("Enter"), 0x0d);    // Enter
-    ctrlButtons[ctrlID++] = new UBShiftButton(this, "shift");    // Shift
-    ctrlButtons[ctrlID++] = new UBShiftButton(this, "shift");    // Shift
-    ctrlButtons[ctrlID++] = new UBLocaleButton(this);                  // Language Switch 
-    ctrlButtons[ctrlID++] = new UBCntrlButton(this, "", 0x20);         // Space
-    ctrlButtons[ctrlID++] = new UBLocaleButton(this);                  // Language Switch 
-}
-
-void UBKeyboardPalette::checkLayout()
-{}
-
-void UBKeyboardPalette::onActivated(bool)
-{}
-
-void UBKeyboardPalette::onLocaleChanged(UBKeyboardLocale* )
-{}
-
+
+
+
+#include "UBKeyboardPalette.h"
+
+#include <windows.h>
+
+#include "../core/UBApplication.h"
+#include "../gui/UBMainWindow.h"
+
+#include "core/memcheck.h"
+
+void UBKeyboardButton::sendUnicodeSymbol(KEYCODE keycode)
+{
+	INPUT input[2];
+	input[0].type = INPUT_KEYBOARD;
+	input[0].ki.wVk = 0;
+    input[0].ki.wScan = keycode.symbol;
+	input[0].ki.dwFlags = KEYEVENTF_UNICODE;
+	input[0].ki.time = 0;
+	input[0].ki.dwExtraInfo = 0;
+
+	input[1].type = INPUT_KEYBOARD;
+	input[1].ki.wVk = 0;
+    input[1].ki.wScan = keycode.symbol;
+	input[1].ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP;
+	input[1].ki.time = 0;
+	input[1].ki.dwExtraInfo = 0;
+
+	::SendInput(2, input, sizeof(input[0]));
+}
+
+void UBKeyboardButton::sendControlSymbol(int nSymbol)
+{
+	INPUT input[2];
+	input[0].type = INPUT_KEYBOARD;
+	input[0].ki.wVk = nSymbol;
+	input[0].ki.wScan = 0;
+	input[0].ki.dwFlags = 0;
+	input[0].ki.time = 0;
+	input[0].ki.dwExtraInfo = 0;
+
+	input[1].type = INPUT_KEYBOARD;
+	input[1].ki.wVk = nSymbol;
+	input[1].ki.wScan = 0;
+	input[1].ki.dwFlags = KEYEVENTF_KEYUP;
+	input[1].ki.time = 0;
+	input[1].ki.dwExtraInfo = 0;
+
+	::SendInput(2, input, sizeof(input[0]));
+}
+
+void UBKeyboardPalette::createCtrlButtons()
+{
+    int ctrlID = 0;
+    ctrlButtons = new UBKeyboardButton*[9];
+
+    ctrlButtons[ctrlID++] = new UBCntrlButton(this, 0x08, "backspace");// Backspace
+    ctrlButtons[ctrlID++] = new UBCntrlButton(this, 0x09, "tab");      // Tab
+    ctrlButtons[ctrlID++] = new UBCapsLockButton(this, "capslock");    // Shift
+    ctrlButtons[ctrlID++] = new UBCntrlButton(this, tr("Enter"), 0x0d);    // Enter
+    ctrlButtons[ctrlID++] = new UBShiftButton(this, "shift");    // Shift
+    ctrlButtons[ctrlID++] = new UBShiftButton(this, "shift");    // Shift
+    ctrlButtons[ctrlID++] = new UBLocaleButton(this);                  // Language Switch 
+    ctrlButtons[ctrlID++] = new UBCntrlButton(this, "", 0x20);         // Space
+    ctrlButtons[ctrlID++] = new UBLocaleButton(this);                  // Language Switch 
+}
+
+void UBKeyboardPalette::checkLayout()
+{}
+
+void UBKeyboardPalette::onActivated(bool)
+{}
+
+void UBKeyboardPalette::onLocaleChanged(UBKeyboardLocale* )
+{}
+
diff --git a/Sankore-3.1/src/gui/UBLeftPalette.cpp b/Sankore-3.1/src/gui/UBLeftPalette.cpp
index cc1ddc6..a48d734 100644
--- a/Sankore-3.1/src/gui/UBLeftPalette.cpp
+++ b/Sankore-3.1/src/gui/UBLeftPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBLeftPalette.h"
 #include "core/UBSettings.h"
 
@@ -37,18 +38,18 @@ UBLeftPalette::UBLeftPalette(QWidget *parent, const char *name):
 
     bool isCollapsed = false;
     if(mCurrentMode == eUBDockPaletteWidget_BOARD){
-    	mLastWidth = UBSettings::settings()->leftLibPaletteBoardModeWidth->get().toInt();
-    	isCollapsed = UBSettings::settings()->leftLibPaletteBoardModeIsCollapsed->get().toBool();
+        mLastWidth = UBSettings::settings()->leftLibPaletteBoardModeWidth->get().toInt();
+        isCollapsed = UBSettings::settings()->leftLibPaletteBoardModeIsCollapsed->get().toBool();
     }
     else{
-    	mLastWidth = UBSettings::settings()->leftLibPaletteDesktopModeWidth->get().toInt();
-    	isCollapsed = UBSettings::settings()->leftLibPaletteDesktopModeIsCollapsed->get().toBool();
+        mLastWidth = UBSettings::settings()->leftLibPaletteDesktopModeWidth->get().toInt();
+        isCollapsed = UBSettings::settings()->leftLibPaletteDesktopModeIsCollapsed->get().toBool();
     }
 
     if(isCollapsed)
-    	resize(0,parentWidget()->height());
+        resize(0,parentWidget()->height());
     else
-    	resize(mLastWidth, parentWidget()->height());
+        resize(mLastWidth, parentWidget()->height());
 }
 
 /**
@@ -62,9 +63,9 @@ UBLeftPalette::~UBLeftPalette()
 
 void UBLeftPalette::onDocumentSet(UBDocumentProxy* documentProxy)
 {
-	//This is necessary to force the teacher guide to be showed in priority each time a document is set
-	if(documentProxy && UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
-		mLastOpenedTabForMode.insert(eUBDockPaletteWidget_BOARD, 1);
+    //This is necessary to force the teacher guide to be showed in priority each time a document is set
+    if(documentProxy && UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
+        mLastOpenedTabForMode.insert(eUBDockPaletteWidget_BOARD, 1);
 }
 
 /**
@@ -81,36 +82,39 @@ void UBLeftPalette::updateMaxWidth()
  */
 void UBLeftPalette::resizeEvent(QResizeEvent *event)
 {
-	int newWidth = width();
-	if(mCurrentMode == eUBDockPaletteWidget_BOARD){
-		if(newWidth > mCollapseWidth)
-			UBSettings::settings()->leftLibPaletteBoardModeWidth->set(newWidth);
-		UBSettings::settings()->leftLibPaletteBoardModeIsCollapsed->set(newWidth == 0);
-	}
-	else{
-		if(newWidth > mCollapseWidth)
-			UBSettings::settings()->leftLibPaletteDesktopModeWidth->set(newWidth);
-		UBSettings::settings()->leftLibPaletteDesktopModeIsCollapsed->set(newWidth == 0);
-	}
+    int newWidth = width();
+    if(mCurrentMode == eUBDockPaletteWidget_BOARD){
+        if(newWidth > mCollapseWidth)
+            UBSettings::settings()->leftLibPaletteBoardModeWidth->set(newWidth);
+        UBSettings::settings()->leftLibPaletteBoardModeIsCollapsed->set(newWidth == 0);
+    }
+    else if (mCurrentMode == eUBDockPaletteWidget_DESKTOP){
+        if(newWidth > mCollapseWidth)
+            UBSettings::settings()->leftLibPaletteDesktopModeWidth->set(newWidth);
+        UBSettings::settings()->leftLibPaletteDesktopModeIsCollapsed->set(newWidth == 0);
+    }
     UBDockPalette::resizeEvent(event);
 }
 
 
 bool UBLeftPalette::switchMode(eUBDockPaletteWidgetMode mode)
 {
-	int newModeWidth;
-	if(mode == eUBDockPaletteWidget_BOARD){
-		mLastWidth = UBSettings::settings()->leftLibPaletteBoardModeWidth->get().toInt();
-		newModeWidth = mLastWidth;
-		if(UBSettings::settings()->leftLibPaletteBoardModeIsCollapsed->get().toBool())
-			newModeWidth = 0;
-	}
-	else{
-		mLastWidth = UBSettings::settings()->leftLibPaletteDesktopModeWidth->get().toInt();
-		newModeWidth = mLastWidth;
-		if(UBSettings::settings()->leftLibPaletteDesktopModeIsCollapsed->get().toBool())
-			newModeWidth = 0;
-	}
-	resize(newModeWidth,height());
-	return UBDockPalette::switchMode(mode);
+    int newModeWidth;
+    if(mode == eUBDockPaletteWidget_BOARD){
+        mLastWidth = UBSettings::settings()->leftLibPaletteBoardModeWidth->get().toInt();
+        newModeWidth = mLastWidth;
+        if(UBSettings::settings()->leftLibPaletteBoardModeIsCollapsed->get().toBool())
+            newModeWidth = 0;
+    }
+    else if (mode == eUBDockPaletteWidget_DESKTOP){
+        mLastWidth = UBSettings::settings()->leftLibPaletteDesktopModeWidth->get().toInt();
+        newModeWidth = mLastWidth;
+        if(UBSettings::settings()->leftLibPaletteDesktopModeIsCollapsed->get().toBool())
+            newModeWidth = 0;
+    }
+    //TODO claudio another hack
+    // avoid the overlap of tab and menu bar (positionned on bottom) when clicling between
+    // board and web mode
+    resize(newModeWidth == 0 ? 1 : newModeWidth,height());
+    return UBDockPalette::switchMode(mode);
 }
diff --git a/Sankore-3.1/src/gui/UBLeftPalette.h b/Sankore-3.1/src/gui/UBLeftPalette.h
index 564c627..6ba12c9 100644
--- a/Sankore-3.1/src/gui/UBLeftPalette.h
+++ b/Sankore-3.1/src/gui/UBLeftPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBLEFTPALETTE_H
 #define UBLEFTPALETTE_H
 
diff --git a/Sankore-3.1/src/gui/UBMagnifer.cpp b/Sankore-3.1/src/gui/UBMagnifer.cpp
index 046ff53..de8e5db 100644
--- a/Sankore-3.1/src/gui/UBMagnifer.cpp
+++ b/Sankore-3.1/src/gui/UBMagnifer.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,386 +18,467 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include <QtGui>
-#include "UBMagnifer.h"
-
-#include "core/UBApplication.h"
-#include "board/UBBoardController.h"
-#include "domain/UBGraphicsScene.h"
-#include "board/UBBoardView.h"
-
-#include "core/memcheck.h"
-
-
-UBMagnifier::UBMagnifier(QWidget *parent, bool isInteractive) 
-    : QWidget(parent, parent ? Qt::Widget : Qt::Tool | (Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint))
-    , mShouldMoveWidget(false)
-    , mShouldResizeWidget(false)
-    , borderPen(Qt::darkGray)
-    , gView(0)
-    , mView(0)
-{
-    isCusrsorAlreadyStored = false;
-    setMouseTracking(true);
-
-    //--------------------------------------------------//
-
-    QPixmap pix(":/images/cursors/resize.png");
-    QTransform tr;
-    tr.rotate(45);
-    mResizeCursor  = QCursor(pix.transformed(tr, Qt::SmoothTransformation), pix.width() / 2,  pix.height() / 2);
-
-    //--------------------------------------------------//
-
-    params.sizePercentFromScene = 20;
-    m_isInteractive = isInteractive;
-    sClosePixmap = new QPixmap(":/images/close.svg");
-    sIncreasePixmap = new QPixmap(":/images/increase.svg");
-    sDecreasePixmap = new QPixmap(":/images/decrease.svg");
-    mResizeItem = new QPixmap(":/images/resize.svg");
-
-    if (parent)
-    {
-        setAttribute(Qt::WA_NoMousePropagation);
-    }
-    else
-    {
-        // standalone window
-        // !!!! Should be included into Windows after QT recompilation
-#ifndef Q_WS_WIN
-//        setAttribute(Qt::WA_TranslucentBackground);
-        setAttribute(Qt::WA_MacAlwaysShowToolWindow);
-#endif
-#ifdef Q_WS_MAC
-        setAttribute(Qt::WA_MacAlwaysShowToolWindow);
-        setAttribute(Qt::WA_MacNonActivatingToolWindow);
-        setAttribute(Qt::WA_MacNoShadow);
-#endif
-    }
-
-    connect(&mRefreshTimer, SIGNAL(timeout()), this, SLOT(slot_refresh()));
-}
-
-UBMagnifier::~UBMagnifier()
-{
-    if(sClosePixmap)
-    {
-        delete sClosePixmap;
-        sClosePixmap = NULL;
-    }
-
-    if(sIncreasePixmap)
-    {
-        delete sIncreasePixmap;
-        sIncreasePixmap = NULL;
-    }
-
-    if(sDecreasePixmap)
-    {
-        delete sDecreasePixmap;
-        sDecreasePixmap = NULL;
-    }
-}
-
-void UBMagnifier::setSize(qreal percentFromScene) 
-{
-    if(gView == NULL || mView == NULL) return;
-
-    // calculate object size
-    params.sizePercentFromScene = percentFromScene;
-    QSize sceneSize = mView->size();
-    qreal size = params.sizePercentFromScene * sceneSize.width() / 100;
-
-    QRect currGeom = geometry();
-    if(currGeom.width() == currGeom.height())
-    {
-        QPoint newPos = mView->mapFromGlobal(updPointMove);
-        setGeometry(newPos.x() - size / 2, newPos.y() - size / 2, size, size);
-    }
-    else
-        setGeometry(0, 0, size, size);
-
-    // prepare transparent bit mask
-    QImage mask_img(width(), height(), QImage::Format_Mono);
-    mask_img.fill(0xff);
-    QPainter mask_ptr(&mask_img);
-    mask_ptr.setBrush( QBrush( QColor(0, 0, 0) ) );
-    mask_ptr.drawEllipse(QPointF(size/2, size/2), size / 2 - sClosePixmap->width(), size / 2 - sClosePixmap->width());
-    bmpMask = QBitmap::fromImage(mask_img);
-
-    // prepare general image
-    pMap = QPixmap(width(), height());
-    pMap.fill(Qt::transparent);
-    pMap.setMask(bmpMask);
-}
-
-void UBMagnifier::setZoom(qreal zoom) 
-{
-    params.zoom = zoom;
-}
-
-void UBMagnifier::paintEvent(QPaintEvent * event)
-{
-    Q_UNUSED(event);
-    QPainter painter(this);
-
-    painter.setRenderHint(QPainter::Antialiasing);
-    painter.setPen(Qt::NoPen);
-
-    if (m_isInteractive)
-    {
-        painter.setBrush(QColor(127, 127, 127, 127));
-        painter.drawRoundedRect(QRectF(size().width() / 2, size().height() / 2, ( size().width() - sClosePixmap->width() ) / 2, ( size().height() - sClosePixmap->width() ) / 2), 15, 15);
-
-        painter.setBrush(QColor(190, 190, 190, 255));
-        painter.drawEllipse(QPoint( size().width() / 2, size().height() / 2), ( size().width() - sClosePixmap->width() ) / 2, ( size().height() -  sClosePixmap->height() ) / 2);
-
-        painter.drawPixmap(size().width() - sClosePixmap->width(), size().height() / 2 + sClosePixmap->height() * 1, *sClosePixmap);
-        painter.drawPixmap(size().width() - sIncreasePixmap->width(), size().height() / 2 + sIncreasePixmap->height() * 2.5, *sIncreasePixmap);
-        painter.drawPixmap(size().width() - sDecreasePixmap->width(), size().height() / 2 + sDecreasePixmap->height() * 3.6, *sDecreasePixmap);
-
-        painter.drawPixmap(size().width() - mResizeItem->width() - 20, size().height() - mResizeItem->height() - 20, *mResizeItem);
-    }
-    else
-    {
-        painter.setBrush(QColor(127, 127, 127, 127));
-        painter.drawEllipse(QPoint( size().width() / 2, size().height() / 2), ( size().width() - sClosePixmap->width() ) / 2, ( size().height() -  sClosePixmap->height() ) / 2);
-    }
-
-    painter.drawPixmap(0, 0, pMap);
-}
-
-void UBMagnifier::mousePressEvent ( QMouseEvent * event )
-{
-    if(m_isInteractive)
-    {
-
-        QWidget::mousePressEvent(event);
-
-        if (event->pos().x() >= size().width() - mResizeItem->width() - 20 && 
-            event->pos().x() < size().width() - 20 && 
-            event->pos().y() >= size().height() - mResizeItem->height() - 20 && 
-            event->pos().y() < size().height() - - 20)
-        {
-            mShouldResizeWidget = true;
-        }
-        else
-        {
-            mShouldMoveWidget = !event->isAccepted() && (event->buttons() & Qt::LeftButton);
-        }
-
-        mMousePressPos = event->pos();
-        mMousePressDelta = (qreal)updPointGrab.x() + (qreal)size().width() / 2 - (qreal)event->globalPos().x();
-
-        event->accept();
-
-        update();
-    }
-    else
-        event->ignore();
-}
-
-void UBMagnifier::mouseMoveEvent ( QMouseEvent * event )
-{
-    if(m_isInteractive)
-    {
-        if(mShouldMoveWidget && (event->buttons() & Qt::LeftButton))
-        {
-            move(pos() - mMousePressPos + event->pos());
-            event->accept();
-
-            QWidget::mouseMoveEvent(event);
-            emit magnifierMoved_Signal(QPoint(this->pos().x() + size().width() / 2, this->pos().y() + size().height() / 2 ));
-            return;
-        }
-    
-        if(mShouldResizeWidget && (event->buttons() & Qt::LeftButton))
-        {
-
-            QPoint currGlobalPos = event->globalPos();
-            qreal cvW = mView->width();
-
-            qreal newXSize = ( currGlobalPos.x() + mMousePressDelta - updPointGrab.x() ) * 2;
-            qreal newPercentSize = newXSize * 100 / cvW;
-
-            emit magnifierResized_Signal(newPercentSize);
-
-            event->ignore();
-            return;
-        }
-
-        if (event->pos().x() >= size().width() - mResizeItem->width() - 20 && 
-            event->pos().x() < size().width() - 20 && 
-            event->pos().y() >= size().height() - mResizeItem->height() - 20 && 
-            event->pos().y() < size().height() - - 20 &&
-            isCusrsorAlreadyStored == false
-           )
-        {
-            mOldCursor = cursor();
-            isCusrsorAlreadyStored = true;
-            setCursor(mResizeCursor);
-        }
-
-    }
-    else
-        event->ignore();
-}
-
-
-void UBMagnifier::mouseReleaseEvent(QMouseEvent * event)
-{
-    if(m_isInteractive)
-    {
-        mShouldMoveWidget = false;
-        mShouldResizeWidget = false;
-
-        if (event->pos().x() >= size().width() - sClosePixmap->width() && 
-            event->pos().x() < size().width()&& 
-            event->pos().y() >= size().height() / 2 + sClosePixmap->height() * 1 && 
-            event->pos().y() < size().height() / 2 + sClosePixmap->height() * 2)
-        {
-            event->accept();
-            emit magnifierClose_Signal();
-        }
-        else
-        if (event->pos().x() >= size().width() - sIncreasePixmap->width() && 
-            event->pos().x() < size().width()&& 
-            event->pos().y() >= size().height() / 2 + sIncreasePixmap->height() * 2.5 && 
-            event->pos().y() < size().height() / 2 + sIncreasePixmap->height() * 3.5)
-        {
-            event->accept();
-            emit magnifierZoomIn_Signal();
-        }
-        else
-        if (event->pos().x() >= size().width() - sDecreasePixmap->width() && 
-            event->pos().x() < size().width()&& 
-            event->pos().y() >= size().height() / 2 + sDecreasePixmap->height() * 3.6 && 
-            event->pos().y() < size().height() / 2 + sDecreasePixmap->height() * 4.6)
-        {
-            event->accept();
-            emit magnifierZoomOut_Signal();
-        }
-        else
-            QWidget::mouseReleaseEvent(event); // don't propgate to parent, the widget is deleted in UBApplication::boardController->removeTool
-    }
-    else
-        event->ignore();
-
-}
-
-void UBMagnifier::slot_refresh()
-{
-    if(!(updPointGrab.isNull())) 
-        grabPoint(updPointGrab);
-
-    if(isCusrsorAlreadyStored)
-    {
-        QPoint globalCursorPos = QCursor::pos();
-        QPoint cursorPos = mapFromGlobal(globalCursorPos);
-        if (cursorPos.x() < size().width() - mResizeItem->width() - 20 || 
-            cursorPos.x() > size().width() - 20 ||
-            cursorPos.y() < size().height() - mResizeItem->height() - 20 ||
-            cursorPos.y() > size().height() - - 20
-            )
-        {
-            isCusrsorAlreadyStored = false;
-            setCursor(mOldCursor);
-        }
-    }
-}
-
-void UBMagnifier::grabPoint()
-{
-    QMatrix transM = UBApplication::boardController->controlView()->matrix();
-    QPointF itemPos = gView->mapFromGlobal(updPointGrab);
-
-    qreal zWidth = width() / (params.zoom * transM.m11());
-    qreal zWidthHalf = zWidth / 2;
-    qreal zHeight = height() / (params.zoom * transM.m22());
-    qreal zHeightHalf = zHeight / 2;
-    
-
-    QPointF pfScLtF(UBApplication::boardController->controlView()->mapToScene(QPoint(itemPos.x(), itemPos.y())));
-   
-    float x = pfScLtF.x() - zWidthHalf;
-    float y = pfScLtF.y() - zHeightHalf;
-
-    QPointF leftTop(x,y);
-    QPointF rightBottom(x + zWidth, y + zHeight);  
-    QRectF srcRect(leftTop, rightBottom);
-
-    QPixmap newPixMap(QSize(width(), height()));
-    QPainter painter(&newPixMap);
-
-    UBApplication::boardController->activeScene()->render(&painter, QRectF(0,0,width(),height()), srcRect);
-    painter.end();
-    
-    pMap.fill(Qt::transparent);
-    pMap = newPixMap.scaled(QSize(width(), height()));
-    pMap.setMask(bmpMask);
-
-    update();
-}
-
-void UBMagnifier::grabPoint(const QPoint &pGrab)
-{
-    QMatrix transM = UBApplication::boardController->controlView()->matrix();
-    updPointGrab = pGrab;
-    QPointF itemPos = gView->mapFromGlobal(pGrab);
-
-    qreal zWidth = width() / (params.zoom * transM.m11());
-    qreal zWidthHalf = zWidth / 2;
-    qreal zHeight = height() / (params.zoom * transM.m22());
-    qreal zHeightHalf = zHeight / 2;
-    
-
-    QPointF pfScLtF(UBApplication::boardController->controlView()->mapToScene(QPoint(itemPos.x(), itemPos.y())));
-   
-    float x = pfScLtF.x() - zWidthHalf;
-    float y = pfScLtF.y() - zHeightHalf;
-
-    QPointF leftTop(x,y);
-    QPointF rightBottom(x + zWidth, y + zHeight);  
-    QRectF srcRect(leftTop, rightBottom);
-
-    QPixmap newPixMap(QSize(width(), height()));
-    QPainter painter(&newPixMap);
-
-    UBApplication::boardController->activeScene()->render(&painter, QRectF(0,0,width(),height()), srcRect);   
-    painter.end();
-    
-   // pMap.fill(Qt::transparent);
-    pMap = newPixMap;
-    pMap.setMask(bmpMask);
-
-    update();
-}
-
-
-
-// from global
-void UBMagnifier::grabNMove(const QPoint &pGrab, const QPoint &pMove, bool needGrab, bool needMove)
-{
-    updPointGrab = pGrab;
-    updPointMove = pMove;
-
-    if(needGrab)
-        grabPoint(pGrab);
-
-    if(needMove)
-    {
-        QPoint movePos = mView->mapFromGlobal(pMove);
-        move(movePos.x() - width()/2, movePos.y() - height()/2);
-        //    move(itemPos.x(), itemPos.y());
-    }
-}
-
-void UBMagnifier::setGrabView(QWidget *view)
-{   
-    gView = view;
-    mRefreshTimer.setInterval(40);
-    mRefreshTimer.start();
-}
-
+
+
+
+#include <QtGui>
+#include "UBMagnifer.h"
+
+#include "core/UBApplication.h"
+#include "board/UBBoardController.h"
+#include "domain/UBGraphicsScene.h"
+#include "board/UBBoardView.h"
+
+#include "core/memcheck.h"
+
+
+UBMagnifier::UBMagnifier(QWidget *parent, bool isInteractive)
+    : QWidget(parent, parent ? Qt::Widget : Qt::Tool | (Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint))
+    , mShouldMoveWidget(false)
+    , mShouldResizeWidget(false)
+    , borderPen(Qt::darkGray)
+    , gView(0)
+    , mView(0)
+{
+    isCusrsorAlreadyStored = false;
+    setMouseTracking(true);
+
+    //--------------------------------------------------//
+
+    QPixmap pix(":/images/cursors/resize.png");
+    QTransform tr;
+    tr.rotate(45);
+    mResizeCursor  = QCursor(pix.transformed(tr, Qt::SmoothTransformation), pix.width() / 2,  pix.height() / 2);
+
+    //--------------------------------------------------//
+
+    params.sizePercentFromScene = 20;
+    m_isInteractive = isInteractive;
+    sClosePixmap = new QPixmap(":/images/close.svg");
+    sIncreasePixmap = new QPixmap(":/images/increase.svg");
+    sDecreasePixmap = new QPixmap(":/images/decrease.svg");
+    mResizeItem = new QPixmap(":/images/resize.svg");
+    sChangeModePixmap = new QPixmap();
+
+    setDrawingMode(UBSettings::settings()->magnifierDrawingMode->get().toInt());
+
+    if (parent)
+    {
+        setAttribute(Qt::WA_NoMousePropagation);
+    }
+    else
+    {
+        // standalone window
+        // !!!! Should be included into Windows after QT recompilation
+#ifndef Q_WS_WIN
+//        setAttribute(Qt::WA_TranslucentBackground);
+        setAttribute(Qt::WA_MacAlwaysShowToolWindow);
+#endif
+#ifdef Q_WS_MAC
+        setAttribute(Qt::WA_MacAlwaysShowToolWindow);
+        setAttribute(Qt::WA_MacNonActivatingToolWindow);
+        setAttribute(Qt::WA_MacNoShadow);
+#endif
+    }
+
+    connect(&mRefreshTimer, SIGNAL(timeout()), this, SLOT(slot_refresh()));
+}
+
+UBMagnifier::~UBMagnifier()
+{
+    if(sClosePixmap)
+    {
+        delete sClosePixmap;
+        sClosePixmap = NULL;
+    }
+
+    if(sIncreasePixmap)
+    {
+        delete sIncreasePixmap;
+        sIncreasePixmap = NULL;
+    }
+
+    if(sDecreasePixmap)
+    {
+        delete sDecreasePixmap;
+        sDecreasePixmap = NULL;
+    }
+
+    if (sChangeModePixmap)
+    {
+        delete sChangeModePixmap;
+        sChangeModePixmap = NULL;
+    }
+}
+
+void UBMagnifier::setSize(qreal percentFromScene)
+{
+    if(gView == NULL || mView == NULL) return;
+
+    // calculate object size
+    params.sizePercentFromScene = percentFromScene;
+    QSize sceneSize = mView->size();
+    qreal size = params.sizePercentFromScene * sceneSize.width() / 100;
+
+    QRect currGeom = geometry();
+    if (circular == mDrawingMode)
+    {
+        if(currGeom.width() == currGeom.height())
+        {
+            QPoint newPos = mView->mapFromGlobal(updPointMove);
+            setGeometry(newPos.x() - size / 2, newPos.y() - size / 2, size, size);
+        }
+        else
+            setGeometry(0, 0, size, size);
+    }
+    else if (rectangular == mDrawingMode)
+    {
+        QPoint newPos = mView->mapFromGlobal(updPointMove);
+        setGeometry(newPos.x() - size / 2, newPos.y() - size / 2 / 3, size, size/3);
+    }
+
+    calculateButtonsPositions();
+    createMask();
+
+}
+
+void UBMagnifier::createMask()
+{
+    if(gView == NULL || mView == NULL) return;
+
+    // calculate object size
+    QSize sceneSize = mView->size();
+    qreal isize = params.sizePercentFromScene * sceneSize.width() / 100;
+
+    QImage mask_img(width(), height(), QImage::Format_Mono);
+    mask_img.fill(0xff);
+    QPainter mask_ptr(&mask_img);
+    mask_ptr.setBrush( QBrush( QColor(0, 0, 0) ) );
+
+    if (circular == mDrawingMode)
+        mask_ptr.drawEllipse(QPointF(isize/2, isize/2), isize / 2 - sClosePixmap->width(), isize / 2 - sClosePixmap->width());
+    else if (rectangular == mDrawingMode)
+        mask_ptr.drawRoundedRect(QRect(sClosePixmap->width(), sClosePixmap->width(), size().width() - 2*sClosePixmap->width(), size().height() - 2*sClosePixmap->width()), sClosePixmap->width()/2, sClosePixmap->width()/2);
+
+    bmpMask = QBitmap::fromImage(mask_img);
+
+    pMap = QPixmap(width(), height());
+    pMap.fill(Qt::transparent);
+    pMap.setMask(bmpMask);
+}
+
+void UBMagnifier::setZoom(qreal zoom)
+{
+    params.zoom = zoom;
+}
+
+
+void UBMagnifier::calculateButtonsPositions()
+{
+    m_iButtonInterval = 5;
+    mResizeItemButtonRect = QRect(size().width() - 1.5*mResizeItem->width() - m_iButtonInterval, size().height() - 1.5*mResizeItem->height() - m_iButtonInterval, mResizeItem->width(), mResizeItem->height());
+    sClosePixmapButtonRect = QRect(mResizeItemButtonRect.x() - sChangeModePixmap->width() - 3*m_iButtonInterval, size().height() - sChangeModePixmap->height(), sChangeModePixmap->width(), sChangeModePixmap->height());
+    sChangeModePixmapButtonRect = QRect(sClosePixmapButtonRect.x() - sChangeModePixmap->width() - m_iButtonInterval, size().height() - sChangeModePixmap->height(), sChangeModePixmap->width(), sChangeModePixmap->height());
+    sDecreasePixmapButtonRect = QRect(sChangeModePixmapButtonRect.x() - sChangeModePixmap->width() - m_iButtonInterval, size().height() - sDecreasePixmap->height(), sDecreasePixmap->width(), sDecreasePixmap->height());
+    sIncreasePixmapButtonRect = QRect(sDecreasePixmapButtonRect.x() - sChangeModePixmap->width() - m_iButtonInterval, size().height() - sIncreasePixmap->height(), sIncreasePixmap->width(), sIncreasePixmap->height());
+}
+
+void UBMagnifier::paintEvent(QPaintEvent * event)
+{
+    Q_UNUSED(event);
+    QPainter painter(this);
+
+    painter.setRenderHint(QPainter::Antialiasing);
+    painter.setPen(Qt::NoPen);
+
+    if (m_isInteractive)
+    {
+        painter.setBrush(QColor(127, 127, 127, 127));
+        painter.drawRoundedRect(QRectF(size().width() / 2, size().height() / 2, ( size().width() - sClosePixmap->width() ) / 2, ( size().height() - sClosePixmap->width() ) / 2), 15, 15);
+    }
+
+    painter.setBrush(QColor(190, 190, 190, 255));
+    if (circular == mDrawingMode)
+    {
+        painter.drawEllipse(QPoint(size().width() / 2, size().height() / 2), ( size().width() - sClosePixmap->width() ) / 2, ( size().height() -  sClosePixmap->height() ) / 2);
+    }
+    else if (rectangular == mDrawingMode)
+    {
+        QRect r = QRect(sClosePixmap->width()/2, sClosePixmap->width()/2, size().width()- sClosePixmap->width(), size().height() - sClosePixmap->width());
+        painter.drawRoundedRect(r, sClosePixmap->width()/2, sClosePixmap->width()/2);
+    }
+
+    painter.drawPixmap(0, 0, pMap);
+
+    if (m_isInteractive)
+    {
+        painter.setBrush(QColor(190, 190, 190, 255));
+        painter.drawPixmap(sClosePixmapButtonRect.topLeft(), *sClosePixmap);
+        painter.drawPixmap(sIncreasePixmapButtonRect.topLeft(), *sIncreasePixmap);
+        painter.drawPixmap(sDecreasePixmapButtonRect.topLeft(), *sDecreasePixmap);
+        painter.drawPixmap(sChangeModePixmapButtonRect.topLeft(), *sChangeModePixmap);
+        painter.drawPixmap(mResizeItemButtonRect.topLeft(), *mResizeItem);
+    }
+}
+
+void UBMagnifier::mousePressEvent ( QMouseEvent * event )
+{
+    if(m_isInteractive)
+    {
+
+        QWidget::mousePressEvent(event);
+
+        if (event->pos().x() >= size().width() - mResizeItem->width() - 14 &&
+            event->pos().x() < size().width() - 14 &&
+            event->pos().y() >= size().height() - mResizeItem->height() - 14 &&
+            event->pos().y() < size().height() - - 14)
+        {
+            mShouldResizeWidget = true;
+        }
+        else
+        {
+            mShouldMoveWidget = !event->isAccepted() && (event->buttons() & Qt::LeftButton);
+        }
+
+        mMousePressPos = event->pos();
+        mMousePressDelta = (qreal)updPointGrab.x() + (qreal)size().width() / 2 - (qreal)event->globalPos().x();
+
+        event->accept();
+
+        update();
+    }
+    else
+        event->ignore();
+}
+
+void UBMagnifier::mouseMoveEvent ( QMouseEvent * event )
+{
+    if(m_isInteractive)
+    {
+        if(mShouldMoveWidget && (event->buttons() & Qt::LeftButton))
+        {
+            move(pos() - mMousePressPos + event->pos());
+            event->accept();
+
+            QWidget::mouseMoveEvent(event);
+            emit magnifierMoved_Signal(QPoint(this->pos().x() + size().width() / 2, this->pos().y() + size().height() / 2 ));
+            return;
+        }
+
+        if(mShouldResizeWidget && (event->buttons() & Qt::LeftButton))
+        {
+
+            QPoint currGlobalPos = event->globalPos();
+            qreal cvW = mView->width();
+
+            qreal newXSize = ( currGlobalPos.x() + mMousePressDelta - updPointGrab.x() ) * 2;
+            qreal newPercentSize = newXSize * 100 / cvW;
+
+            emit magnifierResized_Signal(newPercentSize);
+
+            event->ignore();
+            return;
+        }
+
+        if (mResizeItemButtonRect.contains(event->pos())&&
+            isCusrsorAlreadyStored == false
+           )
+        {
+            mOldCursor = cursor();
+            isCusrsorAlreadyStored = true;
+            setCursor(mResizeCursor);
+        }
+
+    }
+    else
+        event->ignore();
+}
+
+
+void UBMagnifier::mouseReleaseEvent(QMouseEvent * event)
+{
+    if(m_isInteractive)
+    {
+        mShouldMoveWidget = false;
+        mShouldResizeWidget = false;
+
+        if (sClosePixmapButtonRect.contains(event->pos()))
+        {
+            event->accept();
+            emit magnifierClose_Signal();
+        }
+        else
+        if (sIncreasePixmapButtonRect.contains(event->pos()))
+        {
+            event->accept();
+            emit magnifierZoomIn_Signal();
+        }
+        else
+        if (sDecreasePixmapButtonRect.contains(event->pos()))
+        {
+            event->accept();
+            emit magnifierZoomOut_Signal();
+        }
+        else
+        if (sChangeModePixmapButtonRect.contains(event->pos()))
+        {
+            event->accept();
+            emit magnifierDrawingModeChange_Signal(static_cast<int>(mDrawingMode+1)%modesCount);
+        }
+        else
+            QWidget::mouseReleaseEvent(event); // don't propgate to parent, the widget is deleted in UBApplication::boardController->removeTool
+    }
+    else
+        event->ignore();
+
+}
+
+void UBMagnifier::slot_refresh()
+{
+    if(!(updPointGrab.isNull()))
+        grabPoint(updPointGrab);
+
+    if(isCusrsorAlreadyStored)
+    {
+        QPoint globalCursorPos = QCursor::pos();
+        QPoint cursorPos = mapFromGlobal(globalCursorPos);
+        if (cursorPos.x() < size().width() - mResizeItem->width() - 14 ||
+            cursorPos.x() > size().width() - 14 ||
+            cursorPos.y() < size().height() - mResizeItem->height() - 14 ||
+            cursorPos.y() > size().height() - - 14
+            )
+        {
+            isCusrsorAlreadyStored = false;
+            setCursor(mOldCursor);
+        }
+    }
+}
+
+void UBMagnifier::grabPoint()
+{
+    QMatrix transM = UBApplication::boardController->controlView()->matrix();
+    QPointF itemPos = gView->mapFromGlobal(updPointGrab);
+
+    qreal zWidth = width() / (params.zoom * transM.m11());
+    qreal zWidthHalf = zWidth / 2;
+    qreal zHeight = height() / (params.zoom * transM.m22());
+    qreal zHeightHalf = zHeight / 2;
+
+
+    QPointF pfScLtF(UBApplication::boardController->controlView()->mapToScene(QPoint(itemPos.x(), itemPos.y())));
+
+    float x = pfScLtF.x() - zWidthHalf;
+    float y = pfScLtF.y() - zHeightHalf;
+
+    QPointF leftTop(x,y);
+    QPointF rightBottom(x + zWidth, y + zHeight);
+    QRectF srcRect(leftTop, rightBottom);
+
+    QPixmap newPixMap(QSize(width(), height()));
+    QPainter painter(&newPixMap);
+
+    UBApplication::boardController->activeScene()->render(&painter, QRectF(0,0,width(),height()), srcRect);
+    painter.end();
+
+    pMap.fill(Qt::transparent);
+    pMap = newPixMap.scaled(QSize(width(), height()));
+    pMap.setMask(bmpMask);
+
+    update();
+}
+
+void UBMagnifier::grabPoint(const QPoint &pGrab)
+{
+    QMatrix transM = UBApplication::boardController->controlView()->matrix();
+    updPointGrab = pGrab;
+    QPointF itemPos = gView->mapFromGlobal(pGrab);
+
+    qreal zWidth = width() / (params.zoom * transM.m11());
+    qreal zWidthHalf = zWidth / 2;
+    qreal zHeight = height() / (params.zoom * transM.m22());
+    qreal zHeightHalf = zHeight / 2;
+
+
+    QPointF pfScLtF(UBApplication::boardController->controlView()->mapToScene(QPoint(itemPos.x(), itemPos.y())));
+
+    float x = pfScLtF.x() - zWidthHalf;
+    float y = pfScLtF.y() - zHeightHalf;
+
+    QPointF leftTop(x,y);
+    QPointF rightBottom(x + zWidth, y + zHeight);
+    QRectF srcRect(leftTop, rightBottom);
+
+    QPixmap newPixMap(QSize(width(), height()));
+    QPainter painter(&newPixMap);
+
+    UBApplication::boardController->activeScene()->render(&painter, QRectF(0,0,width(),height()), srcRect);
+    painter.end();
+
+   // pMap.fill(Qt::transparent);
+    pMap = newPixMap;
+    pMap.setMask(bmpMask);
+
+    update();
+}
+
+
+
+// from global
+void UBMagnifier::grabNMove(const QPoint &pGrab, const QPoint &pMove, bool needGrab, bool needMove)
+{
+    QPoint pointToGrab = pGrab;
+    updPointGrab = pointToGrab;
+    updPointMove = pMove;
+
+    if(needGrab)
+        grabPoint(pointToGrab);
+
+    if(needMove)
+    {
+        QPoint movePos = mView->mapFromGlobal(pMove);
+        move(movePos.x() - width()/2, movePos.y() - height()/2);
+        //    move(itemPos.x(), itemPos.y());
+    }
+}
+
+void UBMagnifier::setGrabView(QWidget *view)
+{
+    gView = view;
+    mRefreshTimer.setInterval(40);
+    mRefreshTimer.start();
+}
+
+void UBMagnifier::setDrawingMode(int mode)
+{
+    mDrawingMode = static_cast<DrawingMode>(mode);
+
+    QString sMode;
+
+    if (circular == mDrawingMode)
+    {
+        sMode = "roundeRrectangle";
+        resize(width(), width());
+    }
+
+    if (rectangular == mDrawingMode)
+    {
+        sMode = "circle";
+        resize(width(), height()/3);
+
+        if (mView)
+        {
+            qreal newPercentSize = size().width()/3 * 100 / mView->width();
+            emit magnifierResized_Signal(newPercentSize);
+        }
+    }
+
+    sChangeModePixmap->load(":/images/"+sMode+".svg");
+
+    calculateButtonsPositions();
+    if (mView && gView)
+        UBApplication::boardController->controlView()->scene()->moveMagnifier();
+
+    createMask();
+
+    UBSettings::settings()->magnifierDrawingMode->set(mode);
+}
diff --git a/Sankore-3.1/src/gui/UBMagnifer.h b/Sankore-3.1/src/gui/UBMagnifer.h
index 9e92692..fbb6c1b 100644
--- a/Sankore-3.1/src/gui/UBMagnifer.h
+++ b/Sankore-3.1/src/gui/UBMagnifer.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,87 +18,110 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBMAGNIFIER_H
-#define UBMAGNIFIER_H
-
-#include <QtGui>
-
-class UBMagnifierParams
-{
-public :
-    int x;
-    int y;
-    qreal zoom;
-    qreal sizePercentFromScene;
-};
-
-class UBMagnifier : public QWidget
-{
-    Q_OBJECT
-
-public:
-    UBMagnifier(QWidget *parent = 0, bool isInteractive = false);
-    ~UBMagnifier();
-
-    void setSize(qreal percentFromScene);
-    void setZoom(qreal zoom);
-
-    void setGrabView(QWidget *view);
-    void setMoveView(QWidget *view) {mView = view;}
-
-    void grabPoint();
-    void grabPoint(const QPoint &point);
-    void grabNMove(const QPoint &pGrab, const QPoint &pMove, bool needGrab = true, bool needMove = true);
-
-    UBMagnifierParams params;
-
-signals:
-    void magnifierMoved_Signal(QPoint newPos);
-    void magnifierClose_Signal();
-    void magnifierZoomIn_Signal();
-    void magnifierZoomOut_Signal();
-    void magnifierResized_Signal(qreal newPercentSize);
-    
-public slots:
-    void slot_refresh();
-
-protected:
-    void paintEvent(QPaintEvent *);
-
-    virtual void mousePressEvent ( QMouseEvent * event );
-    virtual void mouseMoveEvent ( QMouseEvent * event );
-    virtual void mouseReleaseEvent ( QMouseEvent * event );
-
-    QPoint mMousePressPos;
-    qreal mMousePressDelta;
-    bool mShouldMoveWidget;
-    bool mShouldResizeWidget;
-
-
-    QPixmap *sClosePixmap;
-    QPixmap *sIncreasePixmap;
-    QPixmap *sDecreasePixmap;
-    QPixmap *mResizeItem;
-
-    bool isCusrsorAlreadyStored;
-    QCursor mOldCursor;
-    QCursor mResizeCursor;
-
-private:
-    QTimer mRefreshTimer;
-    bool m_isInteractive;
-
-    QPoint updPointGrab;
-    QPoint updPointMove;
-    
-    QPixmap pMap;
-    QBitmap bmpMask;
-    QPen borderPen;
-
-    QWidget *gView;
-    QWidget *mView;
-};
-
-#endif // UBMAGNIFIER_H
+
+
+
+#ifndef UBMAGNIFIER_H
+#define UBMAGNIFIER_H
+
+#include <QtGui>
+
+class UBMagnifierParams
+{
+public :
+    int x;
+    int y;
+    qreal zoom;
+    qreal sizePercentFromScene;
+};
+
+class UBMagnifier : public QWidget
+{
+    Q_OBJECT
+
+public:
+    enum DrawingMode
+    {
+        circular = 0,
+        rectangular,
+        modesCount // should me last.
+    };
+
+public:
+    UBMagnifier(QWidget *parent = 0, bool isInteractive = false);
+    ~UBMagnifier();
+
+    void setSize(qreal percentFromScene);
+    void createMask();
+    void setZoom(qreal zoom);
+
+    void setGrabView(QWidget *view);
+    void setMoveView(QWidget *view) {mView = view;}
+    void setDrawingMode(int mode);
+
+    void grabPoint();
+    void grabPoint(const QPoint &point);
+    void grabNMove(const QPoint &pGrab, const QPoint &pMove, bool needGrab = true, bool needMove = true);
+
+    UBMagnifierParams params;
+
+signals:
+    void magnifierMoved_Signal(QPoint newPos);
+    void magnifierClose_Signal();
+    void magnifierZoomIn_Signal();
+    void magnifierZoomOut_Signal();
+    void magnifierResized_Signal(qreal newPercentSize);
+    void magnifierDrawingModeChange_Signal(int mode);
+
+public slots:
+    void slot_refresh();
+
+private:
+    void calculateButtonsPositions();
+
+protected:
+    void paintEvent(QPaintEvent *);
+
+    virtual void mousePressEvent ( QMouseEvent * event );
+    virtual void mouseMoveEvent ( QMouseEvent * event );
+    virtual void mouseReleaseEvent ( QMouseEvent * event );
+
+    QPoint mMousePressPos;
+    qreal mMousePressDelta;
+    bool mShouldMoveWidget;
+    bool mShouldResizeWidget;
+
+    int m_iButtonInterval;
+    QPixmap *sClosePixmap;
+    QRect sClosePixmapButtonRect;
+    QPixmap *sIncreasePixmap;
+    QRect sIncreasePixmapButtonRect;
+    QPixmap *sDecreasePixmap;
+    QRect sDecreasePixmapButtonRect;
+    QPixmap *sChangeModePixmap;
+    QRect sChangeModePixmapButtonRect;
+    QPixmap *mResizeItem;
+    QRect mResizeItemButtonRect;
+
+    bool isCusrsorAlreadyStored;
+    QCursor mOldCursor;
+    QCursor mResizeCursor;
+
+private:
+    DrawingMode mDrawingMode;
+
+    QTimer mRefreshTimer;
+    bool m_isInteractive;
+
+    QPoint updPointGrab;
+    QPoint updPointMove;
+    
+    QPixmap pMap;
+    QBitmap bmpMask;
+    QPen borderPen;
+
+    QWidget *gView;
+    QWidget *mView;
+};
+
+#endif // UBMAGNIFIER_H
diff --git a/Sankore-3.1/src/gui/UBMainWindow.cpp b/Sankore-3.1/src/gui/UBMainWindow.cpp
index 8634a2d..61f77f9 100644
--- a/Sankore-3.1/src/gui/UBMainWindow.cpp
+++ b/Sankore-3.1/src/gui/UBMainWindow.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,12 +20,17 @@
  */
 
 
+
 #include <QtGui>
 
 #include "UBMainWindow.h"
 #include "core/UBApplication.h"
 #include "core/UBApplicationController.h"
 #include "board/UBBoardController.h"
+// work around for handling tablet events on MAC OS with Qt 4.8.0 and above
+#if defined(Q_WS_MACX)
+#include "board/UBBoardView.h"
+#endif
 
 #include "core/memcheck.h"
 
@@ -144,6 +149,34 @@ void UBMainWindow::closeEvent(QCloseEvent *event)
     emit closeEvent_Signal(event);
 }
 
+// work around for handling tablet events on MAC OS with Qt 4.8.0 and above
+#if defined(Q_WS_MACX)
+bool UBMainWindow::event(QEvent *event)
+{
+    bool bRes = QMainWindow::event(event);
+
+    if (NULL != UBApplication::boardController)
+    {
+        UBBoardView *controlV = UBApplication::boardController->controlView();
+        if (controlV && controlV->isVisible())
+        {
+            switch (event->type())
+            {
+            case QEvent::TabletEnterProximity:
+            case QEvent::TabletLeaveProximity:
+            case QEvent::TabletMove:
+            case QEvent::TabletPress:
+            case QEvent::TabletRelease:
+                {
+                    return controlV->directTabletEvent(event);
+                }
+            }
+        }
+    }
+    return bRes;
+}
+#endif
+
 void UBMainWindow::onExportDone()
 {
     // HACK :  When opening the file save dialog during the document exportation,
diff --git a/Sankore-3.1/src/gui/UBMainWindow.h b/Sankore-3.1/src/gui/UBMainWindow.h
index e902169..c5cbc9b 100644
--- a/Sankore-3.1/src/gui/UBMainWindow.h
+++ b/Sankore-3.1/src/gui/UBMainWindow.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBMAINWINDOW_H_
 #define UBMAINWINDOW_H_
 
@@ -82,6 +83,10 @@ class UBMainWindow : public QMainWindow, public Ui::MainWindow
         QWidget *mDocumentsWidget;
 
 private:
+// work around for handling tablet events on MAC OS with Qt 4.8.0 and above
+#if defined(Q_WS_MACX)
+        bool event(QEvent *event);
+#endif
         UBDownloadWidget* mpDownloadWidget;
 };
 
diff --git a/Sankore-3.1/src/gui/UBMessageWindow.cpp b/Sankore-3.1/src/gui/UBMessageWindow.cpp
index 475e6dc..16b467f 100644
--- a/Sankore-3.1/src/gui/UBMessageWindow.cpp
+++ b/Sankore-3.1/src/gui/UBMessageWindow.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBMessageWindow.h"
 
 #include "UBSpinningWheel.h"
diff --git a/Sankore-3.1/src/gui/UBMessageWindow.h b/Sankore-3.1/src/gui/UBMessageWindow.h
index 257522e..33e7d4d 100644
--- a/Sankore-3.1/src/gui/UBMessageWindow.h
+++ b/Sankore-3.1/src/gui/UBMessageWindow.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBMESSAGEWINDOW_H_
 #define UBMESSAGEWINDOW_H_
 
diff --git a/Sankore-3.1/src/gui/UBMessagesDialog.cpp b/Sankore-3.1/src/gui/UBMessagesDialog.cpp
index 7def0b3..09fd904 100644
--- a/Sankore-3.1/src/gui/UBMessagesDialog.cpp
+++ b/Sankore-3.1/src/gui/UBMessagesDialog.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBMessagesDialog.h"
 
 UBMessagesDialog::UBMessagesDialog(QString windowTitle, QWidget *parent)
diff --git a/Sankore-3.1/src/gui/UBMessagesDialog.h b/Sankore-3.1/src/gui/UBMessagesDialog.h
index d3b8738..cefce27 100644
--- a/Sankore-3.1/src/gui/UBMessagesDialog.h
+++ b/Sankore-3.1/src/gui/UBMessagesDialog.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UB_MESSAGES_DIALOG_H_
 #define UB_MESSAGES_DIALOG_H_
 
diff --git a/Sankore-3.1/src/gui/UBMousePressFilter.cpp b/Sankore-3.1/src/gui/UBMousePressFilter.cpp
index db3a63d..a1a74e9 100644
--- a/Sankore-3.1/src/gui/UBMousePressFilter.cpp
+++ b/Sankore-3.1/src/gui/UBMousePressFilter.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBMousePressFilter.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/gui/UBMousePressFilter.h b/Sankore-3.1/src/gui/UBMousePressFilter.h
index 211c163..4dc6f90 100644
--- a/Sankore-3.1/src/gui/UBMousePressFilter.h
+++ b/Sankore-3.1/src/gui/UBMousePressFilter.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBMOUSEPRESSFILTER_H_
 #define UBMOUSEPRESSFILTER_H_
 
diff --git a/Sankore-3.1/src/gui/UBNavigatorPalette.cpp b/Sankore-3.1/src/gui/UBNavigatorPalette.cpp
index c679368..cb8be62 100644
--- a/Sankore-3.1/src/gui/UBNavigatorPalette.cpp
+++ b/Sankore-3.1/src/gui/UBNavigatorPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,135 +18,136 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBNavigatorPalette.h"
-#include "core/UBApplication.h"
-#include "board/UBBoardController.h"
-
-#include "core/memcheck.h"
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the object name
- */
-UBNavigatorPalette::UBNavigatorPalette(QWidget *parent, const char *name):
-	UBDockPalette(eUBDockPaletteType_LEFT, parent, name)
-	, mNavigator(NULL)
-	, mLayout(NULL)
-    , mHLayout(NULL)
-    , mPageNbr(NULL)
-    , mClock(NULL)
-{
-    // Build the gui
-    mLayout = new QVBoxLayout(this);
-    mLayout->setContentsMargins(customMargin(), customMargin(), 2*border() + customMargin(), customMargin());
-    setLayout(mLayout);
-
-    mNavigator = new UBDocumentNavigator(this);
-    mNavigator->setStyleSheet(QString("background-color : transparent;"));
-    mLayout->addWidget(mNavigator, 1);
-
-    mHLayout = new QHBoxLayout();
-    mLayout->addLayout(mHLayout, 0);
-
-    mPageNbr = new QLabel(this);
-    mClock = new QLabel(this);
-    mHLayout->addWidget(mPageNbr);
-    mHLayout->addWidget(mClock);
-
-    // Configure the page number indicator
-    mPageNbr->setStyleSheet(QString("QLabel { color: white; background-color: transparent; border: none; font-family: Arial; font-weight: bold; font-size: 20px }"));
-    setPageNumber(0, 0);
-    mPageNbr->setAlignment(Qt::AlignHCenter);
-
-    // Configure the clock
-    mClock->setStyleSheet(QString("QLabel {color: white; background-color: transparent; text-align: center; font-family: Arial; font-weight: bold; font-size: 20px}"));
-    mTimeFormat = QLocale::system().timeFormat(QLocale::ShortFormat);
-    mClock->setAlignment(Qt::AlignHCenter);
-
-    //strip seconds
-    mTimeFormat = mTimeFormat.remove(":ss");
-    mTimeFormat = mTimeFormat.remove(":s");
-    mTimerID = startTimer(1000);
-
-}  
-
-/**
- * \brief Destructor
- */
-UBNavigatorPalette::~UBNavigatorPalette()
-{
-    killTimer(mTimerID);
-
-    if(NULL != mClock)
-    {
-        delete mClock;
-        mClock = NULL;
-    }
-    if(NULL != mPageNbr)
-    {
-        delete mPageNbr;
-        mPageNbr = NULL;
-    }
-    if(NULL != mHLayout)
-    {
-        delete mHLayout;
-        mHLayout = NULL;
-    }
-    if(NULL != mLayout)
-    {
-	delete mLayout;
-	mLayout = NULL;
-    }
-    if(NULL != mNavigator)
-    {
-	delete mNavigator;
-	mNavigator = NULL;
-    }
-}
-
-/**
- * \brief Set the current document in the navigator
- * @param document as the given document
- */
-
-/**
- * \brief Refresh the thumbnails widget
- */
-void UBNavigatorPalette::refresh()
-{
-}
-
-/**
- * \brief Handle the resize event
- * @param event as the resize event
- */
-void UBNavigatorPalette::resizeEvent(QResizeEvent *event)
-{
-    UBDockPalette::resizeEvent(event);
-    if(NULL != mNavigator)
-    {
-        mNavigator->setMinimumHeight(height() - 2*border());
-    }
-}
-
-void UBNavigatorPalette::timerEvent(QTimerEvent *event)
-{
-    Q_UNUSED(event);
-    updateTime();
-}
-
-void UBNavigatorPalette::updateTime()
-{
-    if (mClock)
-    {
-        mClock->setText(QLocale::system().toString (QTime::currentTime(), mTimeFormat));
-    }
-}
-
-void UBNavigatorPalette::setPageNumber(int current, int total)
-{
-    mPageNbr->setText(QString("%1 / %2").arg(current).arg(total));
-}
+
+
+
+#include "UBNavigatorPalette.h"
+#include "core/UBApplication.h"
+#include "board/UBBoardController.h"
+
+#include "core/memcheck.h"
+
+/**
+ * \brief Constructor
+ * @param parent as the parent widget
+ * @param name as the object name
+ */
+UBNavigatorPalette::UBNavigatorPalette(QWidget *parent, const char *name):
+	UBDockPalette(eUBDockPaletteType_LEFT, parent, name)
+	, mNavigator(NULL)
+	, mLayout(NULL)
+    , mHLayout(NULL)
+    , mPageNbr(NULL)
+    , mClock(NULL)
+{
+    // Build the gui
+    mLayout = new QVBoxLayout(this);
+    mLayout->setContentsMargins(customMargin(), customMargin(), 2*border() + customMargin(), customMargin());
+    setLayout(mLayout);
+
+    mNavigator = new UBDocumentNavigator(this);
+    mNavigator->setStyleSheet(QString("background-color : transparent;"));
+    mLayout->addWidget(mNavigator, 1);
+
+    mHLayout = new QHBoxLayout();
+    mLayout->addLayout(mHLayout, 0);
+
+    mPageNbr = new QLabel(this);
+    mClock = new QLabel(this);
+    mHLayout->addWidget(mPageNbr);
+    mHLayout->addWidget(mClock);
+
+    // Configure the page number indicator
+    mPageNbr->setStyleSheet(QString("QLabel { color: white; background-color: transparent; border: none; font-family: Arial; font-weight: bold; font-size: 20px }"));
+    setPageNumber(0, 0);
+    mPageNbr->setAlignment(Qt::AlignHCenter);
+
+    // Configure the clock
+    mClock->setStyleSheet(QString("QLabel {color: white; background-color: transparent; text-align: center; font-family: Arial; font-weight: bold; font-size: 20px}"));
+    mTimeFormat = QLocale::system().timeFormat(QLocale::ShortFormat);
+    mClock->setAlignment(Qt::AlignHCenter);
+
+    //strip seconds
+    mTimeFormat = mTimeFormat.remove(":ss");
+    mTimeFormat = mTimeFormat.remove(":s");
+    mTimerID = startTimer(1000);
+
+}  
+
+/**
+ * \brief Destructor
+ */
+UBNavigatorPalette::~UBNavigatorPalette()
+{
+    killTimer(mTimerID);
+
+    if(NULL != mClock)
+    {
+        delete mClock;
+        mClock = NULL;
+    }
+    if(NULL != mPageNbr)
+    {
+        delete mPageNbr;
+        mPageNbr = NULL;
+    }
+    if(NULL != mHLayout)
+    {
+        delete mHLayout;
+        mHLayout = NULL;
+    }
+    if(NULL != mLayout)
+    {
+	delete mLayout;
+	mLayout = NULL;
+    }
+    if(NULL != mNavigator)
+    {
+	delete mNavigator;
+	mNavigator = NULL;
+    }
+}
+
+/**
+ * \brief Set the current document in the navigator
+ * @param document as the given document
+ */
+
+/**
+ * \brief Refresh the thumbnails widget
+ */
+void UBNavigatorPalette::refresh()
+{
+}
+
+/**
+ * \brief Handle the resize event
+ * @param event as the resize event
+ */
+void UBNavigatorPalette::resizeEvent(QResizeEvent *event)
+{
+    UBDockPalette::resizeEvent(event);
+    if(NULL != mNavigator)
+    {
+        mNavigator->setMinimumHeight(height() - 2*border());
+    }
+}
+
+void UBNavigatorPalette::timerEvent(QTimerEvent *event)
+{
+    Q_UNUSED(event);
+    updateTime();
+}
+
+void UBNavigatorPalette::updateTime()
+{
+    if (mClock)
+    {
+        mClock->setText(QLocale::system().toString (QTime::currentTime(), mTimeFormat));
+    }
+}
+
+void UBNavigatorPalette::setPageNumber(int current, int total)
+{
+    mPageNbr->setText(QString("%1 / %2").arg(current).arg(total));
+}
diff --git a/Sankore-3.1/src/gui/UBNavigatorPalette.h b/Sankore-3.1/src/gui/UBNavigatorPalette.h
index 8f52b3f..b09cd08 100644
--- a/Sankore-3.1/src/gui/UBNavigatorPalette.h
+++ b/Sankore-3.1/src/gui/UBNavigatorPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,55 +18,56 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBNAVIGATORPALETTE_H
-#define UBNAVIGATORPALETTE_H
-
-#include <QVBoxLayout>
-#include <QHBoxLayout>
-#include <QMouseEvent>
-#include <QResizeEvent>
-#include <QTimerEvent>
-#include <QLabel>
-#include <QString>
-
-#include "UBDockPalette.h"
-#include "UBDocumentNavigator.h"
-#include "document/UBDocumentProxy.h"
-
-
-class UBNavigatorPalette : public UBDockPalette
-{
-    Q_OBJECT
-public:
-    UBNavigatorPalette(QWidget* parent=0, const char* name="navigatorPalette");
-    ~UBNavigatorPalette();
-
-    void setDocument(UBDocumentProxy* document);
-    void refresh();
-
-public slots:
-    void setPageNumber(int current, int total);
-
-protected:
-    virtual void resizeEvent(QResizeEvent *event);
-    virtual void timerEvent(QTimerEvent *event);
-
-private:
-    void updateTime();
-
-    /** The thumbnails navigator widget */
-    UBDocumentNavigator* mNavigator;
-    /** The layout */
-    QVBoxLayout* mLayout;
-    QHBoxLayout* mHLayout;
-    QLabel* mPageNbr;
-    QLabel* mClock;
-    QString mTimeFormat;
-    int mTimerID;
-
-};
-
-
-#endif // UBNAVIGATORPALETTE_H
+
+
+
+#ifndef UBNAVIGATORPALETTE_H
+#define UBNAVIGATORPALETTE_H
+
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QMouseEvent>
+#include <QResizeEvent>
+#include <QTimerEvent>
+#include <QLabel>
+#include <QString>
+
+#include "UBDockPalette.h"
+#include "UBDocumentNavigator.h"
+#include "document/UBDocumentProxy.h"
+
+
+class UBNavigatorPalette : public UBDockPalette
+{
+    Q_OBJECT
+public:
+    UBNavigatorPalette(QWidget* parent=0, const char* name="navigatorPalette");
+    ~UBNavigatorPalette();
+
+    void setDocument(UBDocumentProxy* document);
+    void refresh();
+
+public slots:
+    void setPageNumber(int current, int total);
+
+protected:
+    virtual void resizeEvent(QResizeEvent *event);
+    virtual void timerEvent(QTimerEvent *event);
+
+private:
+    void updateTime();
+
+    /** The thumbnails navigator widget */
+    UBDocumentNavigator* mNavigator;
+    /** The layout */
+    QVBoxLayout* mLayout;
+    QHBoxLayout* mHLayout;
+    QLabel* mPageNbr;
+    QLabel* mClock;
+    QString mTimeFormat;
+    int mTimerID;
+
+};
+
+
+#endif // UBNAVIGATORPALETTE_H
diff --git a/Sankore-3.1/src/gui/UBPageNavigationWidget.cpp b/Sankore-3.1/src/gui/UBPageNavigationWidget.cpp
index 4b7f512..aff64b2 100644
--- a/Sankore-3.1/src/gui/UBPageNavigationWidget.cpp
+++ b/Sankore-3.1/src/gui/UBPageNavigationWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,162 +18,160 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#include "UBPageNavigationWidget.h"
-#include "core/UBApplication.h"
-
-#include "board/UBBoardController.h"
-
-#include "document/UBDocumentContainer.h"
-
-#include "globals/UBGlobals.h"
-
-#include "core/memcheck.h"
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the object name
- */
-UBPageNavigationWidget::UBPageNavigationWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent)
-  , mNavigator(NULL)
-  , mLayout(NULL)
-  , mHLayout(NULL)
-  , mPageNbr(NULL)
-  , mClock(NULL)
-{
-    setObjectName(name);
-    mName = "PageNavigator";
-    mVisibleState = true;
-
-    SET_STYLE_SHEET();
-
-    mIconToRight = QPixmap(":images/pages_open.png");
-    mIconToLeft = QPixmap(":images/pages_close.png");
-
-    // Build the gui
-    mLayout = new QVBoxLayout(this);
-    setLayout(mLayout);
-
-    mNavigator = new UBDocumentNavigator(this);
-    mLayout->addWidget(mNavigator, 1);
-
-    mHLayout = new QHBoxLayout();
-    mLayout->addLayout(mHLayout, 0);
-
-    mPageNbr = new QLabel(this);
-    mClock = new QLabel(this);
-    mHLayout->addWidget(mPageNbr);
-    mHLayout->addWidget(mClock);
-
-    // Configure the page number indicator
-    mPageNbr->setStyleSheet(QString("QLabel { color: white; background-color: transparent; border: none; font-family: Arial; font-weight: bold; font-size: 20px }"));
-    setPageNumber(0, 0);
-    mPageNbr->setAlignment(Qt::AlignHCenter);
-
-    // Configure the clock
-    mClock->setStyleSheet(QString("QLabel {color: white; background-color: transparent; text-align: center; font-family: Arial; font-weight: bold; font-size: 20px}"));
-    mTimeFormat = QLocale::system().timeFormat(QLocale::ShortFormat);
-    mClock->setAlignment(Qt::AlignHCenter);
-
-    //strip seconds
-    mTimeFormat = mTimeFormat.remove(":ss");
-    mTimeFormat = mTimeFormat.remove(":s");
-    mTimerID = startTimer(1000);
-
-}
-
-/**
- * \brief Destructor
- */
-UBPageNavigationWidget::~UBPageNavigationWidget()
-{
-    killTimer(mTimerID);
-
-    if(NULL != mClock)
-    {
-        delete mClock;
-        mClock = NULL;
-    }
-    if(NULL != mPageNbr)
-    {
-        delete mPageNbr;
-        mPageNbr = NULL;
-    }
-    if(NULL != mHLayout)
-    {
-        delete mHLayout;
-        mHLayout = NULL;
-    }
-    if(NULL != mLayout)
-    {
-        delete mLayout;
-        mLayout = NULL;
-    }
-    if(NULL != mNavigator)
-    {
-        delete mNavigator;
-        mNavigator = NULL;
-    }
-}
-
-
-/**
- * \brief Refresh the thumbnails widget
- */
-void UBPageNavigationWidget::refresh()
-{
-    // TOLIK!!!
-    // mNavigator->setDocument(UBApplication::boardController->activeDocument());
-}
-
-/**
- * \brief Notify a timer event
- * @param event as the timer event
- */
-void UBPageNavigationWidget::timerEvent(QTimerEvent *event)
-{
-    Q_UNUSED(event);
-    updateTime();
-}
-
-/**
- * \brief Update the current time
- */
-void UBPageNavigationWidget::updateTime()
-{
-    if (mClock)
-    {
-        mClock->setText(QLocale::system().toString (QTime::currentTime(), mTimeFormat));
-    }
-}
-
-/**
- * \brief Set the page number
- * @param current as the current page
- * @param total as the total number of pages
- */
-void UBPageNavigationWidget::setPageNumber(int current, int total)
-{
-    mPageNbr->setText(QString("%1 / %2").arg(current).arg(UBDocumentContainer::sceneIndexFromPage(total)));
-}
-
-/**
- * \brief Get the custom margin value
- * @return the custom margin value
- */
-int UBPageNavigationWidget::customMargin()
-{
-    return 5;
-}
-
-/**
- * \brief Get the border value
- * @return the border value
- */
-int UBPageNavigationWidget::border()
-{
-    return 15;
-}
-
+
+
+
+#include "UBPageNavigationWidget.h"
+#include "core/UBApplication.h"
+
+#include "board/UBBoardController.h"
+
+#include "document/UBDocumentContainer.h"
+
+#include "globals/UBGlobals.h"
+
+#include "core/memcheck.h"
+
+/**
+ * \brief Constructor
+ * @param parent as the parent widget
+ * @param name as the object name
+ */
+UBPageNavigationWidget::UBPageNavigationWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent)
+  , mNavigator(NULL)
+  , mLayout(NULL)
+  , mHLayout(NULL)
+  , mPageNbr(NULL)
+  , mClock(NULL)
+{
+    setObjectName(name);
+    mName = "PageNavigator";
+    mVisibleState = true;
+
+    SET_STYLE_SHEET();
+
+    // Build the gui
+    mLayout = new QVBoxLayout(this);
+    setLayout(mLayout);
+
+    mNavigator = new UBDocumentNavigator(this);
+    mLayout->addWidget(mNavigator, 1);
+
+    mHLayout = new QHBoxLayout();
+    mLayout->addLayout(mHLayout, 0);
+
+    mPageNbr = new QLabel(this);
+    mClock = new QLabel(this);
+    mHLayout->addWidget(mPageNbr);
+    mHLayout->addWidget(mClock);
+
+    // Configure the page number indicator
+    mPageNbr->setStyleSheet(QString("QLabel { color: white; background-color: transparent; border: none; font-family: Arial; font-weight: bold; font-size: 20px }"));
+    setPageNumber(0, 0);
+    mPageNbr->setAlignment(Qt::AlignHCenter);
+
+    // Configure the clock
+    mClock->setStyleSheet(QString("QLabel {color: white; background-color: transparent; text-align: center; font-family: Arial; font-weight: bold; font-size: 20px}"));
+    mTimeFormat = QLocale::system().timeFormat(QLocale::ShortFormat);
+    mClock->setAlignment(Qt::AlignHCenter);
+
+    //strip seconds
+    mTimeFormat = mTimeFormat.remove(":ss");
+    mTimeFormat = mTimeFormat.remove(":s");
+    mTimerID = startTimer(1000);
+
+}
+
+/**
+ * \brief Destructor
+ */
+UBPageNavigationWidget::~UBPageNavigationWidget()
+{
+    killTimer(mTimerID);
+
+    if(NULL != mClock)
+    {
+        delete mClock;
+        mClock = NULL;
+    }
+    if(NULL != mPageNbr)
+    {
+        delete mPageNbr;
+        mPageNbr = NULL;
+    }
+    if(NULL != mHLayout)
+    {
+        delete mHLayout;
+        mHLayout = NULL;
+    }
+    if(NULL != mLayout)
+    {
+        delete mLayout;
+        mLayout = NULL;
+    }
+    if(NULL != mNavigator)
+    {
+        delete mNavigator;
+        mNavigator = NULL;
+    }
+}
+
+
+/**
+ * \brief Refresh the thumbnails widget
+ */
+void UBPageNavigationWidget::refresh()
+{
+    // TOLIK!!!
+    // mNavigator->setDocument(UBApplication::boardController->activeDocument());
+}
+
+/**
+ * \brief Notify a timer event
+ * @param event as the timer event
+ */
+void UBPageNavigationWidget::timerEvent(QTimerEvent *event)
+{
+    Q_UNUSED(event);
+    updateTime();
+}
+
+/**
+ * \brief Update the current time
+ */
+void UBPageNavigationWidget::updateTime()
+{
+    if (mClock)
+    {
+        mClock->setText(QLocale::system().toString (QTime::currentTime(), mTimeFormat));
+    }
+}
+
+/**
+ * \brief Set the page number
+ * @param current as the current page
+ * @param total as the total number of pages
+ */
+void UBPageNavigationWidget::setPageNumber(int current, int total)
+{
+    mPageNbr->setText(QString("%1 / %2").arg(current).arg(UBDocumentContainer::sceneIndexFromPage(total)));
+}
+
+/**
+ * \brief Get the custom margin value
+ * @return the custom margin value
+ */
+int UBPageNavigationWidget::customMargin()
+{
+    return 5;
+}
+
+/**
+ * \brief Get the border value
+ * @return the border value
+ */
+int UBPageNavigationWidget::border()
+{
+    return 15;
+}
+
diff --git a/Sankore-3.1/src/gui/UBPageNavigationWidget.h b/Sankore-3.1/src/gui/UBPageNavigationWidget.h
index d1f85db..ec83dc4 100644
--- a/Sankore-3.1/src/gui/UBPageNavigationWidget.h
+++ b/Sankore-3.1/src/gui/UBPageNavigationWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,62 +18,65 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBPAGENAVIGATIONWIDGET_H
-#define UBPAGENAVIGATIONWIDGET_H
-
-#include <QVBoxLayout>
-#include <QHBoxLayout>
-#include <QMouseEvent>
-#include <QResizeEvent>
-#include <QTimerEvent>
-#include <QLabel>
-#include <QString>
-
-#include "UBDocumentNavigator.h"
-#include "UBDockPaletteWidget.h"
-#include "document/UBDocumentProxy.h"
-
-class UBPageNavigationWidget : public UBDockPaletteWidget
-{
-    Q_OBJECT
-public:
-    UBPageNavigationWidget(QWidget* parent=0, const char* name="UBPageNavigationWidget");
-    ~UBPageNavigationWidget();
-    //void setDocument(UBDocumentProxy* document);
-    void refresh();
-
-    bool visibleInMode(eUBDockPaletteWidgetMode mode)
-    {
-        return mode == eUBDockPaletteWidget_BOARD;
-    }
-
-signals:
-    void resizeRequest(QResizeEvent* event);
-
-public slots:
-    void setPageNumber(int current, int total);
-
-protected:
-    virtual void timerEvent(QTimerEvent *event);
-
-
-private:
-    void updateTime();
-    int customMargin();
-    int border();
-
-    /** The thumbnails navigator widget */
-    UBDocumentNavigator* mNavigator;
-    /** The layout */
-    QVBoxLayout* mLayout;
-    QHBoxLayout* mHLayout;
-    QLabel* mPageNbr;
-    QLabel* mClock;
-    QString mTimeFormat;
-    int mTimerID;
-
-};
-
-#endif // UBPAGENAVIGATIONWIDGET_H
+
+
+
+#ifndef UBPAGENAVIGATIONWIDGET_H
+#define UBPAGENAVIGATIONWIDGET_H
+
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QMouseEvent>
+#include <QResizeEvent>
+#include <QTimerEvent>
+#include <QLabel>
+#include <QString>
+
+#include "UBDocumentNavigator.h"
+#include "UBDockPaletteWidget.h"
+#include "document/UBDocumentProxy.h"
+
+class UBPageNavigationWidget : public UBDockPaletteWidget
+{
+    Q_OBJECT
+public:
+    UBPageNavigationWidget(QWidget* parent=0, const char* name="UBPageNavigationWidget");
+    ~UBPageNavigationWidget();
+    //void setDocument(UBDocumentProxy* document);
+    void refresh();
+
+    bool visibleInMode(eUBDockPaletteWidgetMode mode)
+    {
+        return mode == eUBDockPaletteWidget_BOARD;
+    }
+    QPixmap iconToLeft() const {return QPixmap(":images/pages_close.png");}
+    QPixmap iconToRight() const {return QPixmap(":images/pages_open.png");}
+
+signals:
+    void resizeRequest(QResizeEvent* event);
+
+public slots:
+    void setPageNumber(int current, int total);
+
+protected:
+    virtual void timerEvent(QTimerEvent *event);
+
+
+private:
+    void updateTime();
+    int customMargin();
+    int border();
+
+    /** The thumbnails navigator widget */
+    UBDocumentNavigator* mNavigator;
+    /** The layout */
+    QVBoxLayout* mLayout;
+    QHBoxLayout* mHLayout;
+    QLabel* mPageNbr;
+    QLabel* mClock;
+    QString mTimeFormat;
+    int mTimerID;
+
+};
+
+#endif // UBPAGENAVIGATIONWIDGET_H
diff --git a/Sankore-3.1/src/gui/UBPropertyPalette.cpp b/Sankore-3.1/src/gui/UBPropertyPalette.cpp
index 41f953b..b085b35 100644
--- a/Sankore-3.1/src/gui/UBPropertyPalette.cpp
+++ b/Sankore-3.1/src/gui/UBPropertyPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBPropertyPalette.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/gui/UBPropertyPalette.h b/Sankore-3.1/src/gui/UBPropertyPalette.h
index 629a419..1388bad 100644
--- a/Sankore-3.1/src/gui/UBPropertyPalette.h
+++ b/Sankore-3.1/src/gui/UBPropertyPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBPROPERTYPALETTE_H
 #define UBPROPERTYPALETTE_H
 
diff --git a/Sankore-3.1/src/gui/UBResources.cpp b/Sankore-3.1/src/gui/UBResources.cpp
index 3a28cee..02e23bf 100644
--- a/Sankore-3.1/src/gui/UBResources.cpp
+++ b/Sankore-3.1/src/gui/UBResources.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBResources.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/gui/UBResources.h b/Sankore-3.1/src/gui/UBResources.h
index b9ecffd..02c798b 100644
--- a/Sankore-3.1/src/gui/UBResources.h
+++ b/Sankore-3.1/src/gui/UBResources.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBRESOURCES_H_
 #define UBRESOURCES_H_
 
diff --git a/Sankore-3.1/src/gui/UBRightPalette.cpp b/Sankore-3.1/src/gui/UBRightPalette.cpp
index 0ed0779..b23c181 100644
--- a/Sankore-3.1/src/gui/UBRightPalette.cpp
+++ b/Sankore-3.1/src/gui/UBRightPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "core/UBApplication.h"
 #include "board/UBBoardController.h"
 
@@ -38,17 +39,21 @@ UBRightPalette::UBRightPalette(QWidget *parent, const char *name):
     mCollapseWidth = 150;
     bool isCollapsed = false;
     if(mCurrentMode == eUBDockPaletteWidget_BOARD){
-    	mLastWidth = UBSettings::settings()->rightLibPaletteBoardModeWidth->get().toInt();
-    	isCollapsed = UBSettings::settings()->rightLibPaletteBoardModeIsCollapsed->get().toBool();
+        mLastWidth = UBSettings::settings()->rightLibPaletteBoardModeWidth->get().toInt();
+        isCollapsed = UBSettings::settings()->rightLibPaletteBoardModeIsCollapsed->get().toBool();
+    }
+    else if(mCurrentMode == eUBDockPaletteWidget_DESKTOP){
+        mLastWidth = UBSettings::settings()->rightLibPaletteDesktopModeWidth->get().toInt();
+        isCollapsed = UBSettings::settings()->rightLibPaletteDesktopModeIsCollapsed->get().toBool();
     }
-    else{
-    	mLastWidth = UBSettings::settings()->rightLibPaletteDesktopModeWidth->get().toInt();
-    	isCollapsed = UBSettings::settings()->rightLibPaletteDesktopModeIsCollapsed->get().toBool();
+    else if(mCurrentMode == eUBDockPaletteWidget_WEB){
+        mLastWidth = UBSettings::settings()->rightLibPaletteWebModeWidth->get().toInt();
+        isCollapsed = UBSettings::settings()->rightLibPaletteWebModeIsCollapsed->get().toBool();
     }
     if(isCollapsed)
-    	resize(0,parentWidget()->height());
+        resize(0,parentWidget()->height());
     else
-    	resize(mLastWidth, parentWidget()->height());
+        resize(mLastWidth, parentWidget()->height());
 }
 
 /**
@@ -76,18 +81,23 @@ void UBRightPalette::mouseMoveEvent(QMouseEvent *event)
  */
 void UBRightPalette::resizeEvent(QResizeEvent *event)
 {
-	int newWidth = width();
-	if(mCurrentMode == eUBDockPaletteWidget_BOARD){
-		if(newWidth > mCollapseWidth)
-			UBSettings::settings()->rightLibPaletteBoardModeWidth->set(newWidth);
-		UBSettings::settings()->rightLibPaletteBoardModeIsCollapsed->set(newWidth == 0);
-	}
-	else{
-		if(newWidth > mCollapseWidth)
-			UBSettings::settings()->rightLibPaletteDesktopModeWidth->set(newWidth);
-		UBSettings::settings()->rightLibPaletteDesktopModeIsCollapsed->set(newWidth == 0);
-	}
-	UBDockPalette::resizeEvent(event);
+    int newWidth = width();
+    if(mCurrentMode == eUBDockPaletteWidget_BOARD){
+        if(newWidth > mCollapseWidth)
+            UBSettings::settings()->rightLibPaletteBoardModeWidth->set(newWidth);
+        UBSettings::settings()->rightLibPaletteBoardModeIsCollapsed->set(newWidth == 0);
+    }
+    else if (mCurrentMode == eUBDockPaletteWidget_DESKTOP){
+        if(newWidth > mCollapseWidth)
+            UBSettings::settings()->rightLibPaletteDesktopModeWidth->set(newWidth);
+        UBSettings::settings()->rightLibPaletteDesktopModeIsCollapsed->set(newWidth == 0);
+    }
+    else if (mCurrentMode == eUBDockPaletteWidget_WEB){
+        if(newWidth > mCollapseWidth)
+            UBSettings::settings()->rightLibPaletteWebModeWidth->set(newWidth);
+        UBSettings::settings()->rightLibPaletteWebModeIsCollapsed->set(newWidth == 0);
+    }
+    UBDockPalette::resizeEvent(event);
     emit resized();
 }
 
@@ -103,19 +113,39 @@ void UBRightPalette::updateMaxWidth()
 
 bool UBRightPalette::switchMode(eUBDockPaletteWidgetMode mode)
 {
-	int newModeWidth;
-	if(mode == eUBDockPaletteWidget_BOARD){
-		mLastWidth = UBSettings::settings()->rightLibPaletteBoardModeWidth->get().toInt();
-		newModeWidth = mLastWidth;
-		if(UBSettings::settings()->rightLibPaletteBoardModeIsCollapsed->get().toBool())
-			newModeWidth = 0;
-	}
-	else{
-		mLastWidth = UBSettings::settings()->rightLibPaletteDesktopModeWidth->get().toInt();
-		newModeWidth = mLastWidth;
-		if(UBSettings::settings()->rightLibPaletteDesktopModeIsCollapsed->get().toBool())
-			newModeWidth = 0;
-	}
-	resize(newModeWidth,height());
-	return UBDockPalette::switchMode(mode);
+    int newModeWidth;
+    if(mode == eUBDockPaletteWidget_BOARD){
+        mLastWidth = UBSettings::settings()->rightLibPaletteBoardModeWidth->get().toInt();
+        newModeWidth = mLastWidth;
+        if(UBSettings::settings()->rightLibPaletteBoardModeIsCollapsed->get().toBool())
+            newModeWidth = 0;
+    }
+    else if (mode == eUBDockPaletteWidget_DESKTOP){
+        mLastWidth = UBSettings::settings()->rightLibPaletteDesktopModeWidth->get().toInt();
+        newModeWidth = mLastWidth;
+        if(UBSettings::settings()->rightLibPaletteDesktopModeIsCollapsed->get().toBool())
+            newModeWidth = 0;
+    }
+    else if (mode == eUBDockPaletteWidget_WEB){
+        mLastWidth = UBSettings::settings()->rightLibPaletteWebModeWidth->get().toInt();
+        newModeWidth = mLastWidth;
+        if(UBSettings::settings()->rightLibPaletteWebModeIsCollapsed->get().toBool())
+            newModeWidth = 0;
+    }
+    // HACK to force the reoganization of tabs
+    if(newModeWidth == 0)
+        resize(1,height());
+    resize(newModeWidth,height());
+    return UBDockPalette::switchMode(mode);
+}
+
+
+void UBRightPalette::showEvent(QShowEvent* event)
+{
+    UBDockPalette::showEvent(event);
+}
+
+void UBRightPalette::hideEvent(QHideEvent* event)
+{
+    UBDockPalette::hideEvent(event);
 }
diff --git a/Sankore-3.1/src/gui/UBRightPalette.h b/Sankore-3.1/src/gui/UBRightPalette.h
index 6dae301..d0fab65 100644
--- a/Sankore-3.1/src/gui/UBRightPalette.h
+++ b/Sankore-3.1/src/gui/UBRightPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBRIGHTPALETTE_H
 #define UBRIGHTPALETTE_H
 
@@ -40,6 +41,8 @@ protected:
     void updateMaxWidth();
     void mouseMoveEvent(QMouseEvent *event);
     void resizeEvent(QResizeEvent *event);
+    void showEvent(QShowEvent* event);
+    void hideEvent(QHideEvent* event);
 
 };
 
diff --git a/Sankore-3.1/src/gui/UBRubberBand.cpp b/Sankore-3.1/src/gui/UBRubberBand.cpp
index 8d02686..ee9d430 100644
--- a/Sankore-3.1/src/gui/UBRubberBand.cpp
+++ b/Sankore-3.1/src/gui/UBRubberBand.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBRubberBand.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/gui/UBRubberBand.h b/Sankore-3.1/src/gui/UBRubberBand.h
index 0a14e11..931639e 100644
--- a/Sankore-3.1/src/gui/UBRubberBand.h
+++ b/Sankore-3.1/src/gui/UBRubberBand.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBRUBBERBAND_H_
 #define UBRUBBERBAND_H_
 
diff --git a/Sankore-3.1/src/gui/UBScreenMirror.cpp b/Sankore-3.1/src/gui/UBScreenMirror.cpp
index 60db723..285c5ec 100644
--- a/Sankore-3.1/src/gui/UBScreenMirror.cpp
+++ b/Sankore-3.1/src/gui/UBScreenMirror.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBScreenMirror.h"
 
 #include "core/UBSettings.h"
diff --git a/Sankore-3.1/src/gui/UBScreenMirror.h b/Sankore-3.1/src/gui/UBScreenMirror.h
index 68d2464..1ab9fba 100644
--- a/Sankore-3.1/src/gui/UBScreenMirror.h
+++ b/Sankore-3.1/src/gui/UBScreenMirror.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBSCREENMIRROR_H_
 #define UBSCREENMIRROR_H_
 
diff --git a/Sankore-3.1/src/gui/UBSpinningWheel.cpp b/Sankore-3.1/src/gui/UBSpinningWheel.cpp
index 524bab3..828293f 100644
--- a/Sankore-3.1/src/gui/UBSpinningWheel.cpp
+++ b/Sankore-3.1/src/gui/UBSpinningWheel.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBSpinningWheel.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/gui/UBSpinningWheel.h b/Sankore-3.1/src/gui/UBSpinningWheel.h
index fabbced..5dfec9c 100644
--- a/Sankore-3.1/src/gui/UBSpinningWheel.h
+++ b/Sankore-3.1/src/gui/UBSpinningWheel.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBSPINNINGWHEEL_H_
 #define UBSPINNINGWHEEL_H_
 
diff --git a/Sankore-3.1/src/gui/UBStartupHintsPalette.cpp b/Sankore-3.1/src/gui/UBStartupHintsPalette.cpp
new file mode 100644
index 0000000..8a83199
--- /dev/null
+++ b/Sankore-3.1/src/gui/UBStartupHintsPalette.cpp
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+
+#include <QVBoxLayout>
+#include <QLabel>
+#include <QPainter>
+#include <QMouseEvent>
+#include <QCheckBox>
+#include <QWebFrame>
+#include "UBStartupHintsPalette.h"
+
+#include "globals/UBGlobals.h"
+#include "core/UBSettings.h"
+
+
+
+
+
+UBStartupHintsPalette::UBStartupHintsPalette(QWidget *parent) :
+    UBFloatingPalette(Qt::TopRightCorner,parent)
+{
+    setObjectName("UBStartupHintsPalette");
+    if(UBSettings::settings()->appStartupHintsEnabled->get().toBool()){
+        setFixedSize(700,450);
+        mLayout = new QVBoxLayout();
+        mLayout->setContentsMargins(10,28,10,10);
+        setLayout(mLayout);
+        QString url = UBSettings::settings()->applicationStartupHintsDirectory() + "/index.html";
+        mpWebView = new QWebView(this);
+        mpSankoreAPI = new UBWidgetUniboardAPI(0);
+        mpWebView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI);
+        connect(mpWebView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared()));
+        mpWebView->setUrl(QUrl::fromLocalFile(url));
+        mpWebView->setAcceptDrops(false);
+        mLayout->addWidget(mpWebView);
+        mButtonLayout = new QHBoxLayout();
+        mLayout->addLayout(mButtonLayout);
+        mShowNextTime = new QCheckBox(tr("Visible next time"),this);
+        mShowNextTime->setCheckState(Qt::Checked);
+        connect(mShowNextTime,SIGNAL(stateChanged(int)),this,SLOT(onShowNextTimeStateChanged(int)));
+        mButtonLayout->addStretch();
+        mButtonLayout->addWidget(mShowNextTime);
+    }
+    else
+        hide();
+}
+
+UBStartupHintsPalette::~UBStartupHintsPalette()
+{
+//    DELETEPTR(mButtonLayout);
+//    DELETEPTR(mLayout);
+}
+
+void UBStartupHintsPalette::paintEvent(QPaintEvent *event)
+{
+    UBFloatingPalette::paintEvent(event);
+
+    QPainter painter(this);
+    painter.drawPixmap(0, 0, QPixmap(":/images/close.svg"));
+}
+
+
+void UBStartupHintsPalette::close()
+{
+    hide();
+}
+
+
+void UBStartupHintsPalette::mouseReleaseEvent(QMouseEvent * event)
+{
+    if (event->pos().x() >= 0 && event->pos().x() < QPixmap(":/images/close.svg").width()
+        && event->pos().y() >= 0 && event->pos().y() < QPixmap(":/images/close.svg").height())
+    {
+        event->accept();
+        close();
+    }
+
+    UBFloatingPalette::mouseReleaseEvent(event);
+}
+
+void UBStartupHintsPalette::onShowNextTimeStateChanged(int state)
+{
+    UBSettings::settings()->appStartupHintsEnabled->setBool(state == Qt::Checked);
+}
+
+void UBStartupHintsPalette::showEvent(QShowEvent *event)
+{
+    Q_UNUSED(event);
+    adjustSizeAndPosition();
+    move((parentWidget()->width() - width()) / 2, (parentWidget()->height() - height()) / 5);
+}
+
+
+int UBStartupHintsPalette::border()
+{
+    return 40;
+}
+
+void UBStartupHintsPalette::javaScriptWindowObjectCleared()
+{
+    mpWebView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI);
+}
diff --git a/Sankore-3.1/src/gui/UBStartupHintsPalette.h b/Sankore-3.1/src/gui/UBStartupHintsPalette.h
new file mode 100644
index 0000000..07f4a22
--- /dev/null
+++ b/Sankore-3.1/src/gui/UBStartupHintsPalette.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+
+#ifndef UBSTARTUPTIPSPALETTE_H
+#define UBSTARTUPTIPSPALETTE_H
+
+class QCheckBox;
+class QVBoxLayout;
+class QHBoxLayout;
+
+#include <QWebView>
+
+#include "UBFloatingPalette.h"
+#include "api/UBWidgetUniboardAPI.h"
+
+class UBStartupHintsPalette : public UBFloatingPalette
+{
+    Q_OBJECT;
+public:
+    UBStartupHintsPalette(QWidget *parent = 0);
+    ~UBStartupHintsPalette();
+
+
+signals:
+
+public slots:
+
+protected:
+    virtual void paintEvent(QPaintEvent *event);
+    virtual void mouseReleaseEvent(QMouseEvent * event);
+    virtual void showEvent(QShowEvent *event);
+
+private:
+    void close();
+    int border();
+    QCheckBox* mShowNextTime;
+    QVBoxLayout* mLayout;
+    QHBoxLayout* mButtonLayout;
+    UBWidgetUniboardAPI *mpSankoreAPI;
+    QWebView* mpWebView;
+
+private slots:
+    void onShowNextTimeStateChanged(int state);
+    void javaScriptWindowObjectCleared();
+};
+
+#endif // UBSTARTUPTIPSPALETTE_H
diff --git a/Sankore-3.1/src/gui/UBStylusPalette.cpp b/Sankore-3.1/src/gui/UBStylusPalette.cpp
index f171daf..1cf47b6 100644
--- a/Sankore-3.1/src/gui/UBStylusPalette.cpp
+++ b/Sankore-3.1/src/gui/UBStylusPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBStylusPalette.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/gui/UBStylusPalette.h b/Sankore-3.1/src/gui/UBStylusPalette.h
index 70a803c..b354266 100644
--- a/Sankore-3.1/src/gui/UBStylusPalette.h
+++ b/Sankore-3.1/src/gui/UBStylusPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBSTYLUSPALLETTE_H_
 #define UBSTYLUSPALLETTE_H_
 
diff --git a/Sankore-3.1/src/gui/UBTeacherGuideWidget.cpp b/Sankore-3.1/src/gui/UBTeacherGuideWidget.cpp
index 8cc05fa..207ff21 100644
--- a/Sankore-3.1/src/gui/UBTeacherGuideWidget.cpp
+++ b/Sankore-3.1/src/gui/UBTeacherGuideWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QDebug>
 #include <QLabel>
 #include <QVBoxLayout>
@@ -272,8 +273,8 @@ void UBTeacherGuideEditionWidget::onActiveSceneChanged()
 
 void UBTeacherGuideEditionWidget::cleanData()
 {
-    mpPageTitle->setText("");
-    mpComment->setText("");
+    mpPageTitle->resetText();
+    mpComment->resetText();
     QList<QTreeWidgetItem*> children = mpAddAnActionItem->takeChildren();
     children << mpAddAMediaItem->takeChildren();
     children << mpAddALinkItem->takeChildren();
@@ -931,7 +932,7 @@ void UBTeacherGuidePageZeroWidget::fillComboBoxes()
     QStringList licences;
     licences << tr("Attribution-ShareAlike CC BY-SA")
              << tr("Attribution CC BY")
-    		 << tr("Attribution-NoDerivs CC BY-ND")
+             << tr("Attribution-NoDerivs CC BY-ND")
              << tr("Attribution-NonCommercial CC BY-NC")
              << tr("Attribution-NonCommercial-NoDerivs CC BY-NC-ND")
              << tr("Attribution-NonCommercial-ShareAlike CC BY-NC-SA")
@@ -1167,8 +1168,8 @@ bool UBTeacherGuidePageZeroWidget::isModified()
 
 void UBTeacherGuidePageZeroWidget::resizeEvent(QResizeEvent* ev)
 {
-	emit resized();
-	QWidget::resizeEvent(ev);
+    emit resized();
+    QWidget::resizeEvent(ev);
 }
 
 /***************************************************************************
@@ -1208,54 +1209,54 @@ UBTeacherGuideWidget::~UBTeacherGuideWidget()
 void UBTeacherGuideWidget::onActiveSceneChanged()
 {
     if (UBApplication::boardController->currentPage() == 0) {
-    	if(mpPageZeroWidget->isModified())
-    		mpPageZeroWidget->switchToMode(tUBTGZeroPageMode_PRESENTATION);
-    	else
-    		mpPageZeroWidget->switchToMode(tUBTGZeroPageMode_EDITION);
+        if(mpPageZeroWidget->isModified())
+            mpPageZeroWidget->switchToMode(tUBTGZeroPageMode_PRESENTATION);
+        else
+            mpPageZeroWidget->switchToMode(tUBTGZeroPageMode_EDITION);
 
         setCurrentWidget(mpPageZeroWidget);
     }
     else{
-    	if(mpEditionWidget->isModified()){
+        if(mpEditionWidget->isModified()){
             mCurrentData = mpEditionWidget->getData();
             mpPresentationWidget->showData(mCurrentData);
-    		setCurrentWidget(mpPresentationWidget);
-    	}
-    	else
-    		setCurrentWidget(mpEditionWidget);
+            setCurrentWidget(mpPresentationWidget);
+        }
+        else
+            setCurrentWidget(mpEditionWidget);
     }
 
 }
 
 void UBTeacherGuideWidget::onTriggeredAction(bool checked)
 {
-	Q_UNUSED(checked);
-	if(!mKeyboardActionFired)
-		showPresentationMode();
-	mKeyboardActionFired=false;
+    Q_UNUSED(checked);
+    if(!mKeyboardActionFired)
+        showPresentationMode();
+    mKeyboardActionFired=false;
 }
 
 void UBTeacherGuideWidget::onTriggeredKeyboardAction(bool checked)
 {
-	Q_UNUSED(checked);
-	mKeyboardActionFired = true;
+    Q_UNUSED(checked);
+    mKeyboardActionFired = true;
 }
 
 void UBTeacherGuideWidget::connectToStylusPalette()
 {
-	connect(UBApplication::mainWindow->actionPen, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
-	connect(UBApplication::mainWindow->actionEraser, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
-	connect(UBApplication::mainWindow->actionMarker, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
-	connect(UBApplication::mainWindow->actionPointer, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
-	connect(UBApplication::mainWindow->actionPlay, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
-	connect(UBApplication::mainWindow->actionZoomIn, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
-	connect(UBApplication::mainWindow->actionZoomOut, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+    connect(UBApplication::mainWindow->actionPen, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+    connect(UBApplication::mainWindow->actionEraser, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+    connect(UBApplication::mainWindow->actionMarker, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+    connect(UBApplication::mainWindow->actionPointer, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+    connect(UBApplication::mainWindow->actionPlay, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+    connect(UBApplication::mainWindow->actionZoomIn, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+    connect(UBApplication::mainWindow->actionZoomOut, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
     connect(UBApplication::mainWindow->actionCapture, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
-	connect(UBApplication::mainWindow->actionHand, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
-	connect(UBApplication::mainWindow->actionLine, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
-	connect(UBApplication::mainWindow->actionText, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
-	connect(UBApplication::mainWindow->actionSelector, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
-	connect(UBApplication::mainWindow->actionVirtualKeyboard, SIGNAL(triggered(bool)), this, SLOT(onTriggeredKeyboardAction(bool)));
+    connect(UBApplication::mainWindow->actionHand, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+    connect(UBApplication::mainWindow->actionLine, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+    connect(UBApplication::mainWindow->actionText, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+    connect(UBApplication::mainWindow->actionSelector, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+    connect(UBApplication::mainWindow->actionVirtualKeyboard, SIGNAL(triggered(bool)), this, SLOT(onTriggeredKeyboardAction(bool)));
 }
 
 void UBTeacherGuideWidget::showPresentationMode()
@@ -1287,4 +1288,3 @@ bool UBTeacherGuideWidget::isModified()
     else
         return mpEditionWidget->isModified();
 }
-
diff --git a/Sankore-3.1/src/gui/UBTeacherGuideWidget.h b/Sankore-3.1/src/gui/UBTeacherGuideWidget.h
index 4e2c4f4..ed9e006 100644
--- a/Sankore-3.1/src/gui/UBTeacherGuideWidget.h
+++ b/Sankore-3.1/src/gui/UBTeacherGuideWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBTEACHERGUIDEWIDGET_H
 #define UBTEACHERGUIDEWIDGET_H
 
diff --git a/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.cpp b/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.cpp
index 92e84b9..87c0c72 100644
--- a/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.cpp
+++ b/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QTreeWidget>
 #include <QVBoxLayout>
 #include <QComboBox>
@@ -172,11 +173,11 @@ void UBTGAdaptableText::showEvent(QShowEvent* e)
 {
     Q_UNUSED(e);
     if(!mIsUpdatingSize && !hasFocus() && mHasPlaceHolder && toPlainText().isEmpty() && !isReadOnly()){
-    	setTextColor(QColor(Qt::lightGray));
-    	setPlainText(mPlaceHolderText);
+        setTextColor(QColor(Qt::lightGray));
+        setPlainText(mPlaceHolderText);
     }
     else
-    	// If the teacherguide is collapsed, don't updated the size. Or set the size as the expanded size
+        // If the teacherguide is collapsed, don't updated the size. Or set the size as the expanded size
         onTextChanged();
 }
 
@@ -193,16 +194,16 @@ void UBTGAdaptableText::onTextChanged()
 {
     qreal documentSize = document()->size().height();
     if(height() == documentSize + mBottomMargin){
-    	return;
+        return;
     }
     mIsUpdatingSize = true;
 
 
     if(documentSize < mMinimumHeight){
-    	setFixedHeight(mMinimumHeight);
+        setFixedHeight(mMinimumHeight);
     }
     else{
-    	setFixedHeight(documentSize+mBottomMargin);
+        setFixedHeight(documentSize+mBottomMargin);
     }
 
     updateGeometry();
@@ -223,6 +224,19 @@ void UBTGAdaptableText::setInitialText(const QString& text)
     onTextChanged();
 }
 
+void UBTGAdaptableText::resetText()
+{
+    if(mHasPlaceHolder && !mPlaceHolderText.isEmpty()){
+        setTextColor(QColor(Qt::lightGray));
+        setText(mPlaceHolderText);
+    }
+    else{
+        setText("");
+        setTextColor(QColor(Qt::black));
+    }
+    onTextChanged();
+}
+
 void UBTGAdaptableText::showText(const QString & text)
 {
     setText(text);
@@ -238,45 +252,71 @@ void UBTGAdaptableText::bottomMargin(int newValue)
 
 void UBTGAdaptableText::focusInEvent(QFocusEvent* e)
 {
-	if(isReadOnly()){
-		e->ignore();
-	}
-	managePlaceholder(true);
-	QTextEdit::focusInEvent(e);
+    if(isReadOnly()){
+        e->ignore();
+    }
+    managePlaceholder(true);
+    QTextEdit::focusInEvent(e);
 }
 
 void UBTGAdaptableText::focusOutEvent(QFocusEvent* e)
 {
-	managePlaceholder(false);
-	QTextEdit::focusOutEvent(e);
+    managePlaceholder(false);
+    QTextEdit::focusOutEvent(e);
+}
+
+void UBTGAdaptableText::insertFromMimeData(const QMimeData *source)
+{
+    QMimeData editedMimeData;
+    QTextDocument textDoc;
+    QString plainText;
+
+    if (source->hasHtml())
+    {
+        textDoc.setHtml(source->html());
+        plainText += textDoc.toPlainText();
+    }
+    if (source->hasText())
+        if (textDoc.toPlainText() != source->text())
+            plainText += source->text();
+    if (source->hasUrls())
+    {
+        foreach(QUrl url, source->urls())
+        {
+            plainText += url.toString();
+        }
+    }
+
+    editedMimeData.setText(plainText);
+    QTextEdit::insertFromMimeData(&editedMimeData);
 }
 
 void UBTGAdaptableText::managePlaceholder(bool focus)
 {
-	if(focus){
-		if(toPlainText() == mPlaceHolderText){
-			setTextColor(QColor(Qt::black));
-			setPlainText("");
-		}
-		setCursorToTheEnd();
-	}
-	else{
-		if(toPlainText().isEmpty()){
-			setTextColor(QColor(Qt::lightGray));
-			setPlainText(mPlaceHolderText);
-		}
-	}
+    if(focus){
+        if(toPlainText() == mPlaceHolderText){
+            setTextColor(QColor(Qt::black));
+            setPlainText("");
+            setCursorToTheEnd();
+        }
+    }
+    else{
+        if(toPlainText().isEmpty()){
+            setTextColor(QColor(Qt::lightGray));
+            setPlainText(mPlaceHolderText);
+        }
+    }
 }
 
 void UBTGAdaptableText::setCursorToTheEnd()
 {
-	QTextDocument* doc = document();
-	if(NULL != doc){
-		QTextBlock block = doc->lastBlock();
-		QTextCursor cursor(doc);
-		cursor.setPosition(block.position() + block.length() - 1);
-		setTextCursor(cursor);
-	}
+    QTextDocument* doc = document();
+    if(NULL != doc){
+        QTextBlock block = doc->lastBlock();
+        QTextCursor cursor(doc);
+        cursor.setPosition(block.position() + block.length() - 1);
+        setTextCursor(cursor);
+    }
 }
 
 /***************************************************************************
@@ -287,10 +327,10 @@ UBDraggableWeb::UBDraggableWeb(QString& relativePath, QWidget* parent): QWebView
   , mDragStarted(false)
 
 {
-	if(!relativePath.startsWith("file://"))
-		mRelativePath = QUrl::fromLocalFile(relativePath).toString();
-	else
-		mRelativePath = relativePath;
+    if(!relativePath.startsWith("file://"))
+        mRelativePath = QUrl::fromLocalFile(relativePath).toString();
+    else
+        mRelativePath = relativePath;
     //NOOP
 }
 
@@ -437,7 +477,7 @@ tUBGEElementNode* UBTGMediaWidget::saveData()
     tUBGEElementNode* result = new tUBGEElementNode();
     QString relativePath = mMediaPath;
     relativePath = relativePath.replace(UBApplication::boardController->selectedDocument()->persistencePath()+"/","");
-	result->name = "media";
+    result->name = "media";
     result->attributes.insert("title",mpTitle->text());
     result->attributes.insert("relativePath",relativePath);
     result->attributes.insert("mediaType",mMediaType);
@@ -536,9 +576,9 @@ void UBTGMediaWidget::createWorkWidget(bool forceFlashMediaType)
             mpMediaLayout = new QHBoxLayout(mpWorkWidget);
             mpWorkWidget->setLayout(mpMediaLayout);
         }
-        
+
         mpMediaLayout->addStretch(1);
-        
+
         if(mpMediaLabelWidget){
             mpMediaLabelWidget->setFixedHeight(mMediaWidgetHeight);
             mpMediaLabelWidget->setParent(mpWorkWidget);
@@ -597,7 +637,7 @@ void UBTGMediaWidget::mousePressEvent(QMouseEvent *event)
         QMimeData *mimeData = new QMimeData();
         QList<QUrl> urlList;
 #ifdef Q_WS_WIN
-		urlList << QUrl::fromLocalFile(mMediaPath);
+        urlList << QUrl::fromLocalFile(mMediaPath);
 #else
         urlList << QUrl(mMediaPath);
 #endif
@@ -643,11 +683,11 @@ UBTGUrlWidget::~UBTGUrlWidget()
 
 void UBTGUrlWidget::onUrlEditionFinished()
 {
-	QString url = mpUrl->text();
-	if(url.length() && !url.startsWith("http://") && !url.startsWith("https://") && !url.startsWith("ftp://") && !url.startsWith("sftp://") && !url.startsWith("http://")){
-		mpUrl->setText("http://" + mpUrl->text());
-		setFocus();
-	}
+    QString url = mpUrl->text();
+    if(url.length() && !url.startsWith("http://") && !url.startsWith("https://") && !url.startsWith("ftp://") && !url.startsWith("sftp://") && !url.startsWith("http://")){
+        mpUrl->setText("http://" + mpUrl->text());
+        setFocus();
+    }
 }
 
 void UBTGUrlWidget::initializeWithDom(QDomElement element)
diff --git a/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.h b/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.h
index 367f9f9..ba944dd 100644
--- a/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.h
+++ b/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBTEACHERGUIDEWIDGETSTOOLS_H
 #define UBTEACHERGUIDEWIDGETSTOOLS_H
 
@@ -102,6 +103,7 @@ class UBTGAdaptableText : public QTextEdit
 public:
     explicit UBTGAdaptableText(QTreeWidgetItem* widget = 0, QWidget *parent = 0, const char* name = "UBTGAdaptableText");
     void showText(const QString & text);
+    void resetText();
     void bottomMargin(int newValue);
     void setPlaceHolderText(QString text);
     QString text();
@@ -117,6 +119,7 @@ protected:
     void showEvent(QShowEvent* e);
     void focusInEvent(QFocusEvent* e);
     void focusOutEvent(QFocusEvent* e);
+    virtual void insertFromMimeData(const QMimeData *source);
 
 private:
     void setCursorToTheEnd();
diff --git a/Sankore-3.1/src/gui/UBThumbnailView.cpp b/Sankore-3.1/src/gui/UBThumbnailView.cpp
index ebdfa89..e77c940 100644
--- a/Sankore-3.1/src/gui/UBThumbnailView.cpp
+++ b/Sankore-3.1/src/gui/UBThumbnailView.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBThumbnailView.h"
 #include "domain/UBGraphicsScene.h"
 
diff --git a/Sankore-3.1/src/gui/UBThumbnailView.h b/Sankore-3.1/src/gui/UBThumbnailView.h
index 183c187..1e58548 100644
--- a/Sankore-3.1/src/gui/UBThumbnailView.h
+++ b/Sankore-3.1/src/gui/UBThumbnailView.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBTHUMBNAILVIEW_H_
 #define UBTHUMBNAILVIEW_H_
 
diff --git a/Sankore-3.1/src/gui/UBThumbnailWidget.cpp b/Sankore-3.1/src/gui/UBThumbnailWidget.cpp
index f8eb1b0..4605d5e 100644
--- a/Sankore-3.1/src/gui/UBThumbnailWidget.cpp
+++ b/Sankore-3.1/src/gui/UBThumbnailWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,922 +18,988 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-#include <QString>
-#include <QCursor>
-
-#include "UBThumbnailWidget.h"
-#include "UBRubberBand.h"
-#include "UBMainWindow.h"
-
-#include "board/UBBoardController.h"
-
-#include "core/UBSettings.h"
-#include "core/UBApplication.h"
-
-#include "document/UBDocumentProxy.h"
-#include "document/UBDocumentController.h"
-
-#include "core/memcheck.h"
-
-UBThumbnailWidget::UBThumbnailWidget(QWidget* parent)
-    : QGraphicsView(parent)
-    , mThumbnailWidth(UBSettings::defaultThumbnailWidth)
-    , mSpacing(UBSettings::thumbnailSpacing)
-    , mLastSelectedThumbnail(0)
-    , mSelectionSpan(0)
-    , mPrevLassoRect(QRect())
-    , mLassoRectItem(0)
-
-{
-    // By default, the drag is possible
-    bCanDrag = true;
-    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::TextAntialiasing);
-    setFrameShape(QFrame::NoFrame);
-    setScene(&mThumbnailsScene);
-
-    setAlignment(Qt::AlignLeft | Qt::AlignTop);
-
-    connect(&mThumbnailsScene, SIGNAL(selectionChanged()), this, SLOT(sceneSelectionChanged()));
-}
-
-
-UBThumbnailWidget::~UBThumbnailWidget()
-{
-    disconnect(&mThumbnailsScene, SIGNAL(selectionChanged()));
-}
-
-
-void UBThumbnailWidget::setThumbnailWidth(qreal pThumbnailWidth)
-{
-    mThumbnailWidth = pThumbnailWidth;
-
-    refreshScene();
-}
-
-
-void UBThumbnailWidget::setSpacing(qreal pSpacing)
-{
-    mSpacing = pSpacing;
-
-    refreshScene();
-}
-
-
-void UBThumbnailWidget::setGraphicsItems(const QList<QGraphicsItem*>& pGraphicsItems
-        , const QList<QUrl>& pItemsPaths
-        , const QStringList pLabels
-        , const QString& pMimeType)
-{
-    mGraphicItems = pGraphicsItems;
-    mItemsPaths = pItemsPaths;
-    mMimeType = pMimeType;
-    mLabels = pLabels;
-
-    foreach(QGraphicsItem* it, mThumbnailsScene.items())
-    {
-        mThumbnailsScene.removeItem(it, true);
-    }
-
-    // set lasso to 0 as it has been cleared as well
-    mLassoRectItem = 0;
-
-    foreach (QGraphicsItem* item, pGraphicsItems)
-    {
-        if (item->scene() != &mThumbnailsScene)
-        {
-            mThumbnailsScene.addItem(item);
-        }
-    }
-
-    mLabelsItems.clear();
-
-    foreach (const QString label, pLabels)
-    {
-        QFontMetrics fm(font());
-        UBThumbnailTextItem *labelItem =
-            new UBThumbnailTextItem(label); // deleted while replace or by the scene destruction
-
-        mThumbnailsScene.addItem(labelItem);
-        mLabelsItems << labelItem;
-    }
-
-    refreshScene();
-
-    mLastSelectedThumbnail = 0;
-}
-
-
-void UBThumbnailWidget::refreshScene()
-{
-    int nbColumns = (geometry().width() - mSpacing) / (mThumbnailWidth + mSpacing);
-
-    int labelSpacing = 0;
-
-    if (mLabelsItems.size() > 0)
-    {
-        QFontMetrics fm(mLabelsItems.at(0)->font());
-        labelSpacing = UBSettings::thumbnailSpacing + fm.height();  // TODO UB 4.x where is 20 from ??? configure ?? compute based on mSpacing ?? JBA Is it the font height?
-    }
-    nbColumns = qMax(nbColumns, 1);
-
-    qreal thumbnailHeight = mThumbnailWidth / UBSettings::minScreenRatio;
-
-    for (int i = 0; i < mGraphicItems.size(); i++)
-    {
-        QGraphicsItem* item = mGraphicItems.at(i);
-
-        qreal scaleWidth = mThumbnailWidth / item->boundingRect().width();
-        qreal scaleHeight = thumbnailHeight / item->boundingRect().height();
-
-        qreal scaleFactor = qMin(scaleWidth, scaleHeight);
-
-        //bitmap should not be stretched
-        UBThumbnail* pix = dynamic_cast<UBThumbnail*>(item);
-        if (pix)
-            scaleFactor = qMin(scaleFactor, 1.0);
-
-        QTransform transform;
-        transform.scale(scaleFactor, scaleFactor);
-
-        item->setTransform(transform);
-
-        item->setFlag(QGraphicsItem::ItemIsSelectable, true);
-
-        int columnIndex = i % nbColumns;
-        int rowIndex = i / nbColumns;
-
-        if (pix)
-        {
-            pix->setColumn(columnIndex);
-            pix->setRow(rowIndex);
-        }
-
-        int w = item->boundingRect().width();
-        int h = item->boundingRect().height();
-        QPointF pos(
-                mSpacing + (mThumbnailWidth - w * scaleFactor) / 2 + columnIndex * (mThumbnailWidth + mSpacing),
-                mSpacing + rowIndex * (thumbnailHeight + mSpacing + labelSpacing) + (thumbnailHeight - h * scaleFactor) / 2);
-
-        item->setPos(pos);
-
-        if (mLabelsItems.size() > i)
-        {
-            QFontMetrics fm(mLabelsItems.at(i)->font(), this);
-            QString elidedText = fm.elidedText(mLabels.at(i), Qt::ElideRight, mThumbnailWidth);
-
-            mLabelsItems.at(i)->setPlainText(elidedText);
-            mLabelsItems.at(i)->setWidth(fm.width(elidedText) + 2 * mLabelsItems.at(i)->document()->documentMargin());
-
-            pos.setY(pos.y() + (thumbnailHeight + h * scaleFactor) / 2 + 5);
-            qreal labelWidth = fm.width(elidedText);
-            pos.setX(mSpacing + (mThumbnailWidth - labelWidth) / 2 + columnIndex * (mThumbnailWidth + mSpacing));
-            mLabelsItems.at(i)->setPos(pos);
-        }
-    }
-
-    QScrollBar *vertScrollBar = verticalScrollBar();
-    int scrollBarThickness = 0;
-    if (vertScrollBar && vertScrollBar->isVisible())
-        scrollBarThickness = vertScrollBar->width();
-
-    setSceneRect(0, 0,
-            geometry().width() - scrollBarThickness,
-            mSpacing + ((((mGraphicItems.size() - 1) / nbColumns) + 1) * (thumbnailHeight + mSpacing + labelSpacing)));
-}
-
-
-QList<QGraphicsItem*> UBThumbnailWidget::selectedItems()
-{
-    QList<QGraphicsItem*> sortedSelectedItems = mThumbnailsScene.selectedItems();
-    qSort(sortedSelectedItems.begin(), sortedSelectedItems.end(), thumbnailLessThan);
-    return sortedSelectedItems;
-}
-
-
-void UBThumbnailWidget::mousePressEvent(QMouseEvent *event)
-{
-    mClickTime = QTime::currentTime();
-    mMousePressPos = event->pos();
-
-    UBSceneThumbnailPixmap* sceneItem = dynamic_cast<UBSceneThumbnailPixmap*>(itemAt(mMousePressPos));
-    if(sceneItem==NULL)
-    {
-        event->ignore();
-        return;
-    }
-    //if(sceneItem){
-    //	int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneItem->sceneIndex());
-    //	if(pageIndex == 0){
-    //        event->ignore();
-    //        return;
-    //	}
-    //}
-
-    mMousePressScenePos = mapToScene(mMousePressPos);
-    QGraphicsItem* underlyingItem = itemAt(mMousePressPos);
-    UBThumbnail *previousSelectedThumbnail = mLastSelectedThumbnail;
-
-    if (!dynamic_cast<UBThumbnail*>(underlyingItem))
-    {
-        deleteLasso();
-
-        UBRubberBand rubberBand(QRubberBand::Rectangle);
-        QStyleOption option;
-        option.initFrom(&rubberBand);
-
-        mPrevLassoRect = QRect();
-        mLassoRectItem = new QGraphicsRectItem(0, scene());
-
-#ifdef Q_WS_MAC
-        // The following code must stay in synch with <Qt installation folder>\src\gui\styles\qmacstyle_mac.mm
-        QColor strokeColor;
-        strokeColor.setHsvF(0, 0, 0.86, 1.0);
-        mLassoRectItem->setPen(QPen(strokeColor));
-        QColor fillColor(option.palette.color(QPalette::Disabled, QPalette::Highlight));
-        fillColor.setHsvF(0, 0, 0.53, 0.25);
-        mLassoRectItem->setBrush(fillColor);
-#else
-        // The following code must stay in synch with <Qt installation folder>\src\gui\styles\qwindowsxpstyle.cpp
-        QColor highlight = option.palette.color(QPalette::Active, QPalette::Highlight);
-        mLassoRectItem->setPen(highlight.darker(120));
-        QColor dimHighlight(qMin(highlight.red() / 2 + 110, 255),
-                            qMin(highlight.green() / 2 + 110, 255),
-                            qMin(highlight.blue() / 2 + 110, 255),
-                            127);
-        mLassoRectItem->setBrush(dimHighlight);
-#endif
-
-        mLassoRectItem->setZValue(10000);
-        mLassoRectItem->setRect(QRectF(mMousePressScenePos, QSizeF()));
-
-        if (Qt::ControlModifier & event->modifiers() || Qt::ShiftModifier & event->modifiers())
-        {
-           // mSelectedThumbnailItems = selectedItems().toSet();
-            return;
-        }
-
-        mSelectedThumbnailItems.clear();
-        mPreviouslyIncrementalSelectedItemsX.clear();
-        mPreviouslyIncrementalSelectedItemsY.clear();
-        QGraphicsView::mousePressEvent(event);
-    }
-    else if (Qt::ShiftModifier & event->modifiers())
-    {
-        if (previousSelectedThumbnail)
-        {
-            QGraphicsItem* previousSelectedItem = dynamic_cast<QGraphicsItem*>(previousSelectedThumbnail);
-            if (previousSelectedItem)
-            {
-                int index1 = mGraphicItems.indexOf(previousSelectedItem);
-                int index2 = mGraphicItems.indexOf(underlyingItem);
-                if (-1 == index2)
-                {
-                    mSelectedThumbnailItems = selectedItems().toSet();
-                    return;
-                }
-                mSelectionSpan = index2 - index1;
-                selectItems(qMin(index1, index2), mSelectionSpan < 0 ? - mSelectionSpan + 1 : mSelectionSpan + 1);
-                return;
-            }
-        }
-    }
-    else
-    {
-        mLastSelectedThumbnail = dynamic_cast<UBThumbnail*>(underlyingItem);
-        if (!underlyingItem->isSelected())
-        {
-            int index = mGraphicItems.indexOf(underlyingItem);
-            selectItemAt(index, Qt::ControlModifier & event->modifiers());
-        }
-        else
-        {
-            QGraphicsView::mousePressEvent(event);
-        }
-        if (!mLastSelectedThumbnail && mGraphicItems.count() > 0)
-            mLastSelectedThumbnail = dynamic_cast<UBThumbnail*>(mGraphicItems.at(0));
-        mSelectionSpan = 0;
-        return;
-    }
-}
-
-
-void UBThumbnailWidget::mouseMoveEvent(QMouseEvent *event)
-{
-    int distance = (mMousePressPos - event->pos()).manhattanLength();
-
-    if (0 == (event->buttons() & Qt::LeftButton) || distance < QApplication::startDragDistance())
-        return;
-
-    if (mLassoRectItem)
-    {
-        bSelectionInProgress = true;
-        int incrementLassoMinWidth = 2;
-        QPointF currentScenePos = mapToScene(event->pos());
-        QRectF lassoRect(
-            qMin(mMousePressScenePos.x(), currentScenePos.x()), qMin(mMousePressScenePos.y(), currentScenePos.y()),
-            qAbs(mMousePressScenePos.x() - currentScenePos.x()), qAbs(mMousePressScenePos.y() - currentScenePos.y()));
-        if (QPoint() == prevMoveMousePos)
-            prevMoveMousePos = currentScenePos;
-        QRectF incrementXSelection(
-            qMin(prevMoveMousePos.x(), currentScenePos.x()), qMin(mMousePressScenePos.y(), currentScenePos.y()),
-            qAbs(prevMoveMousePos.x() - currentScenePos.x())+incrementLassoMinWidth, qAbs(mMousePressScenePos.y() - currentScenePos.y()));
-        QRectF incrementYSelection(
-            qMin(mMousePressScenePos.x(), currentScenePos.x()), qMin(prevMoveMousePos.y(), currentScenePos.y()),
-            qAbs(mMousePressScenePos.x() - currentScenePos.x()), qAbs(prevMoveMousePos.y() - currentScenePos.y())+incrementLassoMinWidth);
-
-        prevMoveMousePos = currentScenePos;
-        mLassoRectItem->setRect(lassoRect);
-
-        QSet<QGraphicsItem*> lassoSelectedThumbnailItems;
-
-        QSet<QGraphicsItem*> toUnset;
-        QSet<QGraphicsItem*> toSet;
-
-        // for horizontal moving
-        QSet<QGraphicsItem*> incSelectedItemsX = scene()->items(incrementXSelection, Qt::IntersectsItemBoundingRect).toSet();
-        foreach (QGraphicsItem *lassoSelectedItem, incSelectedItemsX)
-        {
-            if (lassoSelectedItem)
-            {
-                UBSceneThumbnailPixmap *thumbnailItem = dynamic_cast<UBSceneThumbnailPixmap*>(lassoSelectedItem);
-                if (thumbnailItem)
-                     lassoSelectedThumbnailItems += lassoSelectedItem;
-            }
-        }
-
-        if(lassoRect.width() < mPrevLassoRect.width())
-        {
-            if (!lassoSelectedThumbnailItems.contains(mPreviouslyIncrementalSelectedItemsX))
-                toUnset += mPreviouslyIncrementalSelectedItemsX - lassoSelectedThumbnailItems;
-
-        }
-        mPreviouslyIncrementalSelectedItemsX = lassoSelectedThumbnailItems;
-
-        toSet += lassoSelectedThumbnailItems + mPreviouslyIncrementalSelectedItemsX;
-
-
-        lassoSelectedThumbnailItems.clear();
-
-        // for vertical moving
-
-        QSet<QGraphicsItem*> incSelectedItemsY = scene()->items(incrementYSelection, Qt::IntersectsItemBoundingRect).toSet();
-        foreach (QGraphicsItem *lassoSelectedItem, incSelectedItemsY)
-        {
-            if (lassoSelectedItem)
-            {
-                UBSceneThumbnailPixmap *thumbnailItem = dynamic_cast<UBSceneThumbnailPixmap*>(lassoSelectedItem);
-
-                if (thumbnailItem)
-                    lassoSelectedThumbnailItems += lassoSelectedItem;
-            }
-        }
-
-        if(lassoRect.height() < mPrevLassoRect.height())
-        {
-            if (!lassoSelectedThumbnailItems.contains(mPreviouslyIncrementalSelectedItemsY))
-                toUnset += mPreviouslyIncrementalSelectedItemsY - lassoSelectedThumbnailItems;
-
-        }
-        mPreviouslyIncrementalSelectedItemsY = lassoSelectedThumbnailItems;
-
-
-        toSet += lassoSelectedThumbnailItems + mPreviouslyIncrementalSelectedItemsY;
-
-
-        toSet -= toUnset;
-
-        foreach (QGraphicsItem *item, toSet)
-        {
-            item->setSelected(true);
-        }
-
-        foreach (QGraphicsItem *item, toUnset)
-        {
-            item->setSelected(false);
-        }
-
-        mSelectedThumbnailItems += lassoSelectedThumbnailItems;
-        mPrevLassoRect = lassoRect;
-
-        if (Qt::ControlModifier & event->modifiers())
-        {
-            for (int i = 0; i < mSelectedThumbnailItems.count()-1; i++)
-            {
-                mSelectedThumbnailItems.values().at(i)->setSelected(true);
-            }
-        }
-    }
-    else
-    {
-        bSelectionInProgress = false;
-        if (0 == selectedItems().size())
-            return;
-
-        if(bCanDrag)
-        {
-            QDrag *drag = new QDrag(this);
-            QMimeData *mime = new QMimeData();
-
-            if (mMimeType.length() > 0)
-                mime->setData(mMimeType, QByteArray()); // trick the d&d system to register our own mime type
-
-            drag->setMimeData(mime);
-
-            QList<QUrl> qlElements;
-
-            foreach (QGraphicsItem* item, selectedItems())
-            {
-                if (mGraphicItems.contains(item))
-                {
-                    if (mGraphicItems.indexOf(item) <= mItemsPaths.size()){
-                        qlElements << mItemsPaths.at(mGraphicItems.indexOf(item));
-                    }
-                }
-            }
-
-            if (qlElements.size() > 0){
-                            mime->setUrls(qlElements);
-                            drag->setMimeData(mime);
-                            drag->exec(Qt::CopyAction);
-            }
-        }
-    }
-
-    QGraphicsView::mouseMoveEvent(event);
-}
-
-
-void UBThumbnailWidget::mouseReleaseEvent(QMouseEvent *event)
-{
-    int elapsedTimeSincePress = mClickTime.elapsed();
-    prevMoveMousePos = QPoint();
-    deleteLasso();
-    QGraphicsView::mouseReleaseEvent(event);
-
-    if(elapsedTimeSincePress < STARTDRAGTIME) {
-        emit mouseClick(itemAt(event->pos()), 0);
-    }
-}
-
-
-void UBThumbnailWidget::keyPressEvent(QKeyEvent *event)
-{
-    if (mLastSelectedThumbnail)
-    {
-        QGraphicsItem *lastSelectedGraphicsItem = dynamic_cast<QGraphicsItem*>(mLastSelectedThumbnail);
-        if (!lastSelectedGraphicsItem) return;
-        int startSelectionIndex = mGraphicItems.indexOf(lastSelectedGraphicsItem);
-        int previousSelectedThumbnailIndex = startSelectionIndex + mSelectionSpan;
-
-        switch (event->key())
-        {
-        case Qt::Key_Down:
-        case Qt::Key_Up:
-            {
-                if (rowCount() <= 1) break;
-                if (Qt::ShiftModifier & event->modifiers())
-                {
-                    int endSelectionIndex;
-                    if (Qt::Key_Down == event->key())
-                    {
-                        endSelectionIndex = previousSelectedThumbnailIndex + columnCount();
-                        if (endSelectionIndex >= mGraphicItems.count()) break;
-                    }
-                    else
-                    {
-                        endSelectionIndex = previousSelectedThumbnailIndex - columnCount();
-                        if (endSelectionIndex < 0) break;
-                    }
-
-                    int startIndex = startSelectionIndex < endSelectionIndex ? startSelectionIndex : endSelectionIndex;
-                    int count = startSelectionIndex < endSelectionIndex ? endSelectionIndex - startSelectionIndex + 1 : startSelectionIndex - endSelectionIndex + 1;
-                    mSelectionSpan = startSelectionIndex < endSelectionIndex ? (count - 1) : - (count - 1);
-                    selectItems(startIndex, count);
-                }
-                else
-                {
-                    int toSelectIndex;
-                    if (Qt::Key_Down == event->key())
-                    {
-                        toSelectIndex = previousSelectedThumbnailIndex + columnCount();
-                        if (toSelectIndex >= mGraphicItems.count()) break;
-                    }
-                    else
-                    {
-                        toSelectIndex = previousSelectedThumbnailIndex - columnCount();
-                        if (toSelectIndex < 0) break;
-                    }
-
-                    selectItemAt(toSelectIndex, Qt::ControlModifier & event->modifiers());
-                    mSelectionSpan = 0;
-                }
-            }
-            break;
-
-        case Qt::Key_Left:
-        case Qt::Key_Right:
-            {
-                QGraphicsItem *previousSelectedItem = mGraphicItems.at(previousSelectedThumbnailIndex);
-                UBThumbnail *previousSelectedThumbnail = dynamic_cast<UBThumbnail*>(previousSelectedItem);
-                if (!previousSelectedThumbnail) break;
-
-                if (Qt::Key_Left == event->key())
-                {
-                    if (0 == previousSelectedThumbnail->column()) break;
-                }
-                else
-                {
-                    if (previousSelectedThumbnail->column() == columnCount() - 1 ||
-                        previousSelectedThumbnailIndex == mGraphicItems.count() - 1) break;
-                }
-
-                if (Qt::ShiftModifier & event->modifiers())
-                {
-                    int endSelectionIndex;
-                    if (Qt::Key_Left == event->key())
-                    {
-                        endSelectionIndex = previousSelectedThumbnailIndex - 1;
-                        if (endSelectionIndex < 0) break;
-                    }
-                    else
-                    {
-                        endSelectionIndex = previousSelectedThumbnailIndex + 1;
-                        if (endSelectionIndex >= mGraphicItems.count()) break;
-                    }
-
-                    int startIndex = startSelectionIndex < endSelectionIndex ? startSelectionIndex : endSelectionIndex;
-                    int count = startSelectionIndex < endSelectionIndex ? endSelectionIndex - startSelectionIndex + 1 : startSelectionIndex - endSelectionIndex + 1;
-                    mSelectionSpan = startSelectionIndex < endSelectionIndex ? (count - 1) : - (count - 1);
-                    selectItems(startIndex, count);
-                }
-                else
-                {
-                    if (Qt::Key_Left == event->key())
-                        selectItemAt(previousSelectedThumbnailIndex - 1, Qt::ControlModifier & event->modifiers());
-                    else
-                        selectItemAt(previousSelectedThumbnailIndex + 1, Qt::ControlModifier & event->modifiers());
-
-                    mSelectionSpan = 0;
-                }
-            }
-            break;
-
-        case Qt::Key_Home:
-            {
-                if (Qt::ShiftModifier & event->modifiers())
-                {
-                    mSelectionSpan = - startSelectionIndex;
-                    selectItems(0, startSelectionIndex + 1);
-                }
-                else
-                {
-                    selectItemAt(0, Qt::ControlModifier & event->modifiers());
-                    mSelectionSpan = 0;
-                }
-            }
-            break;
-
-        case Qt::Key_End:
-            {
-                if (Qt::ShiftModifier & event->modifiers())
-                {
-                    mSelectionSpan = mGraphicItems.count() - startSelectionIndex - 1;
-                    selectItems(startSelectionIndex, mSelectionSpan + 1);
-                }
-                else
-                {
-                    selectItemAt(mGraphicItems.count() - 1, Qt::ControlModifier & event->modifiers());
-                    mSelectionSpan = 0;
-                }
-            }
-            break;
-        case Qt::Key_A:
-            {
-                if (Qt::ControlModifier & event->modifiers())
-                    selectAll();
-            }
-            break;
-        }
-    }
-    QGraphicsView::keyPressEvent(event);
-}
-
-
-void UBThumbnailWidget::focusInEvent(QFocusEvent *event)
-{
-    Q_UNUSED(event);
-
-    if (0 == selectedItems().count() && mGraphicItems.count() > 0 && Qt::TabFocusReason == event->reason())
-    {
-        selectItemAt(0);
-        mSelectionSpan = 0;
-    }
-}
-
-
-void UBThumbnailWidget::resizeEvent(QResizeEvent *event)
-{
-    Q_UNUSED(event);
-
-    refreshScene();
-
-    emit resized();
-}
-
-
-void UBThumbnailWidget::sceneSelectionChanged()
-{
-    emit selectionChanged();
-}
-
-
-void UBThumbnailWidget::selectItemAt(int pIndex, bool extend)
-{
-    QGraphicsItem* itemToSelect = 0;
-
-    if (pIndex >= 0 && pIndex < mGraphicItems.size())
-        itemToSelect = mGraphicItems.at(pIndex);
-
-    foreach (QGraphicsItem* item, items())
-    {
-        if (item == itemToSelect)
-        {
-            mLastSelectedThumbnail = dynamic_cast<UBThumbnail*>(item);
-            item->setSelected(true);
-            ensureVisible(item);
-        }
-        else if (!extend)
-        {
-            item->setSelected(false);
-        }
-    }
-}
-
-void UBThumbnailWidget::unselectItemAt(int pIndex)
-{
-    if (pIndex >= 0 && pIndex < mGraphicItems.size())
-    {
-        QGraphicsItem *itemToUnselect = mGraphicItems.at(pIndex);
-        itemToUnselect->setSelected(false);
-    }
-}
-
-
-void UBThumbnailWidget::selectItems(int startIndex, int count)
-{
-    for (int i = 0; i < mGraphicItems.count(); i++)
-    {
-        mGraphicItems.at(i)->setSelected(i >= startIndex && i < startIndex + count);
-    }
-}
-
-
-void UBThumbnailWidget::selectAll()
-{
-    foreach (QGraphicsItem* item, mGraphicItems)
-    {
-        item->setSelected(true);
-    }
-}
-
-int UBThumbnailWidget::rowCount() const
-{
-    UBThumbnail *lastThumbnail = dynamic_cast<UBThumbnail*>(mGraphicItems.last());
-    return lastThumbnail ? lastThumbnail->row() + 1 : 0;
-}
-
-int UBThumbnailWidget::columnCount() const
-{
-    UBThumbnail *lastThumbnail = dynamic_cast<UBThumbnail*>(mGraphicItems.last());
-    if (!lastThumbnail) return 0;
-    int lastRow = lastThumbnail->row();
-    int lastColumn = lastThumbnail->column();
-    return lastRow > 0 ? (mGraphicItems.count() - lastColumn - 1) / lastRow : mGraphicItems.count();
-}
-
-
-void UBThumbnailWidget::mouseDoubleClickEvent(QMouseEvent * event)
-{
-    QGraphicsItem* item = itemAt(event->pos());
-
-    if (item)
-    {
-        int index = mGraphicItems.indexOf(item);
-        emit mouseDoubleClick(item, index);
-    }
-}
-
-
-bool UBThumbnailWidget::thumbnailLessThan(QGraphicsItem* item1, QGraphicsItem* item2)
-{
-    UBThumbnail *thumbnail1 = dynamic_cast<UBThumbnail*>(item1);
-    UBThumbnail *thumbnail2 = dynamic_cast<UBThumbnail*>(item2);
-    if (thumbnail1 && thumbnail2)
-    {
-        if (thumbnail1->row() != thumbnail2->row())
-            return thumbnail1->row() < thumbnail2->row();
-        else
-            return thumbnail1->column() < thumbnail2->column();
-    }
-    return false;
-}
-
-void UBThumbnailWidget::deleteLasso()
-{
-    if (mLassoRectItem && scene())
-    {
-        scene()->removeItem(mLassoRectItem);
-        delete mLassoRectItem;
-        mLassoRectItem = 0;
-    }
-}
-
-
-UBThumbnail::UBThumbnail()
-    : mAddedToScene(false)
-{
-    mSelectionItem = new QGraphicsRectItem(0, 0, 0, 0);
-    mSelectionItem->setPen(QPen(UBSettings::treeViewBackgroundColor, 8));
-    // TODO UB 4.x fix nasty dependencies : 8 is a bit less than half of UBThumbnailWidget.mSpacing
-}
-
-UBThumbnail::~UBThumbnail()
-{
-    if (mSelectionItem && !mAddedToScene)
-        delete mSelectionItem;
-}
-
-
-UBSceneThumbnailNavigPixmap::UBSceneThumbnailNavigPixmap(const QPixmap& pix, UBDocumentProxy* proxy, int pSceneIndex)
-    : UBSceneThumbnailPixmap(pix, proxy, pSceneIndex)
-    , bButtonsVisible(false)
-    , bCanDelete(false)
-    , bCanMoveUp(false)
-    , bCanMoveDown(false)
-    , bCanDuplicate(false)
-{
-    if(0 <= UBDocumentContainer::pageFromSceneIndex(pSceneIndex)){
-        setAcceptsHoverEvents(true);
-        setFlag(QGraphicsItem::ItemIsSelectable, true);
-    }
-}
-
-UBSceneThumbnailNavigPixmap::~UBSceneThumbnailNavigPixmap()
-{
-
-}
-
-void UBSceneThumbnailNavigPixmap::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
-{
-    event->accept();
-    updateButtonsState();
-    update();
-}
-
-void UBSceneThumbnailNavigPixmap::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
-{
-    event->accept();
-    bButtonsVisible = false;
-    update();
-}
-
-void UBSceneThumbnailNavigPixmap::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
-{
-    Q_UNUSED(option);
-    Q_UNUSED(widget);
-
-    UBSceneThumbnailPixmap::paint(painter, option, widget);
-    if(bButtonsVisible)
-    {
-        if(bCanDelete)
-            painter->drawPixmap(0, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/close.svg"));
-        else
-            painter->drawPixmap(0, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/closeDisabled.svg"));
-        if(bCanDuplicate)
-            painter->drawPixmap(BUTTONSIZE + BUTTONSPACING, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/duplicate.svg"));
-        else
-            painter->drawPixmap(BUTTONSIZE + BUTTONSPACING, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/duplicateDisabled.svg"));
-        if(bCanMoveUp)
-            painter->drawPixmap(2*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/moveUp.svg"));
-        else
-            painter->drawPixmap(2*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/moveUpDisabled.svg"));
-        if(bCanMoveDown)
-            painter->drawPixmap(3*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/menu.svg"));
-        else
-            painter->drawPixmap(3*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/menuDisabled.svg"));
-    }
-}
-
-void UBSceneThumbnailNavigPixmap::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    QPointF p = event->pos();
-
-    // Here we check the position of the click and verify if it has to trig an action or not.
-    if(bCanDelete && p.x() >= 0 && p.x() <= BUTTONSIZE && p.y() >= 0 && p.y() <= BUTTONSIZE)
-        deletePage();
-    if(bCanDuplicate && p.x() >= BUTTONSIZE + BUTTONSPACING && p.x() <= 2*BUTTONSIZE + BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE)
-        duplicatePage();
-    if(bCanMoveUp && p.x() >= 2*(BUTTONSIZE + BUTTONSPACING) && p.x() <= 3*BUTTONSIZE + 2*BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE)
-        moveUpPage();
-    if(bCanMoveDown && p.x() >= 3*(BUTTONSIZE + BUTTONSPACING) && p.x() <= 4*BUTTONSIZE + 3*BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE)
-        moveDownPage();
-
-    event->accept();
-}
-
-void UBSceneThumbnailNavigPixmap::updateButtonsState()
-{
-
-	bCanDelete = false;
-    bCanMoveUp = false;
-    bCanMoveDown = false;
-    bCanDuplicate = false;
-
-    if(proxy()){
-    	int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneIndex());
-    	UBDocumentController* documentController = UBApplication::documentController;
-    	bCanDelete = documentController->pageCanBeDeleted(pageIndex);
-        bCanMoveUp = documentController->pageCanBeMovedUp(pageIndex);
-        bCanMoveDown = documentController->pageCanBeMovedDown(pageIndex);
-        bCanDuplicate = documentController->pageCanBeDuplicated(pageIndex);
-    }
-
-    if(bCanDelete || bCanMoveUp || bCanMoveDown || bCanDuplicate)
-        bButtonsVisible = true;
-}
-
-void UBSceneThumbnailNavigPixmap::deletePage()
-{
-	if(UBApplication::mainWindow->yesNoQuestion(QObject::tr("Remove Page"), QObject::tr("Are you sure you want to remove 1 page from the selected document '%0'?").arg(UBApplication::documentController->selectedDocument()->metaData(UBSettings::documentName).toString()))){
-		UBApplication::boardController->deleteScene(sceneIndex());
-	}
-}
-
-void UBSceneThumbnailNavigPixmap::duplicatePage()
-{
-	UBApplication::boardController->duplicateScene(sceneIndex());
-}
-
-void UBSceneThumbnailNavigPixmap::moveUpPage()
-{
-    if (sceneIndex()!=0)
-        UBApplication::boardController->moveSceneToIndex(sceneIndex(), sceneIndex() - 1);
-}
-
-void UBSceneThumbnailNavigPixmap::moveDownPage()
-{
-    if (sceneIndex() < UBApplication::boardController->selectedDocument()->pageCount()-1)
-        UBApplication::boardController->moveSceneToIndex(sceneIndex(), sceneIndex() + 1);
-}
-
-void UBImgTextThumbnailElement::Place(int row, int col, qreal width, qreal height)
-{
-    int labelSpacing = 0;
-	if(this->caption)
-	{
-        QFontMetrics fm(this->caption->font());
-        labelSpacing = UBSettings::thumbnailSpacing + fm.height();
-	}
-	if(this->thumbnail)
-	{
-        int w = this->thumbnail->boundingRect().width();
-        int h = this->thumbnail->boundingRect().height();
-
-		qreal scaleWidth = width / w;
-        qreal scaleHeight = height / h;
-        qreal scaleFactor = qMin(scaleWidth, scaleHeight);
-        UBThumbnail* pix = dynamic_cast<UBThumbnail*>(this->thumbnail);
-
-        QTransform transform;
-        transform.scale(scaleFactor, scaleFactor);
-
-        // Apply the scaling
-        this->thumbnail->setTransform(transform);
-        this->thumbnail->setFlag(QGraphicsItem::ItemIsSelectable, true);
-
-        if(pix)
-        {
-            pix->setColumn(col);
-            pix->setRow(row);
-        }
-
-        QPointF pos(border + (width - w * scaleFactor) / 2 + col * (width + border),
-                    border + row * (height + border + labelSpacing) + (height - h * scaleFactor) / 2);
-
-        this->thumbnail->setPos(pos);
-
-		if(this->caption)
-		{
-            QFontMetrics fm(this->caption->font());
-            QString elidedText = fm.elidedText(this->caption->toPlainText(), Qt::ElideRight, width);
-
-            this->caption->setPlainText(elidedText);
-            this->caption->setWidth(fm.width(elidedText) + 2 * this->caption->document()->documentMargin());
-            pos.setY(pos.y() + (height + h * scaleFactor) / 2 + 5); // What is this 5 ??
-            qreal labelWidth = fm.width(elidedText);
-            pos.setX(border + (width - labelWidth) / 2 + col * (width + border));
-            this->caption->setPos(pos);
-		}
-	}
-}
+
+
+#include <QString>
+#include <QCursor>
+
+#include "UBThumbnailWidget.h"
+#include "UBRubberBand.h"
+#include "UBMainWindow.h"
+
+#include "board/UBBoardController.h"
+
+#include "core/UBSettings.h"
+#include "core/UBApplication.h"
+
+#include "document/UBDocumentProxy.h"
+#include "document/UBDocumentController.h"
+
+#include "core/memcheck.h"
+
+UBThumbnailWidget::UBThumbnailWidget(QWidget* parent)
+    : QGraphicsView(parent)
+    , mThumbnailWidth(UBSettings::defaultThumbnailWidth)
+    , mSpacing(UBSettings::thumbnailSpacing)
+    , mLastSelectedThumbnail(0)
+    , mSelectionSpan(0)
+    , mPrevLassoRect(QRect())
+    , mLassoRectItem(0)
+
+{
+    // By default, the drag is possible
+    bCanDrag = true;
+    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::TextAntialiasing);
+    setFrameShape(QFrame::NoFrame);
+    setScene(&mThumbnailsScene);
+
+    setAlignment(Qt::AlignLeft | Qt::AlignTop);
+
+    connect(&mThumbnailsScene, SIGNAL(selectionChanged()), this, SLOT(sceneSelectionChanged()));
+}
+
+
+UBThumbnailWidget::~UBThumbnailWidget()
+{
+    disconnect(&mThumbnailsScene, SIGNAL(selectionChanged()));
+}
+
+
+void UBThumbnailWidget::setThumbnailWidth(qreal pThumbnailWidth)
+{
+    mThumbnailWidth = pThumbnailWidth;
+
+    refreshScene();
+}
+
+
+void UBThumbnailWidget::setSpacing(qreal pSpacing)
+{
+    mSpacing = pSpacing;
+
+    refreshScene();
+}
+
+
+void UBThumbnailWidget::setGraphicsItems(const QList<QGraphicsItem*>& pGraphicsItems
+        , const QList<QUrl>& pItemsPaths
+        , const QStringList pLabels
+        , const QString& pMimeType)
+{
+    Q_ASSERT(pItemsPaths.count() == pLabels.count());
+    mGraphicItems = pGraphicsItems;
+    mItemsPaths = pItemsPaths;
+    mMimeType = pMimeType;
+    mLabels = pLabels;
+
+    foreach(QGraphicsItem* it, mThumbnailsScene.items())
+    {
+        mThumbnailsScene.removeItem(it, true);
+    }
+
+    // set lasso to 0 as it has been cleared as well
+    mLassoRectItem = 0;
+
+
+    mLabelsItems.clear();
+
+    foreach (const QString label, pLabels)
+    {
+        QFontMetrics fm(font());
+        UBThumbnailTextItem *labelItem =
+            new UBThumbnailTextItem(label); // deleted while replace or by the scene destruction
+
+        mThumbnailsScene.addItem(labelItem);
+        mLabelsItems << labelItem;
+    }
+
+    for (int i = 0; i < pGraphicsItems.count(); i++)
+    {
+        QGraphicsItem *item = pGraphicsItems.at(i);
+
+        UBSceneThumbnailPixmap *navigPixmap = dynamic_cast<UBSceneThumbnailPixmap *>(item);
+        if (navigPixmap)
+        {
+            navigPixmap->setLabel(mLabelsItems.at(i));
+            if (navigPixmap->isSelected())
+                mLabelsItems.at(i)->highlight(true);
+        }
+
+        if (item->scene() != &mThumbnailsScene)
+            mThumbnailsScene.addItem(item);
+    }
+
+    refreshScene();
+
+    mLastSelectedThumbnail = 0;
+}
+
+
+void UBThumbnailWidget::refreshScene()
+{
+    int nbColumns = (geometry().width() - mSpacing) / (mThumbnailWidth + mSpacing);
+
+    int labelSpacing = 0;
+
+    if (mLabelsItems.size() > 0)
+    {
+        QFontMetrics fm(mLabelsItems.at(0)->font());
+        labelSpacing = UBSettings::thumbnailSpacing + fm.height();  // TODO UB 4.x where is 20 from ??? configure ?? compute based on mSpacing ?? JBA Is it the font height?
+    }
+    nbColumns = qMax(nbColumns, 1);
+
+    qreal thumbnailHeight = mThumbnailWidth / UBSettings::minScreenRatio;
+
+    for (int i = 0; i < mGraphicItems.size(); i++)
+    {
+        QGraphicsItem* item = mGraphicItems.at(i);
+
+        qreal scaleWidth = mThumbnailWidth / item->boundingRect().width();
+        qreal scaleHeight = thumbnailHeight / item->boundingRect().height();
+
+        qreal scaleFactor = qMin(scaleWidth, scaleHeight);
+
+        //bitmap should not be stretched
+        UBThumbnail* pix = dynamic_cast<UBThumbnail*>(item);
+        if (pix)
+            scaleFactor = qMin(scaleFactor, 1.0);
+
+        QTransform transform;
+        transform.scale(scaleFactor, scaleFactor);
+
+        item->setTransform(transform);
+
+        item->setFlag(QGraphicsItem::ItemIsSelectable, true);
+
+        int columnIndex = i % nbColumns;
+        int rowIndex = i / nbColumns;
+
+        if (pix)
+        {
+            pix->setColumn(columnIndex);
+            pix->setRow(rowIndex);
+        }
+
+        int w = item->boundingRect().width();
+        int h = item->boundingRect().height();
+        QPointF pos(
+                mSpacing + (mThumbnailWidth - w * scaleFactor) / 2 + columnIndex * (mThumbnailWidth + mSpacing),
+                mSpacing + rowIndex * (thumbnailHeight + mSpacing + labelSpacing) + (thumbnailHeight - h * scaleFactor) / 2);
+
+        item->setPos(pos);
+
+        if (mLabelsItems.size() > i)
+        {
+            QFontMetrics fm(mLabelsItems.at(i)->font(), this);
+            QString elidedText = fm.elidedText(mLabels.at(i), Qt::ElideRight, mThumbnailWidth);
+
+            mLabelsItems.at(i)->setPlainText(elidedText);
+            mLabelsItems.at(i)->setWidth(fm.width(elidedText) + 2 * mLabelsItems.at(i)->document()->documentMargin());
+
+            pos.setY(pos.y() + (thumbnailHeight + h * scaleFactor) / 2 + 5);
+            qreal labelWidth = fm.width(elidedText);
+            pos.setX(mSpacing + (mThumbnailWidth - labelWidth) / 2 + columnIndex * (mThumbnailWidth + mSpacing));
+            mLabelsItems.at(i)->setPos(pos);
+            mLabelsItems.at(i)->highlight(false);
+        }
+    }
+
+    QScrollBar *vertScrollBar = verticalScrollBar();
+    int scrollBarThickness = 0;
+    if (vertScrollBar && vertScrollBar->isVisible())
+        scrollBarThickness = vertScrollBar->width();
+
+    setSceneRect(0, 0,
+            geometry().width() - scrollBarThickness,
+            mSpacing + ((((mGraphicItems.size() - 1) / nbColumns) + 1) * (thumbnailHeight + mSpacing + labelSpacing)));
+
+    
+    if (UBApplication::boardController)
+    {   
+        int page = UBApplication::boardController->currentPage();
+        if (mLabelsItems.count() > page && mGraphicItems.count() > page)
+            mLabelsItems.at(page)->highlight(mGraphicItems.at(page)->isSelected());
+    }
+}
+
+
+QList<QGraphicsItem*> UBThumbnailWidget::selectedItems()
+{
+    QList<QGraphicsItem*> sortedSelectedItems = mThumbnailsScene.selectedItems();
+    qSort(sortedSelectedItems.begin(), sortedSelectedItems.end(), thumbnailLessThan);
+    return sortedSelectedItems;
+}
+
+
+void UBThumbnailWidget::mousePressEvent(QMouseEvent *event)
+{
+    mClickTime = QTime::currentTime();
+    mMousePressPos = event->pos();
+
+    UBSceneThumbnailPixmap* sceneItem = dynamic_cast<UBSceneThumbnailPixmap*>(itemAt(mMousePressPos));
+    if(sceneItem==NULL)
+    {
+        event->ignore();
+        return;
+    }
+    //if(sceneItem){
+    //	int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneItem->sceneIndex());
+    //	if(pageIndex == 0){
+    //        event->ignore();
+    //        return;
+    //	}
+    //}
+
+    mMousePressScenePos = mapToScene(mMousePressPos);
+    QGraphicsItem* underlyingItem = itemAt(mMousePressPos);
+    UBThumbnail *previousSelectedThumbnail = mLastSelectedThumbnail;
+
+    if (!dynamic_cast<UBThumbnail*>(underlyingItem))
+    {
+        deleteLasso();
+
+        UBRubberBand rubberBand(QRubberBand::Rectangle);
+        QStyleOption option;
+        option.initFrom(&rubberBand);
+
+        mPrevLassoRect = QRect();
+        mLassoRectItem = new QGraphicsRectItem(0, scene());
+
+#ifdef Q_WS_MAC
+        // The following code must stay in synch with <Qt installation folder>\src\gui\styles\qmacstyle_mac.mm
+        QColor strokeColor;
+        strokeColor.setHsvF(0, 0, 0.86, 1.0);
+        mLassoRectItem->setPen(QPen(strokeColor));
+        QColor fillColor(option.palette.color(QPalette::Disabled, QPalette::Highlight));
+        fillColor.setHsvF(0, 0, 0.53, 0.25);
+        mLassoRectItem->setBrush(fillColor);
+#else
+        // The following code must stay in synch with <Qt installation folder>\src\gui\styles\qwindowsxpstyle.cpp
+        QColor highlight = option.palette.color(QPalette::Active, QPalette::Highlight);
+        mLassoRectItem->setPen(highlight.darker(120));
+        QColor dimHighlight(qMin(highlight.red() / 2 + 110, 255),
+                            qMin(highlight.green() / 2 + 110, 255),
+                            qMin(highlight.blue() / 2 + 110, 255),
+                            127);
+        mLassoRectItem->setBrush(dimHighlight);
+#endif
+
+        mLassoRectItem->setZValue(10000);
+        mLassoRectItem->setRect(QRectF(mMousePressScenePos, QSizeF()));
+
+        if (Qt::ControlModifier & event->modifiers() || Qt::ShiftModifier & event->modifiers())
+        {
+           // mSelectedThumbnailItems = selectedItems().toSet();
+            return;
+        }
+
+        mSelectedThumbnailItems.clear();
+        mPreviouslyIncrementalSelectedItemsX.clear();
+        mPreviouslyIncrementalSelectedItemsY.clear();
+        QGraphicsView::mousePressEvent(event);
+    }
+    else if (Qt::ShiftModifier & event->modifiers())
+    {
+        if (previousSelectedThumbnail)
+        {
+            QGraphicsItem* previousSelectedItem = dynamic_cast<QGraphicsItem*>(previousSelectedThumbnail);
+            if (previousSelectedItem)
+            {
+                int index1 = mGraphicItems.indexOf(previousSelectedItem);
+                int index2 = mGraphicItems.indexOf(underlyingItem);
+                if (-1 == index2)
+                {
+                    mSelectedThumbnailItems = selectedItems().toSet();
+                    return;
+                }
+                mSelectionSpan = index2 - index1;
+                selectItems(qMin(index1, index2), mSelectionSpan < 0 ? - mSelectionSpan + 1 : mSelectionSpan + 1);
+                return;
+            }
+        }
+    }
+    else
+    {
+        mLastSelectedThumbnail = dynamic_cast<UBThumbnail*>(underlyingItem);
+        if (!underlyingItem->isSelected())
+        {
+            int index = mGraphicItems.indexOf(underlyingItem);
+            selectItemAt(index, Qt::ControlModifier & event->modifiers());
+        }
+        else
+        {
+            QGraphicsView::mousePressEvent(event);
+        }
+        if (!mLastSelectedThumbnail && mGraphicItems.count() > 0)
+            mLastSelectedThumbnail = dynamic_cast<UBThumbnail*>(mGraphicItems.at(0));
+        mSelectionSpan = 0;
+        return;
+    }
+}
+
+
+void UBThumbnailWidget::mouseMoveEvent(QMouseEvent *event)
+{
+    int distance = (mMousePressPos - event->pos()).manhattanLength();
+
+    if (0 == (event->buttons() & Qt::LeftButton) || distance < QApplication::startDragDistance())
+        return;
+
+    if (mLassoRectItem)
+    {
+        bSelectionInProgress = true;
+        int incrementLassoMinWidth = 2;
+        QPointF currentScenePos = mapToScene(event->pos());
+        QRectF lassoRect(
+            qMin(mMousePressScenePos.x(), currentScenePos.x()), qMin(mMousePressScenePos.y(), currentScenePos.y()),
+            qAbs(mMousePressScenePos.x() - currentScenePos.x()), qAbs(mMousePressScenePos.y() - currentScenePos.y()));
+        if (QPoint() == prevMoveMousePos)
+            prevMoveMousePos = currentScenePos;
+        QRectF incrementXSelection(
+            qMin(prevMoveMousePos.x(), currentScenePos.x()), qMin(mMousePressScenePos.y(), currentScenePos.y()),
+            qAbs(prevMoveMousePos.x() - currentScenePos.x())+incrementLassoMinWidth, qAbs(mMousePressScenePos.y() - currentScenePos.y()));
+        QRectF incrementYSelection(
+            qMin(mMousePressScenePos.x(), currentScenePos.x()), qMin(prevMoveMousePos.y(), currentScenePos.y()),
+            qAbs(mMousePressScenePos.x() - currentScenePos.x()), qAbs(prevMoveMousePos.y() - currentScenePos.y())+incrementLassoMinWidth);
+
+        prevMoveMousePos = currentScenePos;
+        mLassoRectItem->setRect(lassoRect);
+
+        QSet<QGraphicsItem*> lassoSelectedThumbnailItems;
+
+        QSet<QGraphicsItem*> toUnset;
+        QSet<QGraphicsItem*> toSet;
+
+        // for horizontal moving
+        QSet<QGraphicsItem*> incSelectedItemsX = scene()->items(incrementXSelection, Qt::IntersectsItemBoundingRect).toSet();
+        foreach (QGraphicsItem *lassoSelectedItem, incSelectedItemsX)
+        {
+            if (lassoSelectedItem)
+            {
+                UBSceneThumbnailPixmap *thumbnailItem = dynamic_cast<UBSceneThumbnailPixmap*>(lassoSelectedItem);
+                if (thumbnailItem)
+                     lassoSelectedThumbnailItems += lassoSelectedItem;
+            }
+        }
+
+        if(lassoRect.width() < mPrevLassoRect.width())
+        {
+            if (!lassoSelectedThumbnailItems.contains(mPreviouslyIncrementalSelectedItemsX))
+                toUnset += mPreviouslyIncrementalSelectedItemsX - lassoSelectedThumbnailItems;
+
+        }
+        mPreviouslyIncrementalSelectedItemsX = lassoSelectedThumbnailItems;
+
+        toSet += lassoSelectedThumbnailItems + mPreviouslyIncrementalSelectedItemsX;
+
+
+        lassoSelectedThumbnailItems.clear();
+
+        // for vertical moving
+
+        QSet<QGraphicsItem*> incSelectedItemsY = scene()->items(incrementYSelection, Qt::IntersectsItemBoundingRect).toSet();
+        foreach (QGraphicsItem *lassoSelectedItem, incSelectedItemsY)
+        {
+            if (lassoSelectedItem)
+            {
+                UBSceneThumbnailPixmap *thumbnailItem = dynamic_cast<UBSceneThumbnailPixmap*>(lassoSelectedItem);
+
+                if (thumbnailItem)
+                    lassoSelectedThumbnailItems += lassoSelectedItem;
+            }
+        }
+
+        if(lassoRect.height() < mPrevLassoRect.height())
+        {
+            if (!lassoSelectedThumbnailItems.contains(mPreviouslyIncrementalSelectedItemsY))
+                toUnset += mPreviouslyIncrementalSelectedItemsY - lassoSelectedThumbnailItems;
+
+        }
+        mPreviouslyIncrementalSelectedItemsY = lassoSelectedThumbnailItems;
+
+
+        toSet += lassoSelectedThumbnailItems + mPreviouslyIncrementalSelectedItemsY;
+
+
+        toSet -= toUnset;
+
+        foreach (QGraphicsItem *item, toSet)
+        {
+            item->setSelected(true);
+        }
+
+        foreach (QGraphicsItem *item, toUnset)
+        {
+            item->setSelected(false);
+        }
+
+        mSelectedThumbnailItems += lassoSelectedThumbnailItems;
+        mPrevLassoRect = lassoRect;
+
+        if (Qt::ControlModifier & event->modifiers())
+        {
+            for (int i = 0; i < mSelectedThumbnailItems.count()-1; i++)
+            {
+                mSelectedThumbnailItems.values().at(i)->setSelected(true);
+            }
+        }
+    }
+    else
+    {
+        bSelectionInProgress = false;
+        if (0 == selectedItems().size())
+            return;
+
+        if(bCanDrag)
+        {
+            QDrag *drag = new QDrag(this);
+            QMimeData *mime = new QMimeData();
+
+            if (mMimeType.length() > 0)
+                mime->setData(mMimeType, QByteArray()); // trick the d&d system to register our own mime type
+
+            drag->setMimeData(mime);
+
+            QList<QUrl> qlElements;
+
+            foreach (QGraphicsItem* item, selectedItems())
+            {
+                if (mGraphicItems.contains(item))
+                {
+                    if (mGraphicItems.indexOf(item) <= mItemsPaths.size()){
+                        qlElements << mItemsPaths.at(mGraphicItems.indexOf(item));
+                    }
+                }
+            }
+
+            if (qlElements.size() > 0){
+                            mime->setUrls(qlElements);
+                            drag->setMimeData(mime);
+                            drag->exec(Qt::CopyAction);
+            }
+        }
+    }
+
+    QGraphicsView::mouseMoveEvent(event);
+}
+
+
+void UBThumbnailWidget::mouseReleaseEvent(QMouseEvent *event)
+{
+    int elapsedTimeSincePress = mClickTime.elapsed();
+    prevMoveMousePos = QPoint();
+    deleteLasso();
+    QGraphicsView::mouseReleaseEvent(event);
+
+    if(elapsedTimeSincePress < STARTDRAGTIME) {
+        emit mouseClick(itemAt(event->pos()), 0);
+    }
+}
+
+
+void UBThumbnailWidget::keyPressEvent(QKeyEvent *event)
+{
+    if (mLastSelectedThumbnail)
+    {
+        QGraphicsItem *lastSelectedGraphicsItem = dynamic_cast<QGraphicsItem*>(mLastSelectedThumbnail);
+        if (!lastSelectedGraphicsItem) return;
+        int startSelectionIndex = mGraphicItems.indexOf(lastSelectedGraphicsItem);
+        int previousSelectedThumbnailIndex = startSelectionIndex + mSelectionSpan;
+
+        switch (event->key())
+        {
+        case Qt::Key_Down:
+        case Qt::Key_Up:
+            {
+                if (rowCount() <= 1) break;
+                if (Qt::ShiftModifier & event->modifiers())
+                {
+                    int endSelectionIndex;
+                    if (Qt::Key_Down == event->key())
+                    {
+                        endSelectionIndex = previousSelectedThumbnailIndex + columnCount();
+                        if (endSelectionIndex >= mGraphicItems.count()) break;
+                    }
+                    else
+                    {
+                        endSelectionIndex = previousSelectedThumbnailIndex - columnCount();
+                        if (endSelectionIndex < 0) break;
+                    }
+
+                    int startIndex = startSelectionIndex < endSelectionIndex ? startSelectionIndex : endSelectionIndex;
+                    int count = startSelectionIndex < endSelectionIndex ? endSelectionIndex - startSelectionIndex + 1 : startSelectionIndex - endSelectionIndex + 1;
+                    mSelectionSpan = startSelectionIndex < endSelectionIndex ? (count - 1) : - (count - 1);
+                    selectItems(startIndex, count);
+                }
+                else
+                {
+                    int toSelectIndex;
+                    if (Qt::Key_Down == event->key())
+                    {
+                        toSelectIndex = previousSelectedThumbnailIndex + columnCount();
+                        if (toSelectIndex >= mGraphicItems.count()) break;
+                    }
+                    else
+                    {
+                        toSelectIndex = previousSelectedThumbnailIndex - columnCount();
+                        if (toSelectIndex < 0) break;
+                    }
+
+                    selectItemAt(toSelectIndex, Qt::ControlModifier & event->modifiers());
+                    mSelectionSpan = 0;
+                }
+            }
+            break;
+
+        case Qt::Key_Left:
+        case Qt::Key_Right:
+            {
+                QGraphicsItem *previousSelectedItem = mGraphicItems.at(previousSelectedThumbnailIndex);
+                UBThumbnail *previousSelectedThumbnail = dynamic_cast<UBThumbnail*>(previousSelectedItem);
+                if (!previousSelectedThumbnail) break;
+
+                if (Qt::Key_Left == event->key())
+                {
+                    if (0 == previousSelectedThumbnail->column()) break;
+                }
+                else
+                {
+                    if (previousSelectedThumbnail->column() == columnCount() - 1 ||
+                        previousSelectedThumbnailIndex == mGraphicItems.count() - 1) break;
+                }
+
+                if (Qt::ShiftModifier & event->modifiers())
+                {
+                    int endSelectionIndex;
+                    if (Qt::Key_Left == event->key())
+                    {
+                        endSelectionIndex = previousSelectedThumbnailIndex - 1;
+                        if (endSelectionIndex < 0) break;
+                    }
+                    else
+                    {
+                        endSelectionIndex = previousSelectedThumbnailIndex + 1;
+                        if (endSelectionIndex >= mGraphicItems.count()) break;
+                    }
+
+                    int startIndex = startSelectionIndex < endSelectionIndex ? startSelectionIndex : endSelectionIndex;
+                    int count = startSelectionIndex < endSelectionIndex ? endSelectionIndex - startSelectionIndex + 1 : startSelectionIndex - endSelectionIndex + 1;
+                    mSelectionSpan = startSelectionIndex < endSelectionIndex ? (count - 1) : - (count - 1);
+                    selectItems(startIndex, count);
+                }
+                else
+                {
+                    if (Qt::Key_Left == event->key())
+                        selectItemAt(previousSelectedThumbnailIndex - 1, Qt::ControlModifier & event->modifiers());
+                    else
+                        selectItemAt(previousSelectedThumbnailIndex + 1, Qt::ControlModifier & event->modifiers());
+
+                    mSelectionSpan = 0;
+                }
+            }
+            break;
+
+        case Qt::Key_Home:
+            {
+                if (Qt::ShiftModifier & event->modifiers())
+                {
+                    mSelectionSpan = - startSelectionIndex;
+                    selectItems(0, startSelectionIndex + 1);
+                }
+                else
+                {
+                    selectItemAt(0, Qt::ControlModifier & event->modifiers());
+                    mSelectionSpan = 0;
+                }
+            }
+            break;
+
+        case Qt::Key_End:
+            {
+                if (Qt::ShiftModifier & event->modifiers())
+                {
+                    mSelectionSpan = mGraphicItems.count() - startSelectionIndex - 1;
+                    selectItems(startSelectionIndex, mSelectionSpan + 1);
+                }
+                else
+                {
+                    selectItemAt(mGraphicItems.count() - 1, Qt::ControlModifier & event->modifiers());
+                    mSelectionSpan = 0;
+                }
+            }
+            break;
+        case Qt::Key_A:
+            {
+                if (Qt::ControlModifier & event->modifiers())
+                    selectAll();
+            }
+            break;
+        }
+    }
+    QGraphicsView::keyPressEvent(event);
+}
+
+
+void UBThumbnailWidget::focusInEvent(QFocusEvent *event)
+{
+    Q_UNUSED(event);
+
+    if (0 == selectedItems().count() && mGraphicItems.count() > 0 && Qt::TabFocusReason == event->reason())
+    {
+        selectItemAt(0);
+        mSelectionSpan = 0;
+    }
+}
+
+
+void UBThumbnailWidget::resizeEvent(QResizeEvent *event)
+{
+    Q_UNUSED(event);
+
+    refreshScene();
+
+    emit resized();
+}
+
+
+void UBThumbnailWidget::sceneSelectionChanged()
+{
+    emit selectionChanged();
+}
+
+
+void UBThumbnailWidget::selectItemAt(int pIndex, bool extend)
+{
+    QGraphicsItem* itemToSelect = 0;
+
+    if (pIndex >= 0 && pIndex < mGraphicItems.size())
+        itemToSelect = mGraphicItems.at(pIndex);
+
+    if (!extend)
+    foreach (QGraphicsItem* item, items())
+    {
+        UBThumbnail *thumb = dynamic_cast<UBThumbnail*>(item);
+        if (thumb && thumb->label())
+            thumb->label()->highlight(false);
+            
+        item->setSelected(false);
+    }
+ 
+    mLastSelectedThumbnail = dynamic_cast<UBThumbnail*>(itemToSelect);
+    itemToSelect->setSelected(true);
+    ensureVisible(itemToSelect);
+ }
+
+void UBThumbnailWidget::unselectItemAt(int pIndex)
+{
+    if (pIndex >= 0 && pIndex < mGraphicItems.size())
+    {
+        QGraphicsItem *itemToUnselect = mGraphicItems.at(pIndex);
+        itemToUnselect->setSelected(false);
+    }
+}
+
+
+void UBThumbnailWidget::selectItems(int startIndex, int count)
+{
+    for (int i = 0; i < mGraphicItems.count(); i++)
+    {
+        mGraphicItems.at(i)->setSelected(i >= startIndex && i < startIndex + count);
+    }
+}
+
+
+void UBThumbnailWidget::selectAll()
+{
+    foreach (QGraphicsItem* item, mGraphicItems)
+    {
+        item->setSelected(true);
+    }
+}
+
+int UBThumbnailWidget::rowCount() const
+{
+    UBThumbnail *lastThumbnail = dynamic_cast<UBThumbnail*>(mGraphicItems.last());
+    return lastThumbnail ? lastThumbnail->row() + 1 : 0;
+}
+
+int UBThumbnailWidget::columnCount() const
+{
+    UBThumbnail *lastThumbnail = dynamic_cast<UBThumbnail*>(mGraphicItems.last());
+    if (!lastThumbnail) return 0;
+    int lastRow = lastThumbnail->row();
+    int lastColumn = lastThumbnail->column();
+    return lastRow > 0 ? (mGraphicItems.count() - lastColumn - 1) / lastRow : mGraphicItems.count();
+}
+
+
+void UBThumbnailWidget::mouseDoubleClickEvent(QMouseEvent * event)
+{
+    QGraphicsItem* item = itemAt(event->pos());
+
+    if (item)
+    {
+        int index = mGraphicItems.indexOf(item);
+        emit mouseDoubleClick(item, index);
+    }
+}
+
+
+bool UBThumbnailWidget::thumbnailLessThan(QGraphicsItem* item1, QGraphicsItem* item2)
+{
+    UBThumbnail *thumbnail1 = dynamic_cast<UBThumbnail*>(item1);
+    UBThumbnail *thumbnail2 = dynamic_cast<UBThumbnail*>(item2);
+    if (thumbnail1 && thumbnail2)
+    {
+        if (thumbnail1->row() != thumbnail2->row())
+            return thumbnail1->row() < thumbnail2->row();
+        else
+            return thumbnail1->column() < thumbnail2->column();
+    }
+    return false;
+}
+
+void UBThumbnailWidget::deleteLasso()
+{
+    if (mLassoRectItem && scene())
+    {
+        scene()->removeItem(mLassoRectItem);
+        delete mLassoRectItem;
+        mLassoRectItem = 0;
+    }
+}
+
+
+UBThumbnail::UBThumbnail()
+    : mAddedToScene(false)
+    , mLabel(NULL)
+{
+    mSelectionItem = new QGraphicsRectItem(0, 0, 0, 0);
+    mSelectionItem->setPen(QPen(UBSettings::treeViewBackgroundColor, 8));
+    // TODO UB 4.x fix nasty dependencies : 8 is a bit less than half of UBThumbnailWidget.mSpacing
+}
+
+UBThumbnail::~UBThumbnail()
+{
+    if (mSelectionItem && !mAddedToScene)
+        delete mSelectionItem;
+}
+
+void UBThumbnail::itemChange(QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const QVariant &value)
+{
+    Q_UNUSED(value);
+
+    if ((change == QGraphicsItem::ItemSelectedHasChanged
+        || change == QGraphicsItem::ItemTransformHasChanged
+        || change == QGraphicsItem::ItemPositionHasChanged)
+        &&  item->scene())
+    {
+        if (item->isSelected())
+        {
+            if (!mSelectionItem->scene())
+            {
+                item->scene()->addItem(mSelectionItem);
+                mSelectionItem->setZValue(item->zValue() - 1);
+                //                        UBGraphicsItem::assignZValue(mSelectionItem, item->zValue() - 1);
+                mAddedToScene = true;
+            }
+
+            mSelectionItem->setRect(
+                item->sceneBoundingRect().x() - 5,
+                item->sceneBoundingRect().y() - 5,
+                item->sceneBoundingRect().width() + 10,
+                item->sceneBoundingRect().height() + 10);
+
+            mSelectionItem->show();
+        }
+        else
+        {
+            mSelectionItem->hide();
+        }
+        if (mLabel)
+            mLabel->highlight(item->isSelected());
+    }
+}
+
+UBSceneThumbnailPixmap::~UBSceneThumbnailPixmap()
+{
+    //NOOP
+}
+
+
+UBSceneThumbnailNavigPixmap::UBSceneThumbnailNavigPixmap(const QPixmap& pix, UBDocumentProxy* proxy, int pSceneIndex)
+    : UBSceneThumbnailPixmap(pix, proxy, pSceneIndex)
+    , bButtonsVisible(false)
+    , bCanDelete(false)
+    , bCanMoveUp(false)
+    , bCanMoveDown(false)
+    , bCanDuplicate(false)
+{
+    if(0 <= UBDocumentContainer::pageFromSceneIndex(pSceneIndex)){
+        setAcceptsHoverEvents(true);
+        setFlag(QGraphicsItem::ItemIsSelectable, true);
+    }
+}
+
+UBSceneThumbnailNavigPixmap::~UBSceneThumbnailNavigPixmap()
+{
+
+}
+
+void UBSceneThumbnailNavigPixmap::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
+{
+    event->accept();
+    updateButtonsState();
+    update();
+}
+
+void UBSceneThumbnailNavigPixmap::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
+{
+    event->accept();
+    bButtonsVisible = false;
+    update();
+}
+
+void UBSceneThumbnailNavigPixmap::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+    Q_UNUSED(option);
+    Q_UNUSED(widget);
+
+    UBSceneThumbnailPixmap::paint(painter, option, widget);
+    if(bButtonsVisible)
+    {
+        if(bCanDelete)
+            painter->drawPixmap(0, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/close.svg"));
+        else
+            painter->drawPixmap(0, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/closeDisabled.svg"));
+        if(bCanDuplicate)
+            painter->drawPixmap(BUTTONSIZE + BUTTONSPACING, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/duplicate.svg"));
+        else
+            painter->drawPixmap(BUTTONSIZE + BUTTONSPACING, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/duplicateDisabled.svg"));
+        if(bCanMoveUp)
+            painter->drawPixmap(2*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/moveUp.svg"));
+        else
+            painter->drawPixmap(2*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/moveUpDisabled.svg"));
+        if(bCanMoveDown)
+            painter->drawPixmap(3*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/menu.svg"));
+        else
+            painter->drawPixmap(3*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/menuDisabled.svg"));
+    }
+}
+
+void UBSceneThumbnailNavigPixmap::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+    QPointF p = event->pos();
+
+    // Here we check the position of the click and verify if it has to trig an action or not.
+    if(bCanDelete && p.x() >= 0 && p.x() <= BUTTONSIZE && p.y() >= 0 && p.y() <= BUTTONSIZE)
+        deletePage();
+    if(bCanDuplicate && p.x() >= BUTTONSIZE + BUTTONSPACING && p.x() <= 2*BUTTONSIZE + BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE)
+        duplicatePage();
+    if(bCanMoveUp && p.x() >= 2*(BUTTONSIZE + BUTTONSPACING) && p.x() <= 3*BUTTONSIZE + 2*BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE)
+        moveUpPage();
+    if(bCanMoveDown && p.x() >= 3*(BUTTONSIZE + BUTTONSPACING) && p.x() <= 4*BUTTONSIZE + 3*BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE)
+        moveDownPage();
+
+    event->accept();
+}
+
+void UBSceneThumbnailNavigPixmap::updateButtonsState()
+{
+
+	bCanDelete = false;
+    bCanMoveUp = false;
+    bCanMoveDown = false;
+    bCanDuplicate = false;
+
+    if(proxy()){
+    	int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneIndex());
+        UBDocumentController* documentController = UBApplication::documentController;
+        if (!documentController->selectedDocument()) {
+            documentController->setDocument(UBApplication::boardController->selectedDocument());
+        }
+    	bCanDelete = documentController->pageCanBeDeleted(pageIndex);
+        bCanMoveUp = documentController->pageCanBeMovedUp(pageIndex);
+        bCanMoveDown = documentController->pageCanBeMovedDown(pageIndex);
+        bCanDuplicate = documentController->pageCanBeDuplicated(pageIndex);
+    }
+
+    if(bCanDelete || bCanMoveUp || bCanMoveDown || bCanDuplicate)
+        bButtonsVisible = true;
+}
+
+void UBSceneThumbnailNavigPixmap::deletePage()
+{
+	if(UBApplication::mainWindow->yesNoQuestion(QObject::tr("Remove Page"), QObject::tr("Are you sure you want to remove 1 page from the selected document '%0'?").arg(UBApplication::documentController->selectedDocument()->metaData(UBSettings::documentName).toString()))){
+		UBApplication::boardController->deleteScene(sceneIndex());
+	}
+}
+
+void UBSceneThumbnailNavigPixmap::duplicatePage()
+{
+	UBApplication::boardController->duplicateScene(sceneIndex());
+}
+
+void UBSceneThumbnailNavigPixmap::moveUpPage()
+{
+    if (sceneIndex()!=0)
+        UBApplication::boardController->moveSceneToIndex(sceneIndex(), sceneIndex() - 1);
+}
+
+void UBSceneThumbnailNavigPixmap::moveDownPage()
+{
+    if (sceneIndex() < UBApplication::boardController->selectedDocument()->pageCount()-1)
+        UBApplication::boardController->moveSceneToIndex(sceneIndex(), sceneIndex() + 1);
+}
+
+void UBImgTextThumbnailElement::Place(int row, int col, qreal width, qreal height)
+{
+    int labelSpacing = 0;
+	if(this->caption)
+	{
+        QFontMetrics fm(this->caption->font());
+        labelSpacing = UBSettings::thumbnailSpacing + fm.height();
+	}
+	if(this->thumbnail)
+	{
+        int w = this->thumbnail->boundingRect().width();
+        int h = this->thumbnail->boundingRect().height();
+
+		qreal scaleWidth = width / w;
+        qreal scaleHeight = height / h;
+        qreal scaleFactor = qMin(scaleWidth, scaleHeight);
+        UBThumbnail* pix = dynamic_cast<UBThumbnail*>(this->thumbnail);
+
+        QTransform transform;
+        transform.scale(scaleFactor, scaleFactor);
+
+        // Apply the scaling
+        this->thumbnail->setTransform(transform);
+        this->thumbnail->setFlag(QGraphicsItem::ItemIsSelectable, true);
+
+        if(pix)
+        {
+            pix->setColumn(col);
+            pix->setRow(row);
+        }
+
+        QPointF pos(border + (width - w * scaleFactor) / 2 + col * (width + border),
+                    border + row * (height + border + labelSpacing) + (height - h * scaleFactor) / 2);
+
+        this->thumbnail->setPos(pos);
+
+		if(this->caption)
+		{
+            QFontMetrics fm(this->caption->font());
+            QString elidedText = fm.elidedText(this->caption->toPlainText(), Qt::ElideRight, width);
+
+            this->caption->setPlainText(elidedText);
+            this->caption->setWidth(fm.width(elidedText) + 2 * this->caption->document()->documentMargin());
+            pos.setY(pos.y() + (height + h * scaleFactor) / 2 + 5); // What is this 5 ??
+            qreal labelWidth = fm.width(elidedText);
+            pos.setX(border + (width - labelWidth) / 2 + col * (width + border));
+            this->caption->setPos(pos);
+		}
+	}
+}
diff --git a/Sankore-3.1/src/gui/UBThumbnailWidget.h b/Sankore-3.1/src/gui/UBThumbnailWidget.h
index 31403c8..d34a127 100644
--- a/Sankore-3.1/src/gui/UBThumbnailWidget.h
+++ b/Sankore-3.1/src/gui/UBThumbnailWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,417 +18,378 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-
-#ifndef UBTHUMBNAILWIDGET_H_
-#define UBTHUMBNAILWIDGET_H_
-
-#include <QtGui>
-#include <QtSvg>
-#include <QTime>
-#include <QGraphicsSceneHoverEvent>
-
-#include "frameworks/UBCoreGraphicsScene.h"
-#include "core/UBSettings.h"
-#include "domain/UBItem.h"
-
-#define STARTDRAGTIME   1000000
-#define BUTTONSIZE      48
-#define BUTTONSPACING   5
-
-class UBDocumentProxy;
-class UBThumbnailTextItem;
-class UBThumbnail;
-
-class UBThumbnailWidget : public QGraphicsView
-{
-    Q_OBJECT;
-
-    public:
-        UBThumbnailWidget(QWidget* parent);
-        virtual ~UBThumbnailWidget();
-
-        QList<QGraphicsItem*> selectedItems();
-        void selectItemAt(int pIndex, bool extend = false);
-        void unselectItemAt(int pIndex);
-
-        qreal thumbnailWidth()
-        {
-            return mThumbnailWidth;
-        }
-
-        void setBackgroundBrush(const QBrush& brush)
-        {
-            mThumbnailsScene.setBackgroundBrush(brush);
-        }
-
-    public slots:
-        void setThumbnailWidth(qreal pThumbnailWidth);
-        void setSpacing(qreal pSpacing);
-        virtual void setGraphicsItems(const QList<QGraphicsItem*>& pGraphicsItems, const QList<QUrl>& pItemPaths, const QStringList pLabels = QStringList(), const QString& pMimeType = QString(""));
-        void refreshScene();
-        void sceneSelectionChanged();
-
-    signals:
-        void resized();
-        void selectionChanged();
-        void mouseDoubleClick(QGraphicsItem* item, int index);
-        void mouseClick(QGraphicsItem* item, int index);
-
-
-    protected:
-        virtual void mousePressEvent(QMouseEvent *event);
-        virtual void mouseMoveEvent(QMouseEvent *event);
-        virtual void mouseReleaseEvent(QMouseEvent *event);
-        virtual void resizeEvent(QResizeEvent * event);
-        void mouseDoubleClickEvent(QMouseEvent * event);
-
-        virtual void keyPressEvent(QKeyEvent *event);
-        virtual void focusInEvent(QFocusEvent *event);
-
-        QList<QGraphicsItem*> mGraphicItems;
-        QList<UBThumbnailTextItem*> mLabelsItems;
-        QPointF mMousePressScenePos;
-        QPoint mMousePressPos;
-
-    protected:
-        qreal spacing() { return mSpacing; }
-        QList<QUrl> mItemsPaths;
-        QStringList mLabels;
-        bool bSelectionInProgress;
-        bool bCanDrag;       
-
-    private:
-        void selectAll();
-        void selectItems(int startIndex, int count);
-        int rowCount() const;
-        int columnCount() const;
-
-        static bool thumbnailLessThan(QGraphicsItem* item1, QGraphicsItem* item2);
-
-        void deleteLasso();
-
-        UBCoreGraphicsScene mThumbnailsScene;
-
-        QString mMimeType;
-
-        QPointF prevMoveMousePos;
-
-        qreal mThumbnailWidth;
-        qreal mThumbnailHeight;
-        qreal mSpacing;
-
-        UBThumbnail *mLastSelectedThumbnail;
-        int mSelectionSpan;
-        QRectF mPrevLassoRect;
-        QGraphicsRectItem *mLassoRectItem;
-        QSet<QGraphicsItem*> mSelectedThumbnailItems;
-        QSet<QGraphicsItem*> mPreviouslyIncrementalSelectedItemsX;
-        QSet<QGraphicsItem*> mPreviouslyIncrementalSelectedItemsY;
-        QTime mClickTime;
-};
-
-
-class UBThumbnail
-{
-    public:
-        UBThumbnail();
-
-        virtual ~UBThumbnail();
-
-        QStyleOptionGraphicsItem muteStyleOption(const QStyleOptionGraphicsItem *option)
-        {
-            // Never draw the rubber band, we draw our custom selection with the DelegateFrame
-            QStyleOptionGraphicsItem styleOption = QStyleOptionGraphicsItem(*option);
-            styleOption.state &= ~QStyle::State_Selected;
-
-            return styleOption;
-        }
-
-         virtual void itemChange(QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const QVariant &value)
-        {
-            Q_UNUSED(value);
-
-            if ((change == QGraphicsItem::ItemSelectedHasChanged
-                    || change == QGraphicsItem::ItemTransformHasChanged
-                    || change == QGraphicsItem::ItemPositionHasChanged)
-                    &&  item->scene())
-            {
-                if (item->isSelected())
-                {
-                    if (!mSelectionItem->scene())
-                    {
-                        item->scene()->addItem(mSelectionItem);
-                        mSelectionItem->setZValue(item->zValue() - 1);
-//                        UBGraphicsItem::assignZValue(mSelectionItem, item->zValue() - 1);
-                        mAddedToScene = true;
-                    }
-
-                    mSelectionItem->setRect(
-                        item->sceneBoundingRect().x() - 5,
-                        item->sceneBoundingRect().y() - 5,
-                        item->sceneBoundingRect().width() + 10,
-                        item->sceneBoundingRect().height() + 10);
-
-                    mSelectionItem->show();
-
-                }
-                else
-                {
-                    mSelectionItem->hide();
-                }
-            }
-        }
-
-        int column() { return mColumn; }
-        void setColumn(int column) { mColumn = column; }
-        int row() { return mRow; }
-        void setRow(int row) { mRow = row; }
-
-    protected:
-        QGraphicsRectItem *mSelectionItem;
-        private:
-        bool mAddedToScene;
-
-        int mColumn;
-        int mRow;
-};
-
-
-class UBThumbnailSvg : public QGraphicsSvgItem, public UBThumbnail
-{
-    public:
-        UBThumbnailSvg(const QString& path)
-            : QGraphicsSvgItem(path)
-        {
-            setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
-        }
-
-        virtual ~UBThumbnailSvg()
-        {
-            // NOOP
-        }
-
-        virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
-        {
-            QStyleOptionGraphicsItem styleOption = UBThumbnail::muteStyleOption(option);
-            QGraphicsSvgItem::paint(painter, &styleOption, widget);
-        }
-
-        virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value)
-        {
-            UBThumbnail::itemChange(this, change, value);
-            return QGraphicsSvgItem::itemChange(change, value);
-        }
-
-};
-
-
-class UBThumbnailPixmap : public QGraphicsPixmapItem, public UBThumbnail
-{
-    public:
-        UBThumbnailPixmap(const QPixmap& pix)
-            : QGraphicsPixmapItem(pix)
-        {
-            setTransformationMode(Qt::SmoothTransformation); // UB 4.3 may be expensive -- make configurable
-            setShapeMode(QGraphicsPixmapItem::BoundingRectShape);
-            setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
-        }
-
-        virtual ~UBThumbnailPixmap()
-        {
-            // NOOP
-        }
-
-        virtual QPainterPath shape () const
-        {
-            QPainterPath path;
-            path.addRect(boundingRect());
-            return path;
-        }
-
-
-        virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
-        {
-            QStyleOptionGraphicsItem styleOption = UBThumbnail::muteStyleOption(option);
-            QGraphicsPixmapItem::paint(painter, &styleOption, widget);
-        }
-
-        virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value)
-        {
-            UBThumbnail::itemChange(this, change, value);
-            return QGraphicsPixmapItem::itemChange(change, value);
-        }
-};
-
-
-class UBSceneThumbnailPixmap : public UBThumbnailPixmap
-{
-    public:
-        UBSceneThumbnailPixmap(const QPixmap& pix, UBDocumentProxy* proxy, int pSceneIndex)
-            : UBThumbnailPixmap(pix)
-            , mProxy(proxy)
-            , mSceneIndex(pSceneIndex)
-        {
-            // NOOP
-        }
-
-        virtual ~UBSceneThumbnailPixmap()
-        {
-            // NOOP
-        }
-
-        UBDocumentProxy* proxy()
-        {
-            return mProxy;
-        }
-
-        int sceneIndex()
-        {
-            return mSceneIndex;
-        }
-
-        void highlight()
-        {
-            //NOOP
-        }
-
-    private:
-        UBDocumentProxy* mProxy;
-        int mSceneIndex;
-};
-
-class UBSceneThumbnailNavigPixmap : public UBSceneThumbnailPixmap
-{
-    public:
-        UBSceneThumbnailNavigPixmap(const QPixmap& pix, UBDocumentProxy* proxy, int pSceneIndex);
-        ~UBSceneThumbnailNavigPixmap();
-
-    protected:
-        void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
-        void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
-        void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
-        void mousePressEvent(QGraphicsSceneMouseEvent *event);
-
-    private:
-        void updateButtonsState();
-        void deletePage();
-        void duplicatePage();
-        void moveUpPage();
-        void moveDownPage();
-
-        bool bButtonsVisible;
-        bool bCanDelete;
-        bool bCanMoveUp;
-        bool bCanMoveDown;
-        bool bCanDuplicate;
-};
-
-class UBThumbnailVideo : public UBThumbnailPixmap
-{
-    public:
-        UBThumbnailVideo(const QUrl &path)
-            : UBThumbnailPixmap(QPixmap(":/images/movie.svg"))
-            , mPath(path)
-        {
-            // NOOP
-        }
-
-        virtual ~UBThumbnailVideo()
-        {
-            // NOOP
-        }
-
-        QUrl path()
-        {
-            return mPath;
-        }
-
-    private:
-
-        QUrl mPath;
-};
-
-class UBThumbnailTextItem : public QGraphicsTextItem
-{
-    public:
-        UBThumbnailTextItem(const QString& text)
-            : QGraphicsTextItem(text)
-            , mUnelidedText(text)
-            , mIsHighlighted(false)
-        {
-            setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
-        }
-
-        QRectF boundingRect() const { return QRectF(QPointF(0.0, 0.0), QSize(mWidth, QFontMetricsF(font()).height() + 5));}
-
-        void setWidth(qreal pWidth)
-        {
-                if (mWidth != pWidth)
-                {
-                        prepareGeometryChange();
-                        mWidth = pWidth;
-                        computeText();
-                }
-        };
-
-        qreal width() {return mWidth;}
-
-        void highlight()
-        {
-                if (!mIsHighlighted)
-                {
-                        mIsHighlighted = true;
-                        computeText();
-                }
-        }
-
-        void computeText()
-        {
-            QFontMetricsF fm(font());
-            QString elidedText = fm.elidedText(mUnelidedText, Qt::ElideRight, mWidth);
-
-            if (mIsHighlighted)
-            {
-                setHtml("<span style=\"color: #6682b5\">" + elidedText + "</span>");
-            }
-            else
-            {
-                setPlainText(elidedText);
-            }
-        }
-
-    private:
-        qreal mWidth;
-        QString mUnelidedText;
-        bool mIsHighlighted;
-};
-
-class UBImgTextThumbnailElement
-{
-private:
-	UBSceneThumbnailNavigPixmap* thumbnail;
-	UBThumbnailTextItem* caption;
-	int border;
-
-public:
-	UBImgTextThumbnailElement(UBSceneThumbnailNavigPixmap* thumb, UBThumbnailTextItem* text): border(0)
-	{
-		this->thumbnail = thumb;
-		this->caption = text;
-	}
-
-	UBSceneThumbnailNavigPixmap* getThumbnail() const { return this->thumbnail; }
-	void setThumbnail(UBSceneThumbnailNavigPixmap* newGItem) { this->thumbnail = newGItem; }
-
-	UBThumbnailTextItem* getCaption() const { return this->caption; }
-	void setCaption(UBThumbnailTextItem* newcaption) { this->caption = newcaption; }
-
-	void Place(int row, int col, qreal width, qreal height);
-
-	int getBorder() const { return this->border; }
-	void setBorder(int newBorder) { this->border = newBorder; }
-};
-
-
-#endif /* UBTHUMBNAILWIDGET_H_ */
+
+
+
+#ifndef UBTHUMBNAILWIDGET_H_
+#define UBTHUMBNAILWIDGET_H_
+
+#include <QtGui>
+#include <QtSvg>
+#include <QTime>
+#include <QGraphicsSceneHoverEvent>
+
+#include "frameworks/UBCoreGraphicsScene.h"
+#include "core/UBSettings.h"
+#include "domain/UBItem.h"
+
+#define STARTDRAGTIME   1000000
+#define BUTTONSIZE      48
+#define BUTTONSPACING   5
+
+class UBDocumentProxy;
+class UBThumbnailTextItem;
+class UBThumbnail;
+
+class UBThumbnailWidget : public QGraphicsView
+{
+    Q_OBJECT
+
+    public:
+        UBThumbnailWidget(QWidget* parent);
+        virtual ~UBThumbnailWidget();
+
+        QList<QGraphicsItem*> selectedItems();
+        void selectItemAt(int pIndex, bool extend = false);
+        void unselectItemAt(int pIndex);
+
+        qreal thumbnailWidth()
+        {
+            return mThumbnailWidth;
+        }
+
+        void setBackgroundBrush(const QBrush& brush)
+        {
+            mThumbnailsScene.setBackgroundBrush(brush);
+        }
+
+    public slots:
+        void setThumbnailWidth(qreal pThumbnailWidth);
+        void setSpacing(qreal pSpacing);
+        virtual void setGraphicsItems(const QList<QGraphicsItem*>& pGraphicsItems, const QList<QUrl>& pItemPaths, const QStringList pLabels = QStringList(), const QString& pMimeType = QString(""));
+        void refreshScene();
+        void sceneSelectionChanged();
+
+    signals:
+        void resized();
+        void selectionChanged();
+        void mouseDoubleClick(QGraphicsItem* item, int index);
+        void mouseClick(QGraphicsItem* item, int index);
+
+
+    protected:
+        virtual void mousePressEvent(QMouseEvent *event);
+        virtual void mouseMoveEvent(QMouseEvent *event);
+        virtual void mouseReleaseEvent(QMouseEvent *event);
+        virtual void resizeEvent(QResizeEvent * event);
+        void mouseDoubleClickEvent(QMouseEvent * event);
+
+        virtual void keyPressEvent(QKeyEvent *event);
+        virtual void focusInEvent(QFocusEvent *event);
+
+        QList<QGraphicsItem*> mGraphicItems;
+        QList<UBThumbnailTextItem*> mLabelsItems;
+        QPointF mMousePressScenePos;
+        QPoint mMousePressPos;
+
+    protected:
+        qreal spacing() { return mSpacing; }
+        QList<QUrl> mItemsPaths;
+        QStringList mLabels;
+        bool bSelectionInProgress;
+        bool bCanDrag;       
+
+    private:
+        void selectAll();
+        void selectItems(int startIndex, int count);
+        int rowCount() const;
+        int columnCount() const;
+
+        static bool thumbnailLessThan(QGraphicsItem* item1, QGraphicsItem* item2);
+
+        void deleteLasso();
+
+        UBCoreGraphicsScene mThumbnailsScene;
+
+        QString mMimeType;
+
+        QPointF prevMoveMousePos;
+
+        qreal mThumbnailWidth;
+        qreal mThumbnailHeight;
+        qreal mSpacing;
+
+        UBThumbnail *mLastSelectedThumbnail;
+        int mSelectionSpan;
+        QRectF mPrevLassoRect;
+        QGraphicsRectItem *mLassoRectItem;
+        QSet<QGraphicsItem*> mSelectedThumbnailItems;
+        QSet<QGraphicsItem*> mPreviouslyIncrementalSelectedItemsX;
+        QSet<QGraphicsItem*> mPreviouslyIncrementalSelectedItemsY;
+        QTime mClickTime;
+};
+
+
+class UBThumbnail
+{
+    public:
+        UBThumbnail();
+
+        virtual ~UBThumbnail();
+
+        QStyleOptionGraphicsItem muteStyleOption(const QStyleOptionGraphicsItem *option)
+        {
+            // Never draw the rubber band, we draw our custom selection with the DelegateFrame
+            QStyleOptionGraphicsItem styleOption = QStyleOptionGraphicsItem(*option);
+            styleOption.state &= ~QStyle::State_Selected;
+
+            return styleOption;
+        }
+
+         virtual void itemChange(QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const QVariant &value);
+
+        UBThumbnailTextItem *label(){return mLabel;}
+        void setLabel(UBThumbnailTextItem *label){mLabel = label;}
+        int column() { return mColumn; }
+        void setColumn(int column) { mColumn = column; }
+        int row() { return mRow; }
+        void setRow(int row) { mRow = row; }
+
+    protected:
+        QGraphicsRectItem *mSelectionItem;
+        private:
+        bool mAddedToScene;
+
+        int mColumn;
+        int mRow;
+
+        UBThumbnailTextItem *mLabel;
+};
+
+
+class UBThumbnailSvg : public QGraphicsSvgItem, public UBThumbnail
+{
+    public:
+        UBThumbnailSvg(const QString& path)
+            : QGraphicsSvgItem(path)
+        {
+            setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
+        }
+
+        virtual ~UBThumbnailSvg()
+        {
+            // NOOP
+        }
+
+        virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+        {
+            QStyleOptionGraphicsItem styleOption = UBThumbnail::muteStyleOption(option);
+            QGraphicsSvgItem::paint(painter, &styleOption, widget);
+        }
+
+        virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value)
+        {
+            UBThumbnail::itemChange(this, change, value);
+            return QGraphicsSvgItem::itemChange(change, value);
+        }
+
+};
+
+
+class UBThumbnailPixmap : public QGraphicsPixmapItem, public UBThumbnail
+{
+    public:
+        UBThumbnailPixmap(const QPixmap& pix)
+            : QGraphicsPixmapItem(pix)
+        {
+            setTransformationMode(Qt::SmoothTransformation); // UB 4.3 may be expensive -- make configurable
+            setShapeMode(QGraphicsPixmapItem::BoundingRectShape);
+            setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
+        }
+
+        virtual ~UBThumbnailPixmap()
+        {
+            // NOOP
+        }
+
+        virtual QPainterPath shape () const
+        {
+            QPainterPath path;
+            path.addRect(boundingRect());
+            return path;
+        }
+
+
+        virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+        {
+            QStyleOptionGraphicsItem styleOption = UBThumbnail::muteStyleOption(option);
+            QGraphicsPixmapItem::paint(painter, &styleOption, widget);
+        }
+
+        virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value)
+        {
+            UBThumbnail::itemChange(this, change, value);
+            return QGraphicsPixmapItem::itemChange(change, value);
+        }
+};
+
+
+class UBSceneThumbnailPixmap : public UBThumbnailPixmap
+{
+    public:
+        UBSceneThumbnailPixmap(const QPixmap& pix, UBDocumentProxy* proxy, int pSceneIndex)
+            : UBThumbnailPixmap(pix)
+            , mProxy(proxy)
+            , mSceneIndex(pSceneIndex)
+        {
+            // NOOP
+        }
+
+        virtual ~UBSceneThumbnailPixmap();
+
+        UBDocumentProxy* proxy()
+        {
+            return mProxy;
+        }
+
+        int sceneIndex()
+        {
+            return mSceneIndex;
+        }
+
+    private:
+        UBDocumentProxy* mProxy;
+        int mSceneIndex;
+};
+
+class UBSceneThumbnailNavigPixmap : public UBSceneThumbnailPixmap
+{
+    public:
+        UBSceneThumbnailNavigPixmap(const QPixmap& pix, UBDocumentProxy* proxy, int pSceneIndex);
+        ~UBSceneThumbnailNavigPixmap();
+
+    protected:
+        void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
+        void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
+        void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
+        void mousePressEvent(QGraphicsSceneMouseEvent *event);
+
+    private:
+        void updateButtonsState();
+        void deletePage();
+        void duplicatePage();
+        void moveUpPage();
+        void moveDownPage();
+
+        bool bButtonsVisible;
+        bool bCanDelete;
+        bool bCanMoveUp;
+        bool bCanMoveDown;
+        bool bCanDuplicate;
+};
+
+class UBThumbnailVideo : public UBThumbnailPixmap
+{
+    public:
+        UBThumbnailVideo(const QUrl &path)
+            : UBThumbnailPixmap(QPixmap(":/images/movie.svg"))
+            , mPath(path)
+        {
+            // NOOP
+        }
+
+        virtual ~UBThumbnailVideo()
+        {
+            // NOOP
+        }
+
+        QUrl path()
+        {
+            return mPath;
+        }
+
+    private:
+
+        QUrl mPath;
+};
+
+class UBThumbnailTextItem : public QGraphicsTextItem
+{
+    public:
+        UBThumbnailTextItem(const QString& text)
+            : QGraphicsTextItem(text)
+            , mUnelidedText(text)
+            , mIsHighlighted(true)
+        {
+            setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
+        }
+
+        QRectF boundingRect() const { return QRectF(QPointF(0.0, 0.0), QSize(mWidth, QFontMetricsF(font()).height() + 5));}
+
+        void setWidth(qreal pWidth)
+        {
+                if (mWidth != pWidth)
+                {
+                        prepareGeometryChange();
+                        mWidth = pWidth;
+                        computeText();
+                }
+        };
+
+        qreal width() {return mWidth;}
+
+        void highlight(bool enable = true)
+        {
+            mIsHighlighted = enable;
+            computeText();
+        }
+
+        void computeText()
+        {
+            QFontMetricsF fm(font());
+            QString elidedText = fm.elidedText(mUnelidedText, Qt::ElideRight, mWidth);
+
+            if (mIsHighlighted)
+            {
+                setHtml("<span style=\"color: #6682b5\">" + elidedText + "</span>");
+            }
+            else
+            {
+                setPlainText(elidedText);
+            }
+        }
+
+    private:
+        qreal mWidth;
+        QString mUnelidedText;
+        bool mIsHighlighted;
+};
+
+class UBImgTextThumbnailElement
+{
+private:
+	UBSceneThumbnailNavigPixmap* thumbnail;
+	UBThumbnailTextItem* caption;
+	int border;
+
+public:
+	UBImgTextThumbnailElement(UBSceneThumbnailNavigPixmap* thumb, UBThumbnailTextItem* text): border(0)
+	{
+		this->thumbnail = thumb;
+		this->caption = text;
+	}
+
+	UBSceneThumbnailNavigPixmap* getThumbnail() const { return this->thumbnail; }
+	void setThumbnail(UBSceneThumbnailNavigPixmap* newGItem) { this->thumbnail = newGItem; }
+
+	UBThumbnailTextItem* getCaption() const { return this->caption; }
+	void setCaption(UBThumbnailTextItem* newcaption) { this->caption = newcaption; }
+
+	void Place(int row, int col, qreal width, qreal height);
+
+	int getBorder() const { return this->border; }
+	void setBorder(int newBorder) { this->border = newBorder; }
+};
+
+
+#endif /* UBTHUMBNAILWIDGET_H_ */
diff --git a/Sankore-3.1/src/gui/UBToolWidget.cpp b/Sankore-3.1/src/gui/UBToolWidget.cpp
index 53a73e1..4f9667e 100644
--- a/Sankore-3.1/src/gui/UBToolWidget.cpp
+++ b/Sankore-3.1/src/gui/UBToolWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 #include "UBToolWidget.h"
 #include "api/UBWidgetUniboardAPI.h"
diff --git a/Sankore-3.1/src/gui/UBToolWidget.h b/Sankore-3.1/src/gui/UBToolWidget.h
index 740ae25..699fc47 100644
--- a/Sankore-3.1/src/gui/UBToolWidget.h
+++ b/Sankore-3.1/src/gui/UBToolWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBTOOLWIDGET_H_
 #define UBTOOLWIDGET_H_
 
diff --git a/Sankore-3.1/src/gui/UBToolbarButtonGroup.cpp b/Sankore-3.1/src/gui/UBToolbarButtonGroup.cpp
index 580832b..4a4a17f 100644
--- a/Sankore-3.1/src/gui/UBToolbarButtonGroup.cpp
+++ b/Sankore-3.1/src/gui/UBToolbarButtonGroup.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBToolbarButtonGroup.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/gui/UBToolbarButtonGroup.h b/Sankore-3.1/src/gui/UBToolbarButtonGroup.h
index 1623ca5..74398e1 100644
--- a/Sankore-3.1/src/gui/UBToolbarButtonGroup.h
+++ b/Sankore-3.1/src/gui/UBToolbarButtonGroup.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBTOOLBARBUTTONGROUP_H_
 #define UBTOOLBARBUTTONGROUP_H_
 
diff --git a/Sankore-3.1/src/gui/UBUpdateDlg.cpp b/Sankore-3.1/src/gui/UBUpdateDlg.cpp
index 7a16b34..76af8c2 100644
--- a/Sankore-3.1/src/gui/UBUpdateDlg.cpp
+++ b/Sankore-3.1/src/gui/UBUpdateDlg.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QFileDialog>
 
 #include "UBUpdateDlg.h"
diff --git a/Sankore-3.1/src/gui/UBUpdateDlg.h b/Sankore-3.1/src/gui/UBUpdateDlg.h
index 6fdb6c3..fdf509d 100644
--- a/Sankore-3.1/src/gui/UBUpdateDlg.h
+++ b/Sankore-3.1/src/gui/UBUpdateDlg.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBUPDATEDLG_H
 #define UBUPDATEDLG_H
 
diff --git a/Sankore-3.1/src/gui/UBVideoPlayer.cpp b/Sankore-3.1/src/gui/UBVideoPlayer.cpp
index bcb94a0..e183189 100644
--- a/Sankore-3.1/src/gui/UBVideoPlayer.cpp
+++ b/Sankore-3.1/src/gui/UBVideoPlayer.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBVideoPlayer.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/gui/UBVideoPlayer.h b/Sankore-3.1/src/gui/UBVideoPlayer.h
index 5e7e91b..27c5f57 100644
--- a/Sankore-3.1/src/gui/UBVideoPlayer.h
+++ b/Sankore-3.1/src/gui/UBVideoPlayer.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBVIDEOPLAYER_H_
 #define UBVIDEOPLAYER_H_
 
diff --git a/Sankore-3.1/src/gui/UBWebToolsPalette.cpp b/Sankore-3.1/src/gui/UBWebToolsPalette.cpp
index 87aeda3..aee5965 100644
--- a/Sankore-3.1/src/gui/UBWebToolsPalette.cpp
+++ b/Sankore-3.1/src/gui/UBWebToolsPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 
 #include "frameworks/UBPlatformUtils.h"
@@ -45,12 +46,12 @@ UBWebToolsPalette::UBWebToolsPalette(QWidget *parent,bool tutorialMode=false)
         actions << UBApplication::mainWindow->actionBoard;
     }
     else{
-        actions << UBApplication::mainWindow->actionWebTrapFlash;
         //actions << UBApplication::mainWindow->actionWebTrap;
 
+        actions << UBApplication::mainWindow->actionWebTrapContent;
+
         actions << UBApplication::mainWindow->actionWebCustomCapture;
         actions << UBApplication::mainWindow->actionWebWindowCapture;
-        actions << UBApplication::mainWindow->actionWebOEmbed;
 
         //actions << UBApplication::mainWindow->actionEduMedia;
 
diff --git a/Sankore-3.1/src/gui/UBWebToolsPalette.h b/Sankore-3.1/src/gui/UBWebToolsPalette.h
index 82c7721..974d2f6 100644
--- a/Sankore-3.1/src/gui/UBWebToolsPalette.h
+++ b/Sankore-3.1/src/gui/UBWebToolsPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWEBTOOLSPALLETTE_H_
 #define UBWEBTOOLSPALLETTE_H_
 
diff --git a/Sankore-3.1/src/gui/UBWidgetMirror.cpp b/Sankore-3.1/src/gui/UBWidgetMirror.cpp
index 7ff21ea..4d833d3 100644
--- a/Sankore-3.1/src/gui/UBWidgetMirror.cpp
+++ b/Sankore-3.1/src/gui/UBWidgetMirror.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBWidgetMirror.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/gui/UBWidgetMirror.h b/Sankore-3.1/src/gui/UBWidgetMirror.h
index 64774dc..dee3037 100644
--- a/Sankore-3.1/src/gui/UBWidgetMirror.h
+++ b/Sankore-3.1/src/gui/UBWidgetMirror.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWIDGETMIRROR_H_
 #define UBWIDGETMIRROR_H_
 
diff --git a/Sankore-3.1/src/gui/UBZoomPalette.cpp b/Sankore-3.1/src/gui/UBZoomPalette.cpp
index 15a70ff..70de5e0 100644
--- a/Sankore-3.1/src/gui/UBZoomPalette.cpp
+++ b/Sankore-3.1/src/gui/UBZoomPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBZoomPalette.h"
 
 #include <QtGui>
@@ -70,13 +71,13 @@ void UBZoomPalette::showHideExtraButton()
     {
         mHundredButton->setVisible(false);
         mIsExpanded = false;
-        adjustSizeAndPosition(false);
+        adjustSizeAndPosition(false,false);
     }
     else
     {
         mHundredButton->setVisible(true);
         mIsExpanded = true;
-        adjustSizeAndPosition(true);
+        adjustSizeAndPosition(true,false);
     }
 
 }
@@ -108,7 +109,7 @@ void UBZoomPalette::refreshPalette()
     QString stringFactor = tr("%1 x").arg(currentZoomFactor, 0, 'f', 1);
 
     mCurrentZoomButton->setText(stringFactor);
-    adjustSizeAndPosition();
+    adjustSizeAndPosition(true,false);
     if (showAsNoZoom)
     {
         QTimer::singleShot(500, this, SLOT(hide()));
diff --git a/Sankore-3.1/src/gui/UBZoomPalette.h b/Sankore-3.1/src/gui/UBZoomPalette.h
index f83ba10..f8c3fc9 100644
--- a/Sankore-3.1/src/gui/UBZoomPalette.h
+++ b/Sankore-3.1/src/gui/UBZoomPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBZOOMPALETTE_H_
 #define UBZOOMPALETTE_H_
 
diff --git a/Sankore-3.1/src/gui/gui.pri b/Sankore-3.1/src/gui/gui.pri
index 56f457a..0134c14 100644
--- a/Sankore-3.1/src/gui/gui.pri
+++ b/Sankore-3.1/src/gui/gui.pri
@@ -43,7 +43,9 @@ HEADERS += src/gui/UBThumbnailView.h \
     src/gui/UBDockTeacherGuideWidget.h \
     src/gui/UBTeacherGuideWidget.h \
     src/gui/UBTeacherGuideWidgetsTools.h \
-    src/gui/UBMessagesDialog.h
+    src/gui/UBMessagesDialog.h \
+    src/gui/UBStartupHintsPalette.h \
+    src/gui/UBCreateLinkPalette.h
 SOURCES += src/gui/UBThumbnailView.cpp \
     src/gui/UBFloatingPalette.cpp \
     src/gui/UBToolbarButtonGroup.cpp \
@@ -89,9 +91,9 @@ SOURCES += src/gui/UBThumbnailView.cpp \
     src/gui/UBDockTeacherGuideWidget.cpp \
     src/gui/UBTeacherGuideWidget.cpp \
     src/gui/UBTeacherGuideWidgetsTools.cpp \
-    src/gui/UBMessagesDialog.cpp
+    src/gui/UBMessagesDialog.cpp \
+    src/gui/UBStartupHintsPalette.cpp \
+    src/gui/UBCreateLinkPalette.cpp
 win32:SOURCES += src/gui/UBKeyboardPalette_win.cpp
 macx:SOURCES += src/gui/UBKeyboardPalette_mac.cpp
-linux-g++:SOURCES += src/gui/UBKeyboardPalette_linux.cpp
-linux-g++-32:SOURCES += src/gui/UBKeyboardPalette_linux.cpp
-linux-g++-64:SOURCES += src/gui/UBKeyboardPalette_linux.cpp
+linux-*:SOURCES += src/gui/UBKeyboardPalette_linux.cpp
diff --git a/Sankore-3.1/src/interfaces/IDataStorage.h b/Sankore-3.1/src/interfaces/IDataStorage.h
index e8bd50e..35921db 100644
--- a/Sankore-3.1/src/interfaces/IDataStorage.h
+++ b/Sankore-3.1/src/interfaces/IDataStorage.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef IDATASTORAGE_H
 #define IDATASTORAGE_H
 
diff --git a/Sankore-3.1/src/network/UBAutoSaver.cpp b/Sankore-3.1/src/network/UBAutoSaver.cpp
index 686fc50..b2760e1 100644
--- a/Sankore-3.1/src/network/UBAutoSaver.cpp
+++ b/Sankore-3.1/src/network/UBAutoSaver.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/network/UBAutoSaver.h b/Sankore-3.1/src/network/UBAutoSaver.h
index 6d557ef..d886f1f 100644
--- a/Sankore-3.1/src/network/UBAutoSaver.h
+++ b/Sankore-3.1/src/network/UBAutoSaver.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/network/UBCookieJar.cpp b/Sankore-3.1/src/network/UBCookieJar.cpp
index cc6acbe..4ec2d58 100644
--- a/Sankore-3.1/src/network/UBCookieJar.cpp
+++ b/Sankore-3.1/src/network/UBCookieJar.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/network/UBCookieJar.h b/Sankore-3.1/src/network/UBCookieJar.h
index bbed90b..0a4cea1 100644
--- a/Sankore-3.1/src/network/UBCookieJar.h
+++ b/Sankore-3.1/src/network/UBCookieJar.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/network/UBHttpFileDownloader.cpp b/Sankore-3.1/src/network/UBHttpFileDownloader.cpp
index 8f947ce..35ea75e 100644
--- a/Sankore-3.1/src/network/UBHttpFileDownloader.cpp
+++ b/Sankore-3.1/src/network/UBHttpFileDownloader.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBHttpFileDownloader.h"
 
 #include "network/UBNetworkAccessManager.h"
diff --git a/Sankore-3.1/src/network/UBHttpFileDownloader.h b/Sankore-3.1/src/network/UBHttpFileDownloader.h
index 2342bfb..5bc4c3d 100644
--- a/Sankore-3.1/src/network/UBHttpFileDownloader.h
+++ b/Sankore-3.1/src/network/UBHttpFileDownloader.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBHTTPFILEDOWNLOADER_H_
 #define UBHTTPFILEDOWNLOADER_H_
 
diff --git a/Sankore-3.1/src/network/UBHttpGet.cpp b/Sankore-3.1/src/network/UBHttpGet.cpp
index a990123..30c0941 100644
--- a/Sankore-3.1/src/network/UBHttpGet.cpp
+++ b/Sankore-3.1/src/network/UBHttpGet.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBHttpGet.h"
 
 #include <QtNetwork>
diff --git a/Sankore-3.1/src/network/UBHttpGet.h b/Sankore-3.1/src/network/UBHttpGet.h
index 4d13dd6..08a0abd 100644
--- a/Sankore-3.1/src/network/UBHttpGet.h
+++ b/Sankore-3.1/src/network/UBHttpGet.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBHTTPGET_H_
 #define UBHTTPGET_H_
 
diff --git a/Sankore-3.1/src/network/UBNetworkAccessManager.cpp b/Sankore-3.1/src/network/UBNetworkAccessManager.cpp
index c6a0127..71f8d0c 100644
--- a/Sankore-3.1/src/network/UBNetworkAccessManager.cpp
+++ b/Sankore-3.1/src/network/UBNetworkAccessManager.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBNetworkAccessManager.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/network/UBNetworkAccessManager.h b/Sankore-3.1/src/network/UBNetworkAccessManager.h
index 5b68110..5389266 100644
--- a/Sankore-3.1/src/network/UBNetworkAccessManager.h
+++ b/Sankore-3.1/src/network/UBNetworkAccessManager.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBNETWORKACCESSMANAGER_H
 #define UBNETWORKACCESSMANAGER_H
 
diff --git a/Sankore-3.1/src/network/UBServerXMLHttpRequest.cpp b/Sankore-3.1/src/network/UBServerXMLHttpRequest.cpp
index b8fbbc2..b3ae2b9 100644
--- a/Sankore-3.1/src/network/UBServerXMLHttpRequest.cpp
+++ b/Sankore-3.1/src/network/UBServerXMLHttpRequest.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBServerXMLHttpRequest.h"
 
 #include <QtCore>
diff --git a/Sankore-3.1/src/network/UBServerXMLHttpRequest.h b/Sankore-3.1/src/network/UBServerXMLHttpRequest.h
index f9f5ffc..6905bcf 100644
--- a/Sankore-3.1/src/network/UBServerXMLHttpRequest.h
+++ b/Sankore-3.1/src/network/UBServerXMLHttpRequest.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBSERVERXMLHTTPREQUEST_H_
 #define UBSERVERXMLHTTPREQUEST_H_
 
diff --git a/Sankore-3.1/src/pdf-merger/ASCII85Decode.cpp b/Sankore-3.1/src/pdf-merger/ASCII85Decode.cpp
index a14b30e..fd26a4c 100644
--- a/Sankore-3.1/src/pdf-merger/ASCII85Decode.cpp
+++ b/Sankore-3.1/src/pdf-merger/ASCII85Decode.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <iostream>
 #include <QtGlobal>
 #include "ASCII85Decode.h"
diff --git a/Sankore-3.1/src/pdf-merger/ASCII85Decode.h b/Sankore-3.1/src/pdf-merger/ASCII85Decode.h
index 542ce9d..85c1ecd 100644
--- a/Sankore-3.1/src/pdf-merger/ASCII85Decode.h
+++ b/Sankore-3.1/src/pdf-merger/ASCII85Decode.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef ASCII85Decode_H
 #define ASCII85Decode_H
 
diff --git a/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.cpp b/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.cpp
index 922aee4..c2c6bba 100644
--- a/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.cpp
+++ b/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "ASCIIHexDecode.h"
 #include <QtGlobal>
 #include <string>
diff --git a/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.h b/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.h
index 895ed60..ef0a89d 100644
--- a/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.h
+++ b/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef ASCIIHexDecode_h
 #define ASCIIHexDecode_h
 
diff --git a/Sankore-3.1/src/pdf-merger/AbstractBoxElementHandler.h b/Sankore-3.1/src/pdf-merger/AbstractBoxElementHandler.h
index eeb7630..861b0df 100644
--- a/Sankore-3.1/src/pdf-merger/AbstractBoxElementHandler.h
+++ b/Sankore-3.1/src/pdf-merger/AbstractBoxElementHandler.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined AbstractBoxElementHandler_h
 #define AbstractBoxElementHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/AnnotsHandler.cpp b/Sankore-3.1/src/pdf-merger/AnnotsHandler.cpp
index cca2da0..34794b5 100644
--- a/Sankore-3.1/src/pdf-merger/AnnotsHandler.cpp
+++ b/Sankore-3.1/src/pdf-merger/AnnotsHandler.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "AnnotsHandler.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/pdf-merger/AnnotsHandler.h b/Sankore-3.1/src/pdf-merger/AnnotsHandler.h
index 4f8fadd..8f7270f 100644
--- a/Sankore-3.1/src/pdf-merger/AnnotsHandler.h
+++ b/Sankore-3.1/src/pdf-merger/AnnotsHandler.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined AnnotsHandler_h
 #define AnnotsHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.cpp b/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.cpp
index b3fcad0..7da883c 100644
--- a/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.cpp
+++ b/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGlobal>
 #include "CCITTFaxDecode.h"
 
diff --git a/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.h b/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.h
index d70390d..a69b2a0 100644
--- a/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.h
+++ b/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef CCITTFaxDecode_H
 #define CCITTFaxDecode_H
 
diff --git a/Sankore-3.1/src/pdf-merger/Config.h b/Sankore-3.1/src/pdf-merger/Config.h
index 600104b..dac1d4c 100644
--- a/Sankore-3.1/src/pdf-merger/Config.h
+++ b/Sankore-3.1/src/pdf-merger/Config.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /*
 This file provides some common configuration definitions for PDF merge library
 Is intended for multiplatform support
diff --git a/Sankore-3.1/src/pdf-merger/ContentHandler.cpp b/Sankore-3.1/src/pdf-merger/ContentHandler.cpp
index 36b07bb..973cda8 100644
--- a/Sankore-3.1/src/pdf-merger/ContentHandler.cpp
+++ b/Sankore-3.1/src/pdf-merger/ContentHandler.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "ContentHandler.h"
 #include "Filter.h"
 #include "FlateDecode.h"
diff --git a/Sankore-3.1/src/pdf-merger/ContentHandler.h b/Sankore-3.1/src/pdf-merger/ContentHandler.h
index d4bcfd5..b8e4a02 100644
--- a/Sankore-3.1/src/pdf-merger/ContentHandler.h
+++ b/Sankore-3.1/src/pdf-merger/ContentHandler.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined ContentHandler_h
 #define ContentHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/CropBoxElementHandler.h b/Sankore-3.1/src/pdf-merger/CropBoxElementHandler.h
index 218f9b9..b6cda1e 100644
--- a/Sankore-3.1/src/pdf-merger/CropBoxElementHandler.h
+++ b/Sankore-3.1/src/pdf-merger/CropBoxElementHandler.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef CROPBOX_ELEMENT_HANDLER_H
 #define CROPBOX_ELEMENT_HANDLER_H
 
diff --git a/Sankore-3.1/src/pdf-merger/DCTDecode.cpp b/Sankore-3.1/src/pdf-merger/DCTDecode.cpp
index 904f95b..029dc62 100644
--- a/Sankore-3.1/src/pdf-merger/DCTDecode.cpp
+++ b/Sankore-3.1/src/pdf-merger/DCTDecode.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGlobal>
 #include "DCTDecode.h"
 
diff --git a/Sankore-3.1/src/pdf-merger/DCTDecode.h b/Sankore-3.1/src/pdf-merger/DCTDecode.h
index bed9811..06ff0f6 100644
--- a/Sankore-3.1/src/pdf-merger/DCTDecode.h
+++ b/Sankore-3.1/src/pdf-merger/DCTDecode.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef DCTDecode_H 
 #define DCTDecode_H
 
diff --git a/Sankore-3.1/src/pdf-merger/Decoder.h b/Sankore-3.1/src/pdf-merger/Decoder.h
index 634c41f..2988b2b 100644
--- a/Sankore-3.1/src/pdf-merger/Decoder.h
+++ b/Sankore-3.1/src/pdf-merger/Decoder.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef DECODER_H
 #define DECODER_H
 
diff --git a/Sankore-3.1/src/pdf-merger/Document.cpp b/Sankore-3.1/src/pdf-merger/Document.cpp
index 82ad96a..53c312d 100644
--- a/Sankore-3.1/src/pdf-merger/Document.cpp
+++ b/Sankore-3.1/src/pdf-merger/Document.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "Config.h"
 #include "Document.h"
 #include "FlateDecode.h"
diff --git a/Sankore-3.1/src/pdf-merger/Document.h b/Sankore-3.1/src/pdf-merger/Document.h
index ddc5d03..227bfc2 100644
--- a/Sankore-3.1/src/pdf-merger/Document.h
+++ b/Sankore-3.1/src/pdf-merger/Document.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined Document_h
 #define Document_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Exception.h b/Sankore-3.1/src/pdf-merger/Exception.h
index b2f6990..c83c6e8 100644
--- a/Sankore-3.1/src/pdf-merger/Exception.h
+++ b/Sankore-3.1/src/pdf-merger/Exception.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef EXCEPTION_H
 #define EXCEPTION_H
 
diff --git a/Sankore-3.1/src/pdf-merger/FileIsAbsentException.h b/Sankore-3.1/src/pdf-merger/FileIsAbsentException.h
index d1ac8ad..b664971 100644
--- a/Sankore-3.1/src/pdf-merger/FileIsAbsentException.h
+++ b/Sankore-3.1/src/pdf-merger/FileIsAbsentException.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined FileIsAbsentException_h
 #define FileIsAbsentException_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Filter.cpp b/Sankore-3.1/src/pdf-merger/Filter.cpp
index 5988125..3800bf0 100644
--- a/Sankore-3.1/src/pdf-merger/Filter.cpp
+++ b/Sankore-3.1/src/pdf-merger/Filter.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "Filter.h"
 #include "Object.h"
 #include "Decoder.h"
diff --git a/Sankore-3.1/src/pdf-merger/Filter.h b/Sankore-3.1/src/pdf-merger/Filter.h
index d2e18e6..0a1f202 100644
--- a/Sankore-3.1/src/pdf-merger/Filter.h
+++ b/Sankore-3.1/src/pdf-merger/Filter.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined Filter_h
 #define Filter_h
 
diff --git a/Sankore-3.1/src/pdf-merger/FilterPredictor.cpp b/Sankore-3.1/src/pdf-merger/FilterPredictor.cpp
index 2bb063f..a31d023 100644
--- a/Sankore-3.1/src/pdf-merger/FilterPredictor.cpp
+++ b/Sankore-3.1/src/pdf-merger/FilterPredictor.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "Config.h"
 #include <iostream>
 #include <map>
diff --git a/Sankore-3.1/src/pdf-merger/FilterPredictor.h b/Sankore-3.1/src/pdf-merger/FilterPredictor.h
index 9daddc3..28afbd6 100644
--- a/Sankore-3.1/src/pdf-merger/FilterPredictor.h
+++ b/Sankore-3.1/src/pdf-merger/FilterPredictor.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef FILTER_PREDICTOR_H
 #define FILTER_PREDICTOR_H
 
diff --git a/Sankore-3.1/src/pdf-merger/FlateDecode.cpp b/Sankore-3.1/src/pdf-merger/FlateDecode.cpp
index 83c98bd..a2215c4 100644
--- a/Sankore-3.1/src/pdf-merger/FlateDecode.cpp
+++ b/Sankore-3.1/src/pdf-merger/FlateDecode.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <iostream>
 
 #include "FlateDecode.h"
diff --git a/Sankore-3.1/src/pdf-merger/FlateDecode.h b/Sankore-3.1/src/pdf-merger/FlateDecode.h
index 3f063fd..8ec75e9 100644
--- a/Sankore-3.1/src/pdf-merger/FlateDecode.h
+++ b/Sankore-3.1/src/pdf-merger/FlateDecode.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef FLATEDECODE_H_INCLUDED
 #define FLATEDECODE_H_INCLUDED
 
diff --git a/Sankore-3.1/src/pdf-merger/JBIG2Decode.cpp b/Sankore-3.1/src/pdf-merger/JBIG2Decode.cpp
index c8111e8..92f1c7d 100644
--- a/Sankore-3.1/src/pdf-merger/JBIG2Decode.cpp
+++ b/Sankore-3.1/src/pdf-merger/JBIG2Decode.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGlobal>
 #include "JBIG2Decode.h"
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/pdf-merger/JBIG2Decode.h b/Sankore-3.1/src/pdf-merger/JBIG2Decode.h
index 559e607..4d9b72f 100644
--- a/Sankore-3.1/src/pdf-merger/JBIG2Decode.h
+++ b/Sankore-3.1/src/pdf-merger/JBIG2Decode.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef JBIG2Decode_H
 #define JBIG2Decode_H 
 
diff --git a/Sankore-3.1/src/pdf-merger/LZWDecode.cpp b/Sankore-3.1/src/pdf-merger/LZWDecode.cpp
index cdb632a..3a57a5c 100644
--- a/Sankore-3.1/src/pdf-merger/LZWDecode.cpp
+++ b/Sankore-3.1/src/pdf-merger/LZWDecode.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <iostream>
 #include <QtGlobal>
 #include "LZWDecode.h"
diff --git a/Sankore-3.1/src/pdf-merger/LZWDecode.h b/Sankore-3.1/src/pdf-merger/LZWDecode.h
index 4acccf9..593a886 100644
--- a/Sankore-3.1/src/pdf-merger/LZWDecode.h
+++ b/Sankore-3.1/src/pdf-merger/LZWDecode.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef LZWDecode_H
 #define LZWDecode_H
 
diff --git a/Sankore-3.1/src/pdf-merger/MediaBoxElementHandler.h b/Sankore-3.1/src/pdf-merger/MediaBoxElementHandler.h
index f33afe3..fb2af5b 100644
--- a/Sankore-3.1/src/pdf-merger/MediaBoxElementHandler.h
+++ b/Sankore-3.1/src/pdf-merger/MediaBoxElementHandler.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined MediaBoxElementHandler_h
 #define MediaBoxElementHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/MergePageDescription.h b/Sankore-3.1/src/pdf-merger/MergePageDescription.h
index 1077b9f..f9fee16 100644
--- a/Sankore-3.1/src/pdf-merger/MergePageDescription.h
+++ b/Sankore-3.1/src/pdf-merger/MergePageDescription.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined MergePageDescription_h
 #define MergePageDescription_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Merger.cpp b/Sankore-3.1/src/pdf-merger/Merger.cpp
index da75919..8ba52d3 100644
--- a/Sankore-3.1/src/pdf-merger/Merger.cpp
+++ b/Sankore-3.1/src/pdf-merger/Merger.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "Merger.h"
 #include "Parser.h"
 #include "OverlayDocumentParser.h"
diff --git a/Sankore-3.1/src/pdf-merger/Merger.h b/Sankore-3.1/src/pdf-merger/Merger.h
index 99c2673..34172ba 100644
--- a/Sankore-3.1/src/pdf-merger/Merger.h
+++ b/Sankore-3.1/src/pdf-merger/Merger.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined Merger_h
 #define Merger_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Object.cpp b/Sankore-3.1/src/pdf-merger/Object.cpp
index 341c310..5b1cadd 100644
--- a/Sankore-3.1/src/pdf-merger/Object.cpp
+++ b/Sankore-3.1/src/pdf-merger/Object.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "Object.h"
 #include "Parser.h"
 #include "Exception.h"
diff --git a/Sankore-3.1/src/pdf-merger/Object.h b/Sankore-3.1/src/pdf-merger/Object.h
index 9688e93..54c452c 100644
--- a/Sankore-3.1/src/pdf-merger/Object.h
+++ b/Sankore-3.1/src/pdf-merger/Object.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined Object_h
 #define Object_h
 
diff --git a/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.cpp b/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.cpp
index f24f43d..8a37fe4 100644
--- a/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.cpp
+++ b/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "OverlayDocumentParser.h"
 #include <fstream>
 #include <string.h>
diff --git a/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.h b/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.h
index cb7b160..e25dd80 100644
--- a/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.h
+++ b/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined OverlayDocumentParser_h
 #define OverlayDocumentParser_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Page.cpp b/Sankore-3.1/src/pdf-merger/Page.cpp
index 52cfb5b..7dfbfd8 100644
--- a/Sankore-3.1/src/pdf-merger/Page.cpp
+++ b/Sankore-3.1/src/pdf-merger/Page.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "Page.h"
 #include "Document.h"
 
diff --git a/Sankore-3.1/src/pdf-merger/Page.h b/Sankore-3.1/src/pdf-merger/Page.h
index 3f28407..fba3dfe 100644
--- a/Sankore-3.1/src/pdf-merger/Page.h
+++ b/Sankore-3.1/src/pdf-merger/Page.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined Page_h
 #define Page_h
 
diff --git a/Sankore-3.1/src/pdf-merger/PageElementHandler.cpp b/Sankore-3.1/src/pdf-merger/PageElementHandler.cpp
index 43d3125..f45544f 100644
--- a/Sankore-3.1/src/pdf-merger/PageElementHandler.cpp
+++ b/Sankore-3.1/src/pdf-merger/PageElementHandler.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "PageElementHandler.h"
 #include <QtGlobal>
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/pdf-merger/PageElementHandler.h b/Sankore-3.1/src/pdf-merger/PageElementHandler.h
index dedc8b7..e927d3c 100644
--- a/Sankore-3.1/src/pdf-merger/PageElementHandler.h
+++ b/Sankore-3.1/src/pdf-merger/PageElementHandler.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined PageElementHandler_h
 #define PageElementHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/PageParser.h b/Sankore-3.1/src/pdf-merger/PageParser.h
index fb83bbe..f723cb2 100644
--- a/Sankore-3.1/src/pdf-merger/PageParser.h
+++ b/Sankore-3.1/src/pdf-merger/PageParser.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined(EA_FF53E894_11D7_4c64_A409_DBC97C9EF3CF__INCLUDED_)
 #define EA_FF53E894_11D7_4c64_A409_DBC97C9EF3CF__INCLUDED_
 
diff --git a/Sankore-3.1/src/pdf-merger/Parser.cpp b/Sankore-3.1/src/pdf-merger/Parser.cpp
index 8febbf7..66e3d0b 100644
--- a/Sankore-3.1/src/pdf-merger/Parser.cpp
+++ b/Sankore-3.1/src/pdf-merger/Parser.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGlobal>
 #include <fstream>
 #include <iostream>
diff --git a/Sankore-3.1/src/pdf-merger/Parser.h b/Sankore-3.1/src/pdf-merger/Parser.h
index 7d53bb5..34b06df 100644
--- a/Sankore-3.1/src/pdf-merger/Parser.h
+++ b/Sankore-3.1/src/pdf-merger/Parser.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined Parser_h
 #define Parser_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Rectangle.cpp b/Sankore-3.1/src/pdf-merger/Rectangle.cpp
index bfc1cd0..722a45d 100644
--- a/Sankore-3.1/src/pdf-merger/Rectangle.cpp
+++ b/Sankore-3.1/src/pdf-merger/Rectangle.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "Rectangle.h"
 #include "Utils.h"
 #include "Object.h"
diff --git a/Sankore-3.1/src/pdf-merger/Rectangle.h b/Sankore-3.1/src/pdf-merger/Rectangle.h
index 1de9955..db14d5b 100644
--- a/Sankore-3.1/src/pdf-merger/Rectangle.h
+++ b/Sankore-3.1/src/pdf-merger/Rectangle.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined Rectangle_h
 #define Rectangle_h
 
diff --git a/Sankore-3.1/src/pdf-merger/RemoveHimSelfHandler.h b/Sankore-3.1/src/pdf-merger/RemoveHimSelfHandler.h
index 4aa6482..51f90b8 100644
--- a/Sankore-3.1/src/pdf-merger/RemoveHimSelfHandler.h
+++ b/Sankore-3.1/src/pdf-merger/RemoveHimSelfHandler.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined RemoveHimselfHandler_h
 #define RemoveHimselfHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/RemoveHimselfHandler.cpp b/Sankore-3.1/src/pdf-merger/RemoveHimselfHandler.cpp
index 47da6f5..2abc473 100644
--- a/Sankore-3.1/src/pdf-merger/RemoveHimselfHandler.cpp
+++ b/Sankore-3.1/src/pdf-merger/RemoveHimselfHandler.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "RemoveHimSelfHandler.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/pdf-merger/RotationHandler.h b/Sankore-3.1/src/pdf-merger/RotationHandler.h
index 152d1b4..07beb5e 100644
--- a/Sankore-3.1/src/pdf-merger/RotationHandler.h
+++ b/Sankore-3.1/src/pdf-merger/RotationHandler.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined RotationHandler_h
 #define RotationHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/RunLengthDecode.cpp b/Sankore-3.1/src/pdf-merger/RunLengthDecode.cpp
index 92678d6..48da4cd 100644
--- a/Sankore-3.1/src/pdf-merger/RunLengthDecode.cpp
+++ b/Sankore-3.1/src/pdf-merger/RunLengthDecode.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "RunLengthDecode.h"
 #include <QtGlobal>
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/pdf-merger/RunLengthDecode.h b/Sankore-3.1/src/pdf-merger/RunLengthDecode.h
index c62e5c7..b29b01e 100644
--- a/Sankore-3.1/src/pdf-merger/RunLengthDecode.h
+++ b/Sankore-3.1/src/pdf-merger/RunLengthDecode.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef RunLengthDecode_H
 #define RunLengthDecode_H
 
diff --git a/Sankore-3.1/src/pdf-merger/Transformation.h b/Sankore-3.1/src/pdf-merger/Transformation.h
index ada0df3..9be96d2 100644
--- a/Sankore-3.1/src/pdf-merger/Transformation.h
+++ b/Sankore-3.1/src/pdf-merger/Transformation.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /*
 The file defines some classes for transformation of PDF content stream.
 */
diff --git a/Sankore-3.1/src/pdf-merger/TypeElementHandler.h b/Sankore-3.1/src/pdf-merger/TypeElementHandler.h
index 691f4a0..7c01456 100644
--- a/Sankore-3.1/src/pdf-merger/TypeElementHandler.h
+++ b/Sankore-3.1/src/pdf-merger/TypeElementHandler.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined TypeElementHandler_h
 #define TypeElementHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Utils.cpp b/Sankore-3.1/src/pdf-merger/Utils.cpp
index 783f24b..e4ebf0a 100644
--- a/Sankore-3.1/src/pdf-merger/Utils.cpp
+++ b/Sankore-3.1/src/pdf-merger/Utils.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGlobal>
 #include <QString>
 #include "Config.h"
diff --git a/Sankore-3.1/src/pdf-merger/Utils.h b/Sankore-3.1/src/pdf-merger/Utils.h
index 335ef01..2857df8 100644
--- a/Sankore-3.1/src/pdf-merger/Utils.h
+++ b/Sankore-3.1/src/pdf-merger/Utils.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #if !defined Utils_h
 #define Utils_h
 
diff --git a/Sankore-3.1/src/pdf/GraphicsPDFItem.cpp b/Sankore-3.1/src/pdf/GraphicsPDFItem.cpp
index f461e0e..b4c71ed 100644
--- a/Sankore-3.1/src/pdf/GraphicsPDFItem.cpp
+++ b/Sankore-3.1/src/pdf/GraphicsPDFItem.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "GraphicsPDFItem.h"
 
 #include <qglobal.h>
diff --git a/Sankore-3.1/src/pdf/GraphicsPDFItem.h b/Sankore-3.1/src/pdf/GraphicsPDFItem.h
index ccf4e95..3c4b6f3 100644
--- a/Sankore-3.1/src/pdf/GraphicsPDFItem.h
+++ b/Sankore-3.1/src/pdf/GraphicsPDFItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef GRAPHICSPDFITEM_H
 #define GRAPHICSPDFITEM_H
 
diff --git a/Sankore-3.1/src/pdf/PDFRenderer.cpp b/Sankore-3.1/src/pdf/PDFRenderer.cpp
index fee6e85..16b8821 100644
--- a/Sankore-3.1/src/pdf/PDFRenderer.cpp
+++ b/Sankore-3.1/src/pdf/PDFRenderer.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QFile>
 
 #include "PDFRenderer.h"
diff --git a/Sankore-3.1/src/pdf/PDFRenderer.h b/Sankore-3.1/src/pdf/PDFRenderer.h
index 3147e7b..5284c5e 100644
--- a/Sankore-3.1/src/pdf/PDFRenderer.h
+++ b/Sankore-3.1/src/pdf/PDFRenderer.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef PDFRENDERER_H
 #define PDFRENDERER_H
 
diff --git a/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.cpp b/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.cpp
index ca43b6d..0419713 100644
--- a/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.cpp
+++ b/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 
 #include "UBWebPluginPDFWidget.h"
diff --git a/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.h b/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.h
index 5680cb2..681f223 100644
--- a/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.h
+++ b/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWEBPLUGINPDFWIDGET_H
 #define UBWEBPLUGINPDFWIDGET_H
 
diff --git a/Sankore-3.1/src/pdf/XPDFRenderer.cpp b/Sankore-3.1/src/pdf/XPDFRenderer.cpp
index 69ce392..79042ca 100644
--- a/Sankore-3.1/src/pdf/XPDFRenderer.cpp
+++ b/Sankore-3.1/src/pdf/XPDFRenderer.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "XPDFRenderer.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/pdf/XPDFRenderer.h b/Sankore-3.1/src/pdf/XPDFRenderer.h
index c5f0a81..ab9f3de 100644
--- a/Sankore-3.1/src/pdf/XPDFRenderer.h
+++ b/Sankore-3.1/src/pdf/XPDFRenderer.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef XPDFRENDERER_H
 #define XPDFRENDERER_H
 #include <QImage>
diff --git a/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.cpp b/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.cpp
index ffe5ec8..d038fd1 100644
--- a/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.cpp
+++ b/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBAbstractVideoEncoder.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.h b/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.h
index c0b290e..cd7bb9d 100644
--- a/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.h
+++ b/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBABSTRACTVIDEOENCODER_H_
 #define UBABSTRACTVIDEOENCODER_H_
 
diff --git a/Sankore-3.1/src/podcast/UBPodcastController.cpp b/Sankore-3.1/src/podcast/UBPodcastController.cpp
index b7a8521..68a3dcb 100644
--- a/Sankore-3.1/src/podcast/UBPodcastController.cpp
+++ b/Sankore-3.1/src/podcast/UBPodcastController.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBPodcastController.h"
 
 #include "frameworks/UBFileSystemUtils.h"
diff --git a/Sankore-3.1/src/podcast/UBPodcastController.h b/Sankore-3.1/src/podcast/UBPodcastController.h
index cb255c4..14ae312 100644
--- a/Sankore-3.1/src/podcast/UBPodcastController.h
+++ b/Sankore-3.1/src/podcast/UBPodcastController.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBPODCASTCONTROLLER_H_
 #define UBPODCASTCONTROLLER_H_
 
diff --git a/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.cpp b/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.cpp
index 45cff6d..bbea18c 100644
--- a/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.cpp
+++ b/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBPodcastRecordingPalette.h"
 
 #include "UBPodcastController.h"
diff --git a/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.h b/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.h
index 225a894..aece20c 100644
--- a/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.h
+++ b/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBPODCASTRECORDINGPALETTE_H_
 #define UBPODCASTRECORDINGPALETTE_H_
 
diff --git a/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.cpp b/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.cpp
index 60e1c8e..512d087 100644
--- a/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.cpp
+++ b/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBIntranetPodcastPublisher.h"
 
 #include "frameworks/UBPlatformUtils.h"
diff --git a/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.h b/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.h
index 2842a43..5a764aa 100644
--- a/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.h
+++ b/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBUNILPUBLISHER_H_
 #define UBUNILPUBLISHER_H_
 
diff --git a/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.cpp b/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.cpp
index 408f557..46d7d9b 100644
--- a/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.cpp
+++ b/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBAudioQueueRecorder.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.h b/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.h
index c4abcb3..31e7aa8 100644
--- a/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.h
+++ b/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBAUDIOQUEUERECORDER_H_
 #define UBAUDIOQUEUERECORDER_H_
 
diff --git a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.cpp b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.cpp
index 84d00df..8b6451d 100644
--- a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.cpp
+++ b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBQuickTimeFile.h"
 
 #include <AudioToolbox/AudioToolbox.h>
diff --git a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.h b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.h
index 2d5e6b4..996e25a 100644
--- a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.h
+++ b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBQUICKTIMEFILE_H_
 #define UBQUICKTIMEFILE_H_
 
diff --git a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.cpp b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.cpp
index f79dae3..a43849f 100644
--- a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.cpp
+++ b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBQuickTimeVideoEncoder.h"
 
 #include <QuickTime/QuickTime.h>
diff --git a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.h b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.h
index e5ab005..67262d6 100644
--- a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.h
+++ b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBQUICKTIMEVIDEOENCODER_H_
 #define UBQUICKTIMEVIDEOENCODER_H_
 
diff --git a/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.cpp b/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.cpp
index 6f851c7..c347093 100644
--- a/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.cpp
+++ b/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBWaveRecorder.h"
 
 #include "Mmsystem.h"
diff --git a/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.h b/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.h
index c21c0cc..d136c57 100644
--- a/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.h
+++ b/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWAVERECORDER_H_
 #define UBWAVERECORDER_H_
 
diff --git a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.cpp b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.cpp
index 5b52981..3b8f6b9 100644
--- a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.cpp
+++ b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBWindowsMediaFile.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.h b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.h
index 5a5cbe6..2bcb20a 100644
--- a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.h
+++ b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWINDOWSMEDIAFILE_H_
 #define UBWINDOWSMEDIAFILE_H_
 
diff --git a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.cpp b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.cpp
index 52bb7f1..659f1cf 100644
--- a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.cpp
+++ b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBWindowsMediaVideoEncoder.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.h b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.h
index fc0a19a..adb24a2 100644
--- a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.h
+++ b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWINDOWSMEDIAVIDEOENCODER_H_
 #define UBWINDOWSMEDIAVIDEOENCODER_H_
 
diff --git a/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.cpp b/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.cpp
index 58283d7..e6d2212 100644
--- a/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.cpp
+++ b/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBYouTubePublisher.h"
 
 
diff --git a/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.h b/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.h
index 961d1c4..9b0a52d 100644
--- a/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.h
+++ b/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBYOUTUBEPUBLISHER_H_
 #define UBYOUTUBEPUBLISHER_H_
 
diff --git a/Sankore-3.1/src/tools/UBAbstractDrawRuler.cpp b/Sankore-3.1/src/tools/UBAbstractDrawRuler.cpp
index d08f15e..512aee5 100644
--- a/Sankore-3.1/src/tools/UBAbstractDrawRuler.cpp
+++ b/Sankore-3.1/src/tools/UBAbstractDrawRuler.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBAbstractDrawRuler.h"
 #include <QtSvg>
 #include "core/UB.h"
diff --git a/Sankore-3.1/src/tools/UBAbstractDrawRuler.h b/Sankore-3.1/src/tools/UBAbstractDrawRuler.h
index c6cf879..d286ed8 100644
--- a/Sankore-3.1/src/tools/UBAbstractDrawRuler.h
+++ b/Sankore-3.1/src/tools/UBAbstractDrawRuler.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UB_ABSTRACTDRAWRULER_H_
 #define UB_ABSTRACTDRAWRULER_H_
 
diff --git a/Sankore-3.1/src/tools/UBGraphicsAristo.cpp b/Sankore-3.1/src/tools/UBGraphicsAristo.cpp
index e7773d6..346d7c3 100644
--- a/Sankore-3.1/src/tools/UBGraphicsAristo.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsAristo.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,6 +18,14 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
+#include "UBGraphicsAristo.h"
+#include "board/UBBoardController.h"
+#include "board/UBDrawingController.h"
+#include "core/UBApplication.h"
+#include "domain/UBGraphicsScene.h"
+
 #include <QColor>
 #include <QFont>
 #include <QFontMetricsF>
diff --git a/Sankore-3.1/src/tools/UBGraphicsAristo.h b/Sankore-3.1/src/tools/UBGraphicsAristo.h
index e676eda..ff89db6 100644
--- a/Sankore-3.1/src/tools/UBGraphicsAristo.h
+++ b/Sankore-3.1/src/tools/UBGraphicsAristo.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -18,6 +18,14 @@
  * You should have received a copy of the GNU General Public License
  * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
+#ifndef UBGRAPHICSARISTO_H_
+#define UBGRAPHICSARISTO_H_
+
+#include "core/UB.h"
+#include "domain/UBItem.h"
+#include "domain/UBGraphicsScene.h"
 #include "tools/UBAbstractDrawRuler.h"
 
 #include <QtGlobal>
diff --git a/Sankore-3.1/src/tools/UBGraphicsCache.cpp b/Sankore-3.1/src/tools/UBGraphicsCache.cpp
index 888417e..21cc262 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCache.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsCache.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QDebug>
 
 #include "UBGraphicsCache.h"
@@ -44,15 +45,45 @@ UBGraphicsCache* UBGraphicsCache::instance(UBGraphicsScene *scene)
 UBGraphicsCache::UBGraphicsCache(UBGraphicsScene *scene) : QGraphicsRectItem()
   , mMaskColor(Qt::black)
   , mMaskShape(eMaskShape_Circle)
-  , mShapeWidth(100)
   , mDrawMask(false)
   , mScene(scene)
+  , mShouldDrawAtHoverEnter(false)
 {
+    setMode(static_cast<int>(OnClick)); 
+
+    mHoleSize = UBSettings::settings()->casheLastHoleSize->get().toSize();
+    
+    QColor cacheColor;
+    QStringList colors = UBSettings::settings()->cacheColor->get().toString().split(" ", QString::SkipEmptyParts);
+    if (colors.count())
+    {
+        if (3 == colors.count())
+            cacheColor = QColor(colors[0].toInt(),colors[1].toInt(),colors[2].toInt());
+        if (4 == colors.count())
+            cacheColor = QColor(colors[0].toInt(),colors[1].toInt(),colors[2].toInt(), colors[3].toInt());
+    }
+
+    if (cacheColor.isValid())
+        mMaskColor = cacheColor;
+    else
+        mMaskColor = QColor(0,0,0,190);
+
     // Get the board size and pass it to the shape
     QRect boardRect = UBApplication::boardController->displayView()->rect();
     setRect(-15*boardRect.width(), -15*boardRect.height(), 30*boardRect.width(), 30*boardRect.height());
     setData(Qt::UserRole, QVariant("Cache"));
     setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::Cache)); //Necessary to set if we want z value to be assigned correctly
+
+    QPixmap cursorImage(1,1);
+    QPixmap cursorMask(1,1);
+    QPainter cursorPainter(&cursorImage);
+    QPainter cursorMaskPainter(&cursorMask);
+    cursorPainter.setBackground(Qt::transparent);
+    cursorMaskPainter.setBackground(Qt::transparent);
+    cursorPainter.fillRect(cursorImage.rect(), Qt::color0);
+    cursorPainter.end();
+
+    mCursorForHole = QCursor(cursorImage, cursorMask);
 }
 
 UBGraphicsCache::~UBGraphicsCache()
@@ -111,14 +142,34 @@ void UBGraphicsCache::init()
     setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
 }
 
+void UBGraphicsCache::setMode(int mode)
+{
+    mCurrentMode = static_cast<eMode>(mode);
+
+    if (OnClick == mCurrentMode)
+        setAcceptHoverEvents(false);
+    if (Persistent == mCurrentMode)
+        setAcceptHoverEvents(true);
+
+    drawHole(false);
+    mShouldDrawAtHoverEnter = false;
+}
+
 void UBGraphicsCache::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
 {
     Q_UNUSED(option);
     Q_UNUSED(widget);
 
-    painter->setBrush(mMaskColor);
-    painter->setPen(mMaskColor);
 
+    QColor maskColor;
+    maskColor = mMaskColor;
+    if(widget != UBApplication::boardController->controlView()->viewport())
+        maskColor.setAlpha(255);
+        
+ 
+    painter->setBrush(maskColor);
+    painter->setPen(maskColor);
+    
     // Draw the hole
     QPainterPath path;
     path.addRect(rect());
@@ -127,11 +178,11 @@ void UBGraphicsCache::paint(QPainter *painter, const QStyleOptionGraphicsItem *o
     {
         if(eMaskShape_Circle == mMaskShape)
         {
-            path.addEllipse(mShapePos, mShapeWidth, mShapeWidth);
+            path.addEllipse(mHolePos, mHoleSize.width()/2, mHoleSize.height()/2);
         }
         else if(eMaskShap_Rectangle == mMaskShape)
         {
-            path.addRect(mShapePos.x() - mShapeWidth, mShapePos.y() - mShapeWidth, 2*mShapeWidth, 2*mShapeWidth);
+            path.addRect(mHolePos.x() - mHoleSize.width()/2, mHolePos.y() - mHoleSize.height()/2, mHoleSize.width(), mHoleSize.height());
         }
         path.setFillRule(Qt::OddEvenFill);
     }
@@ -141,46 +192,106 @@ void UBGraphicsCache::paint(QPainter *painter, const QStyleOptionGraphicsItem *o
 
 void UBGraphicsCache::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    Q_UNUSED(event);
-    mShapePos = event->pos();
-    mDrawMask = true;
+    if (OnClick == mCurrentMode)
+    {
+        drawHole(true);
+    }
+    
+    if (Persistent == mCurrentMode)
+        drawHole(!mDrawMask);
 
-    // Note: if refresh issues occure, replace the following 3 lines by: update();
-    update(updateRect(event->pos()));
-    mOldShapeWidth = mShapeWidth;
-    mOldShapePos = event->pos();
+    setHolePos(event->pos());
 }
 
-void UBGraphicsCache::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
+void UBGraphicsCache::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
 {
-    mShapePos = event->pos();
+    if (mShouldDrawAtHoverEnter)
+        drawHole(true);
+
+    mShouldDrawAtHoverEnter = false;
 
-    // Note: if refresh issues occure, replace the following 3 lines by: update();
     update(updateRect(event->pos()));
-    mOldShapeWidth = mShapeWidth;
-    mOldShapePos = event->pos();
+}
+
+void UBGraphicsCache::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
+{
+    mShouldDrawAtHoverEnter = mDrawMask;
+    drawHole(false);
+    update(updateRect(event->pos()));
+}
+
+void UBGraphicsCache::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
+{
+    setHolePos(event->pos());
+}
+
+void UBGraphicsCache::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
+{
+    setHolePos(event->pos());
 }
 
 void UBGraphicsCache::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
     Q_UNUSED(event);
-    mDrawMask = false;
+
+    if (OnClick == mCurrentMode)
+        drawHole(false);
 
     // Note: if refresh issues occure, replace the following 3 lines by: update();
     update(updateRect(event->pos()));
-    mOldShapeWidth = mShapeWidth;
+    mOldShapeSize = mHoleSize;
     mOldShapePos = event->pos();
 }
 
-int UBGraphicsCache::shapeWidth()
+void UBGraphicsCache::drawHole(bool draw)
 {
-    return mShapeWidth;
+    mDrawMask = draw;
+    if (mDrawMask)
+    {
+        mSavedCursor = cursor();
+        setCursor(mCursorForHole);
+    }
+    else
+        setCursor(mSavedCursor);
+        
 }
 
-void UBGraphicsCache::setShapeWidth(int width)
+void UBGraphicsCache::setHolePos(QPointF pos)
 {
-    mShapeWidth = width;
-    update();
+    mHolePos = pos;
+
+    // Note: if refresh issues occure, replace the following 3 lines by: update();
+    update(updateRect(pos));
+    mOldShapeSize = mHoleSize;
+    mOldShapePos = pos;
+}
+
+int UBGraphicsCache::holeWidth()
+{
+    return mHoleSize.width();
+}
+
+int UBGraphicsCache::holeHeight()
+{
+    return mHoleSize.height();
+}
+
+void UBGraphicsCache::setHoleWidth(int width)
+{
+    mHoleSize.setWidth(width);   
+    UBSettings::settings()->casheLastHoleSize->set(mHoleSize);
+}
+
+void UBGraphicsCache::setHoleHeight(int height)
+{
+    mHoleSize.setHeight(height);
+    UBSettings::settings()->casheLastHoleSize->set(mHoleSize);
+}
+
+void UBGraphicsCache::setHoleSize(QSize size)
+{
+    mHoleSize = size/UBApplication::boardController->controlView()->viewportTransform().m11();
+    UBSettings::settings()->casheLastHoleSize->set(mHoleSize);
 }
 
 QRectF UBGraphicsCache::updateRect(QPointF currentPoint)
@@ -189,11 +300,11 @@ QRectF UBGraphicsCache::updateRect(QPointF currentPoint)
     int x;
     int y;
 
-    x = qMin(currentPoint.x() - mShapeWidth, mOldShapePos.x() - mOldShapeWidth);
-    y = qMin(currentPoint.y() - mShapeWidth, mOldShapePos.y() - mOldShapeWidth);
+    x = qMin(currentPoint.x() - mHoleSize.width()/2, mOldShapePos.x() - mOldShapeSize.width()/2);
+    y = qMin(currentPoint.y() - mHoleSize.height()/2, mOldShapePos.y() - mOldShapeSize.height()/2);
     r = QRect(  x,
                 y,
-                qAbs(currentPoint.x() - mOldShapePos.x()) + 2*mShapeWidth,
-                qAbs(currentPoint.y() - mOldShapePos.y()) + 2*mShapeWidth);
+                qAbs(currentPoint.x() - mOldShapePos.x()) + mHoleSize.width(),
+                qAbs(currentPoint.y() - mOldShapePos.y()) + mHoleSize.height());
     return r;
 }
diff --git a/Sankore-3.1/src/tools/UBGraphicsCache.h b/Sankore-3.1/src/tools/UBGraphicsCache.h
index 823eb25..16e7ff5 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCache.h
+++ b/Sankore-3.1/src/tools/UBGraphicsCache.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSCACHE_H
 #define UBGRAPHICSCACHE_H
 
@@ -37,6 +38,14 @@ typedef enum
 
 class UBGraphicsCache : public QGraphicsRectItem, public UBItem
 {
+
+public:
+    enum eMode
+    {
+        OnClick = 0,
+        Persistent
+    };
+
 public:
     static UBGraphicsCache* instance(UBGraphicsScene *scene);
     ~UBGraphicsCache();
@@ -53,32 +62,52 @@ public:
     void setMaskColor(QColor color);
     eMaskShape maskshape();
     void setMaskShape(eMaskShape shape);
-    int shapeWidth();
-    void setShapeWidth(int width);
+    int holeWidth();
+    int holeHeight();
+
+    void setHoleWidth(int width);
+    void setHoleHeight(int height);
+
+    void setHolePos(QPointF pos);
+    void setHoleSize(QSize size);
+
+    void setMode(int mode);
 
 protected:
     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
+    void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
+    void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
+    void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
     void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
     void mousePressEvent(QGraphicsSceneMouseEvent *event);
     void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
 
 private:
+    void drawHole(bool draw);
+
+private:
     static QMap<UBGraphicsScene*, UBGraphicsCache*> sInstances;
 
     QColor mMaskColor;
     eMaskShape mMaskShape;
-    int mShapeWidth;
     bool mDrawMask;
-    QPointF mShapePos;
-    int mOldShapeWidth;
+    QPointF mHolePos;
+    QSize mOldShapeSize;
     QPointF mOldShapePos;
     UBGraphicsScene* mScene;
-    
+    bool mShouldDrawAtHoverEnter;
+
+    eMode mCurrentMode;
+
+    QSize mHoleSize;
 
     UBGraphicsCache(UBGraphicsScene *scene);
     
     void init();
     QRectF updateRect(QPointF currentPoint);
+
+    QCursor mSavedCursor;
+    QCursor mCursorForHole;
 };
 
 #endif // UBGRAPHICSCACHE_H
diff --git a/Sankore-3.1/src/tools/UBGraphicsCompass.cpp b/Sankore-3.1/src/tools/UBGraphicsCompass.cpp
index bfb3ae2..c575e16 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCompass.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsCompass.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "tools/UBGraphicsCompass.h"
 #include "domain/UBGraphicsScene.h"
 #include "core/UBApplication.h"
diff --git a/Sankore-3.1/src/tools/UBGraphicsCompass.h b/Sankore-3.1/src/tools/UBGraphicsCompass.h
index 4d2bbf2..7f08c65 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCompass.h
+++ b/Sankore-3.1/src/tools/UBGraphicsCompass.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSCOMPASS_H_
 #define UBGRAPHICSCOMPASS_H_
 
diff --git a/Sankore-3.1/src/tools/UBGraphicsCurtainItem.cpp b/Sankore-3.1/src/tools/UBGraphicsCurtainItem.cpp
index ef34a2b..30f92ee 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCurtainItem.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsCurtainItem.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsCurtainItem.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/tools/UBGraphicsCurtainItem.h b/Sankore-3.1/src/tools/UBGraphicsCurtainItem.h
index 6100968..1d0ce65 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCurtainItem.h
+++ b/Sankore-3.1/src/tools/UBGraphicsCurtainItem.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSCURTAINITEM_H_
 #define UBGRAPHICSCURTAINITEM_H_
 
diff --git a/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.cpp b/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.cpp
index 8626d35..0a3da8d 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 #include <QtSvg>
 
diff --git a/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.h b/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.h
index 1681532..36040ba 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.h
+++ b/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSCURTAINITEMDELEGATE_H_
 #define UBGRAPHICSCURTAINITEMDELEGATE_H_
 
diff --git a/Sankore-3.1/src/tools/UBGraphicsProtractor.cpp b/Sankore-3.1/src/tools/UBGraphicsProtractor.cpp
index 2608195..ae54063 100644
--- a/Sankore-3.1/src/tools/UBGraphicsProtractor.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsProtractor.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBGraphicsProtractor.h"
 #include "core/UBApplication.h"
 #include "gui/UBResources.h"
diff --git a/Sankore-3.1/src/tools/UBGraphicsProtractor.h b/Sankore-3.1/src/tools/UBGraphicsProtractor.h
index 4f2fc9b..6991ad3 100644
--- a/Sankore-3.1/src/tools/UBGraphicsProtractor.h
+++ b/Sankore-3.1/src/tools/UBGraphicsProtractor.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSPROTRACTOR_H_
 #define UBGRAPHICSPROTRACTOR_H_
 
diff --git a/Sankore-3.1/src/tools/UBGraphicsRuler.cpp b/Sankore-3.1/src/tools/UBGraphicsRuler.cpp
index 799b99a..cdccebd 100644
--- a/Sankore-3.1/src/tools/UBGraphicsRuler.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsRuler.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QPixmap>
 
 #include "tools/UBGraphicsRuler.h"
diff --git a/Sankore-3.1/src/tools/UBGraphicsRuler.h b/Sankore-3.1/src/tools/UBGraphicsRuler.h
index dd67818..4b0c6ee 100644
--- a/Sankore-3.1/src/tools/UBGraphicsRuler.h
+++ b/Sankore-3.1/src/tools/UBGraphicsRuler.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSRULER_H_
 #define UBGRAPHICSRULER_H_
 
diff --git a/Sankore-3.1/src/tools/UBGraphicsTriangle.cpp b/Sankore-3.1/src/tools/UBGraphicsTriangle.cpp
index 5bac8aa..5dbba7c 100644
--- a/Sankore-3.1/src/tools/UBGraphicsTriangle.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsTriangle.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QGraphicsPolygonItem>
 #include <QPolygonF>
 
diff --git a/Sankore-3.1/src/tools/UBGraphicsTriangle.h b/Sankore-3.1/src/tools/UBGraphicsTriangle.h
index 57cb65f..e8a2fdb 100644
--- a/Sankore-3.1/src/tools/UBGraphicsTriangle.h
+++ b/Sankore-3.1/src/tools/UBGraphicsTriangle.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBGRAPHICSTRIANGLE_H_
 #define UBGRAPHICSTRIANGLE_H_
 
diff --git a/Sankore-3.1/src/tools/UBToolsManager.cpp b/Sankore-3.1/src/tools/UBToolsManager.cpp
index f0fd830..763b489 100644
--- a/Sankore-3.1/src/tools/UBToolsManager.cpp
+++ b/Sankore-3.1/src/tools/UBToolsManager.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBToolsManager.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/tools/UBToolsManager.h b/Sankore-3.1/src/tools/UBToolsManager.h
index 640bda9..ba9b9ad 100644
--- a/Sankore-3.1/src/tools/UBToolsManager.h
+++ b/Sankore-3.1/src/tools/UBToolsManager.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBTOOLSMANAGER_H_
 #define UBTOOLSMANAGER_H_
 
diff --git a/Sankore-3.1/src/transition/UniboardSankoreTransition.cpp b/Sankore-3.1/src/transition/UniboardSankoreTransition.cpp
index 355ac43..6e5b119 100644
--- a/Sankore-3.1/src/transition/UniboardSankoreTransition.cpp
+++ b/Sankore-3.1/src/transition/UniboardSankoreTransition.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UniboardSankoreTransition.h"
 #include "core/UBSettings.h"
 #include "frameworks/UBFileSystemUtils.h"
diff --git a/Sankore-3.1/src/transition/UniboardSankoreTransition.h b/Sankore-3.1/src/transition/UniboardSankoreTransition.h
index 662b440..eca50cb 100644
--- a/Sankore-3.1/src/transition/UniboardSankoreTransition.h
+++ b/Sankore-3.1/src/transition/UniboardSankoreTransition.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UNIBOARDSANKORETRANSITION_H
 #define UNIBOARDSANKORETRANSITION_H
 
diff --git a/Sankore-3.1/src/web/UBOEmbedParser.cpp b/Sankore-3.1/src/web/UBOEmbedParser.cpp
index a5425f2..8f8b5a6 100644
--- a/Sankore-3.1/src/web/UBOEmbedParser.cpp
+++ b/Sankore-3.1/src/web/UBOEmbedParser.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QRegExp>
 #include <QStringList>
 #include <QDomDocument>
diff --git a/Sankore-3.1/src/web/UBOEmbedParser.h b/Sankore-3.1/src/web/UBOEmbedParser.h
index 0fcf386..2be4150 100644
--- a/Sankore-3.1/src/web/UBOEmbedParser.h
+++ b/Sankore-3.1/src/web/UBOEmbedParser.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBOEMBEDPARSER_H
 #define UBOEMBEDPARSER_H
 
diff --git a/Sankore-3.1/src/web/UBTrapFlashController.cpp b/Sankore-3.1/src/web/UBTrapFlashController.cpp
index 6e8016e..4a1ea02 100644
--- a/Sankore-3.1/src/web/UBTrapFlashController.cpp
+++ b/Sankore-3.1/src/web/UBTrapFlashController.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBTrapFlashController.h"
 
 #include <QtXml>
@@ -31,10 +32,14 @@
 #include "core/UBApplication.h"
 #include "core/UBSettings.h"
 
+#include "gui/UBMainWindow.h"
+
 #include "network/UBNetworkAccessManager.h"
 
 #include "domain/UBGraphicsScene.h"
+#include "domain/UBGraphicsWidgetItem.h"
 
+#include "board/UBBoardPaletteManager.h"
 #include "board/UBBoardController.h"
 
 #include "frameworks/UBPlatformUtils.h"
@@ -43,54 +48,25 @@
 
 #include "core/memcheck.h"
 
-UBTrapFlashController::UBTrapFlashController(QWidget* parent)
+#include "web/UBWebController.h"
+#include "browser/WBBrowserWindow.h"
+
+UBTrapWebPageContentController::UBTrapWebPageContentController(QWidget* parent)
     : QObject(parent)
-    , mTrapFlashUi(0)
-    , mTrapFlashDialog(0)
     , mParentWidget(parent)
     , mCurrentWebFrame(0)
+    , mTrapWebContentDialog(NULL)
 {
     // NOOP
 }
 
 
-UBTrapFlashController::~UBTrapFlashController()
+UBTrapWebPageContentController::~UBTrapWebPageContentController()
 {
     // NOOP
 }
 
-
-void UBTrapFlashController::showTrapFlash()
-{
-    if (!mTrapFlashDialog)
-    {
-        Qt::WindowFlags flag = Qt::Dialog | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint ;
-        flag &= ~ Qt::WindowContextHelpButtonHint;
-        flag &= ~ Qt::WindowMinimizeButtonHint;
-
-        mTrapFlashDialog = new QDialog(mParentWidget, flag);
-        mTrapFlashUi = new Ui::trapFlashDialog();
-        mTrapFlashUi->setupUi(mTrapFlashDialog);
-
-        mTrapFlashUi->webView->page()->setNetworkAccessManager(UBNetworkAccessManager::defaultAccessManager());
-        int viewWidth = mParentWidget->width() / 2;
-        int viewHeight = mParentWidget->height() * 2. / 3.;
-        mTrapFlashDialog->setGeometry(
-                (mParentWidget->width() - viewWidth) / 2
-                , (mParentWidget->height() - viewHeight) / 2
-                , viewWidth
-                , viewHeight);
-
-        connect(mTrapFlashUi->flashCombobox, SIGNAL(currentIndexChanged(int)), this, SLOT(selectFlash(int)));
-        connect(mTrapFlashUi->widgetNameLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(text_Changed(const QString &)));
-        connect(mTrapFlashUi->widgetNameLineEdit, SIGNAL(textEdited(const QString &)), this, SLOT(text_Edited(const QString &)));
-        connect(mTrapFlashUi->createWidgetButton, SIGNAL(clicked(bool)), this, SLOT(createWidget()));
-    }
-
-    mTrapFlashDialog->show();
-}
-
-void UBTrapFlashController::text_Changed(const QString &newText)
+void UBTrapWebPageContentController::text_Changed(const QString &newText)
 {
     QString new_text = newText;
 
@@ -117,157 +93,252 @@ void UBTrapFlashController::text_Changed(const QString &newText)
     if(new_text.indexOf(regExp) > -1)
     {
         new_text.remove(regExp);
-        mTrapFlashUi->widgetNameLineEdit->setText(new_text);
-        QToolTip::showText(mTrapFlashUi->widgetNameLineEdit->mapToGlobal(QPoint()), "Application name can`t contain any of the following characters:\r\n"+illegalCharList);
+        mTrapWebContentDialog->applicationNameLineEdit()->setText(new_text);
+        QToolTip::showText(mTrapWebContentDialog->applicationNameLineEdit()->mapToGlobal(QPoint()), "Application name can`t contain any of the following characters:\r\n"+illegalCharList);
     }
 }
 
-void UBTrapFlashController::text_Edited(const QString &newText)
+void UBTrapWebPageContentController::text_Edited(const QString &newText)
 {
     Q_UNUSED(newText);
 }
 
-void UBTrapFlashController::hideTrapFlash()
+
+void UBTrapWebPageContentController::showTrapContent()
 {
-    if (mTrapFlashDialog)
+    if (!mTrapWebContentDialog)
     {
-        mTrapFlashDialog->hide();
+        mTrapWebContentDialog = new WBTrapWebPageContentWindow(this, mParentWidget);
+        mTrapWebContentDialog->webView()->page()->setNetworkAccessManager(UBNetworkAccessManager::defaultAccessManager());
+        mTrapWebContentDialog->webView()->settings()->setAttribute(QWebSettings::JavaEnabled, true);
+        mTrapWebContentDialog->webView()->settings()->setAttribute(QWebSettings::PluginsEnabled, true);
+        mTrapWebContentDialog->webView()->settings()->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, true);
+        mTrapWebContentDialog->webView()->settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true);
+        mTrapWebContentDialog->webView()->settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true);
+        mTrapWebContentDialog->webView()->settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true);
+        mTrapWebContentDialog->webView()->settings()->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
     }
+
+    mTrapWebContentDialog->show();
+    mTrapWebContentDialog->setUrl(UBApplication::webController->currentPageUrl());
+}
+void UBTrapWebPageContentController::hideTrapContent()
+{
+    if (mTrapWebContentDialog)
+        mTrapWebContentDialog->hide();
 }
 
 
-void UBTrapFlashController::updateListOfFlashes(const QList<UBWebKitUtils::HtmlObject>& pAllFlashes)
+void UBTrapWebPageContentController::setLastWebHitTestResult(const QWebHitTestResult &result)
 {
-    if (mTrapFlashDialog)
+    mLastWebHitTestResult = result;
+}
+
+void UBTrapWebPageContentController::updateListOfContents(const QList<UBWebKitUtils::HtmlObject>& objects)
+{
+    if (mTrapWebContentDialog)
     {
-        mAvailableFlashes = pAllFlashes;
-        disconnect(mTrapFlashUi->flashCombobox, SIGNAL(currentIndexChanged(int)), this, SLOT(selectFlash(int)));
-        mTrapFlashUi->flashCombobox->clear();
-        mTrapFlashUi->flashCombobox->addItem(tr("Whole page"));
+        mAvaliableObjects = QList<UBWebKitUtils::HtmlObject>() << objects;
+        QComboBox *combobox = mTrapWebContentDialog->itemsComboBox();
+
+        disconnect(combobox, SIGNAL(currentIndexChanged(int)), this, SLOT(selectHtmlObject(int)));
 
-        foreach(UBWebKitUtils::HtmlObject wrapper, pAllFlashes)
+        mObjectNoToTrapByTrapWebComboboxIndex.clear();
+        combobox->clear();
+        combobox->addItem(tr("Whole page"));
+        mObjectNoToTrapByTrapWebComboboxIndex.insert(combobox->count(), 0);
+
+        for(int i = 1; i < objects.count(); i++)
         {
-            mTrapFlashUi->flashCombobox->addItem(widgetNameForObject(wrapper));
+            UBWebKitUtils::HtmlObject wrapper = objects.at(i);
+
+            if ("separator"== wrapper.tagName)
+                combobox->insertSeparator(combobox->count());
+            else
+            {
+                if (wrapper.objectMimeType.contains("html"))
+                    continue;
+
+                mObjectNoToTrapByTrapWebComboboxIndex.insert(combobox->count(), i);
+                combobox->addItem(wrapper.objectName);
+            }
         }
 
-        connect(mTrapFlashUi->flashCombobox, SIGNAL(currentIndexChanged(int)), this, SLOT(selectFlash(int)));
-        selectFlash(mTrapFlashUi->flashCombobox->currentIndex());
+        for(int i = 1; i <= objects.count(); i++)
+        {
+            UBWebKitUtils::HtmlObject wrapper = objects.at(i-1);
+            if (UBApplication::webController->isOEmbedable(QUrl(wrapper.source)))
+            {
+                UBHttpGet *getEmbed = new UBHttpGet(this);
+                getEmbed->get(QUrl("http://www.youtube.com/oembed?url="+wrapper.source+"&format=xml"));
+                connect(getEmbed, SIGNAL(downloadFinished(bool, QUrl, QString, QByteArray, QPointF, QSize, bool)), this, SLOT(oEmbedRequestFinished(bool, QUrl, QString, QByteArray, QPointF, QSize, bool)));
+            }
+        }
+
+        connect(combobox, SIGNAL(currentIndexChanged(int)), this, SLOT(selectHtmlObject(int)));
     }
 }
 
-
-void UBTrapFlashController::selectFlash(int pFlashIndex)
+void UBTrapWebPageContentController::selectHtmlObject(int pObjectIndex)
 {
-    if (pFlashIndex == 0)
+    if (pObjectIndex == 0)
     {
-        mTrapFlashUi->webView->setHtml(generateFullPageHtml("", false));
+        mTrapWebContentDialog->webView()->setHtml(generateFullPageHtml(mCurrentWebFrame->url()));
         QVariant res = mCurrentWebFrame->evaluateJavaScript("window.document.title");
-        mTrapFlashUi->widgetNameLineEdit->setText(res.toString().trimmed());
+        mTrapWebContentDialog->applicationNameLineEdit()->setText(res.toString().trimmed());
+        UBApplication::mainWindow->actionWebTrapToLibrary->setDisabled(true);
+        UBApplication::mainWindow->actionWebTrapToCurrentPage->setDisabled(true);
     }
-    else if (pFlashIndex > 0 && pFlashIndex <= mAvailableFlashes.size())
+    else if (pObjectIndex > 0 && pObjectIndex <= mAvaliableObjects.size())
     {
-        UBWebKitUtils::HtmlObject currentObject = mAvailableFlashes.at(pFlashIndex - 1);
-        mTrapFlashUi->webView->setHtml(generateHtml(currentObject, "", false));
-        mTrapFlashUi->widgetNameLineEdit->setText(widgetNameForObject(currentObject));
+        UBWebKitUtils::HtmlObject currentObject;
+
+        currentObject = mAvaliableObjects.at(mObjectNoToTrapByTrapWebComboboxIndex.value(pObjectIndex));
+        generatePreview(currentObject);
+
+        mTrapWebContentDialog->applicationNameLineEdit()->setText(currentObject.objectName);
+
+        UBApplication::mainWindow->actionWebTrapToLibrary->setDisabled(!currentObject.embedCode.isEmpty());
+        UBApplication::mainWindow->actionWebTrapToCurrentPage->setDisabled(!currentObject.embedCode.isEmpty());
     }
 }
 
-
-void UBTrapFlashController::createWidget()
+void UBTrapWebPageContentController::oEmbedRequestFinished(bool pSuccess, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground)
 {
-    int selectedIndex = mTrapFlashUi->flashCombobox->currentIndex();
+    Q_UNUSED(pContentTypeHeader)
+    Q_UNUSED(pPos)
+    Q_UNUSED(pSize)
+    Q_UNUSED(isBackground)
 
-    if (selectedIndex == 0)
+    if (pSuccess)
     {
-        // full page widget
-        QString tempDir = UBFileSystemUtils::createTempDir("TrapFlashRendering");
-        QDir widgetDir(tempDir + "/" + mTrapFlashUi->widgetNameLineEdit->text() + ".wgt");
+        QDomDocument response;
+        
+        response.setContent(pData);
 
-        if (widgetDir.exists() && !UBFileSystemUtils::deleteDir(widgetDir.path()))
-        {
-            qWarning() << "Cannot delete " << widgetDir.path();
-        }
-
-        widgetDir.mkpath(widgetDir.path());
-
-        generateFullPageHtml(widgetDir.path(), true);
+        QString sResponse = response.toString();
+        QString sSourceUrl = sourceUrl.toString().remove("http://www.youtube.com/oembed?url=").remove("&format=xml");
 
-        generateIcon(widgetDir.path());
-        generateConfig(800, 600, widgetDir.path());
+        UBWebKitUtils::HtmlObject obj(sSourceUrl, sResponse);
+        mAvaliableObjects << obj;
 
-        //generateDefaultPng(width, height, widgetDir.path());
+        QComboBox *combobox = mTrapWebContentDialog->itemsComboBox();
 
-        importWidgetInLibrary(widgetDir);
-
-        UBFileSystemUtils::deleteDir(tempDir);
+        mObjectNoToTrapByTrapWebComboboxIndex.insert(combobox->count(), mAvaliableObjects.count()-1);
+        combobox->addItem(tr("Embed ") + obj.objectName);
     }
-    else
+}
+void UBTrapWebPageContentController::prepareCurrentItemForImport(bool sendToBoard)
+{
+    int selectedIndex = mTrapWebContentDialog->itemsComboBox()->currentIndex();
+    UBWebKitUtils::HtmlObject selectedObject = mAvaliableObjects.at(mObjectNoToTrapByTrapWebComboboxIndex.value(selectedIndex));
+
+    QSize currentItemSize(selectedObject.width, selectedObject.height);
+
+    sDownloadFileDesc desc;
+    desc.isBackground = false;
+    desc.modal = false;
+    desc.dest = sendToBoard ? sDownloadFileDesc::board : sDownloadFileDesc::library;
+    desc.name = mTrapWebContentDialog->applicationNameLineEdit()->text();
+    desc.srcUrl = selectedObject.source;
+    desc.size = currentItemSize;
+    desc.contentTypeHeader = selectedObject.objectMimeType;
+    UBDownloadManager::downloadManager()->addFileToDownload(desc);
+}
+
+void UBTrapWebPageContentController::addLink(bool isOnLibrary)
+{
+    int selectedIndex = mTrapWebContentDialog->itemsComboBox()->currentIndex();
+    UBWebKitUtils::HtmlObject selectedObject = mAvaliableObjects.at(mObjectNoToTrapByTrapWebComboboxIndex.value(selectedIndex));
+    QSize size(selectedObject.width,selectedObject.height);
+    if(isOnLibrary)
     {
-        // flash widget
-        UBWebKitUtils::HtmlObject selectedObject = mAvailableFlashes.at(selectedIndex - 1);
-        UBApplication::applicationController->showBoard();
-        UBApplication::boardController->downloadURL(QUrl(selectedObject.source), QString(), QPoint(0, 0), QSize(selectedObject.width, selectedObject.height));
+        if(selectedIndex == 0)
+            UBApplication::boardController->paletteManager()->featuresWidget()->createBookmark(mTrapWebContentDialog->applicationNameLineEdit()->text(),selectedObject.source);
+        else
+            UBApplication::boardController->paletteManager()->featuresWidget()->createLink(mTrapWebContentDialog->applicationNameLineEdit()->text(), selectedObject.source,size, selectedObject.objectMimeType, selectedObject.embedCode);
     }
+    else
+        UBApplication::boardController->addLinkToPage(selectedObject.source, size, QPointF(), selectedObject.embedCode);
+}
 
-    QString freezedWidgetPath = UBPlatformUtils::applicationResourcesDirectory() + "/etc/freezedWidgetWrapper.html";
-    mTrapFlashUi->webView->load(QUrl::fromLocalFile(freezedWidgetPath));
-
-    mTrapFlashDialog->hide();
+void UBTrapWebPageContentController::addItemToLibrary()
+{
+    mTrapWebContentDialog->setReadyForTrap(false);
+    mCurrentItemImportDestination = library;
+    prepareCurrentItemForImport(false);
+    UBApplication::applicationController->showBoard();
+    hideTrapContent();
 }
 
+void UBTrapWebPageContentController::addItemToBoard()
+{
+    mTrapWebContentDialog->setReadyForTrap(false);
+    mCurrentItemImportDestination = board;
+    prepareCurrentItemForImport(true);
+    UBApplication::applicationController->showBoard();
+    hideTrapContent();
+}
 
-void UBTrapFlashController::importWidgetInLibrary(QDir pSourceDir)
+void UBTrapWebPageContentController::addLinkToLibrary()
 {
-    const QString userWidgetPath = UBSettings::settings()->userInteractiveDirectory() + "/" + tr("Web");
-    QDir userWidgetDir(userWidgetPath);
+    mTrapWebContentDialog->setReadyForTrap(false);
+    mCurrentItemImportDestination = library;
+    addLink(true);
+    UBApplication::applicationController->showBoard();
+    hideTrapContent();
+    mTrapWebContentDialog->setReadyForTrap(true);
 
-    if (!userWidgetDir.exists())
-    {
-        userWidgetDir.mkpath(userWidgetPath);
-    }
+}
 
-    QString widgetLibraryPath = userWidgetPath + "/" + mTrapFlashUi->widgetNameLineEdit->text() + ".wgt";
-    QDir widgetLibraryDir(widgetLibraryPath);
+void UBTrapWebPageContentController::addLinkToBoard()
+{
+    mTrapWebContentDialog->setReadyForTrap(false);
+    mCurrentItemImportDestination = board;
+    addLink(false);
+    UBApplication::applicationController->showBoard();
+    hideTrapContent();
+    mTrapWebContentDialog->setReadyForTrap(true);
+}
 
-    if (widgetLibraryDir.exists())
+void UBTrapWebPageContentController::updateTrapContentFromPage(QWebFrame* pCurrentWebFrame)
+{
+    if (pCurrentWebFrame && (mTrapWebContentDialog && mTrapWebContentDialog->isVisible()))
     {
-        if (!UBFileSystemUtils::deleteDir(widgetLibraryDir.path()))
+        QList<UBWebKitUtils::HtmlObject> list;
+        if (mTrapWebContentDialog)
         {
-            qWarning() << "Cannot delete old widget " << widgetLibraryDir.path();
+            list << UBWebKitUtils::HtmlObject(pCurrentWebFrame->baseUrl().toString(), widgetNameForUrl(pCurrentWebFrame->title()), QString(),"Whole Page", 800, 600);
+            list << UBWebKitUtils::HtmlObject(QString(),QString(),QString(),"separator",0,0);
+            //list << UBWebKitUtils::objectsInFrameByTag(pCurrentWebFrame, "object");
+            //list << UBWebKitUtils::objectsInFrameByTag(pCurrentWebFrame, "img");
+            list << UBWebKitUtils::objectsInFrameByTag(pCurrentWebFrame, "audio");
+            list << UBWebKitUtils::objectsInFrameByTag(pCurrentWebFrame, "video");
+            list << UBWebKitUtils::objectsInFrameByTag(pCurrentWebFrame, "source");
+            //list << UBWebKitUtils::objectsInFrameByTag(pCurrentWebFrame, "iframe");
+            list << UBWebKitUtils::objectsInFrameByTag(pCurrentWebFrame, "frame");
+            list << UBWebKitUtils::objectsInFrameByTag(pCurrentWebFrame, "a");
+            list << UBWebKitUtils::objectsInFrameByTag(pCurrentWebFrame, "embed");
+            list << UBWebKitUtils::objectsInFrameByTag(pCurrentWebFrame, "link");
         }
-    }
 
-    qDebug() << "Widget imported in path " << widgetLibraryPath;
-    UBFileSystemUtils::copyDir(pSourceDir.path(), widgetLibraryPath);
-
-    // also add to current scene
-    if (UBApplication::applicationController)
-        UBApplication::applicationController->showBoard();
-
-    if (UBApplication::boardController &&
-        UBApplication::boardController->activeScene())
-    {
-        UBApplication::boardController->activeScene()->addWidget(QUrl::fromLocalFile(widgetLibraryPath));
-    }
-}
+        mCurrentWebFrame = pCurrentWebFrame;
+        updateListOfContents(list);
 
+        mTrapWebContentDialog->applicationNameLineEdit()->setText(mCurrentWebFrame->title());
 
-void UBTrapFlashController::updateTrapFlashFromPage(QWebFrame* pCurrentWebFrame)
-{
-    if (pCurrentWebFrame && mTrapFlashDialog && mTrapFlashDialog->isVisible())
-    {
-        QList<UBWebKitUtils::HtmlObject> list = UBWebKitUtils::objectsInFrame(pCurrentWebFrame);
-        mCurrentWebFrame = pCurrentWebFrame;
-        updateListOfFlashes(list);
+        mTrapWebContentDialog->setReadyForTrap(!list.isEmpty());
+        UBApplication::mainWindow->actionWebTrapToLibrary->setDisabled(true);
+        UBApplication::mainWindow->actionWebTrapToCurrentPage->setDisabled(true);
     }
 }
 
 
-QString UBTrapFlashController::generateIcon(const QString& pDirPath)
+QString UBTrapWebPageContentController::generateIcon(const QString& pDirPath)
 {
     QDesktopWidget* desktop = QApplication::desktop();
-    QPoint webViewPosition = mTrapFlashUi->webView->mapToGlobal(mTrapFlashUi->webView->pos());
-    QSize webViewSize = mTrapFlashUi->webView->size();
+    QPoint webViewPosition = mTrapWebContentDialog->webView()->mapToGlobal(mTrapWebContentDialog->webView()->pos());
+    QSize webViewSize = mTrapWebContentDialog->webView()->size();
     QPixmap capture = QPixmap::grabWindow(desktop->winId(), webViewPosition.x(), webViewPosition.y()
             , webViewSize.width() - 10, webViewSize.height() -10);
 
@@ -289,7 +360,7 @@ QString UBTrapFlashController::generateIcon(const QString& pDirPath)
 }
 
 
-void UBTrapFlashController::generateConfig(int pWidth, int pHeight, const QString& pDestinationPath)
+void UBTrapWebPageContentController::generateConfig(int pWidth, int pHeight, const QString& pDestinationPath)
 {
     QFile configFile(pDestinationPath + "/" + "config.xml");
 
@@ -309,15 +380,15 @@ void UBTrapFlashController::generateConfig(int pWidth, int pHeight, const QStrin
     out << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl;
     out << "<widget xmlns=\"http://www.w3.org/ns/widgets\"" << endl;
     out << "        xmlns:ub=\"http://uniboard.mnemis.com/widgets\"" << endl;
-    out << "        identifier=\"http://uniboard.mnemis.com/" << mTrapFlashUi->widgetNameLineEdit->text() << "\"" <<endl;
+    out << "        identifier=\"http://uniboard.mnemis.com/" << mTrapWebContentDialog->applicationNameLineEdit()->text() << "\"" <<endl;
 
     out << "        version=\"1.0\"" << endl;
     out << "        width=\"" << pWidth << "\"" << endl;
     out << "        height=\"" << pHeight << "\"" << endl;
     out << "        ub:resizable=\"true\">" << endl;
 
-    out << "    <name>" << mTrapFlashUi->widgetNameLineEdit->text() << "</name>" << endl;
-    out << "    <content src=\"" << mTrapFlashUi->widgetNameLineEdit->text() << ".html\"/>" << endl;
+    out << "    <name>" << mTrapWebContentDialog->applicationNameLineEdit()->text() << "</name>" << endl;
+    out << "    <content src=\"" << mTrapWebContentDialog->applicationNameLineEdit()->text() << ".html\"/>" << endl;
 
     out << "</widget>" << endl;
 
@@ -326,159 +397,122 @@ void UBTrapFlashController::generateConfig(int pWidth, int pHeight, const QStrin
 }
 
 
-QString UBTrapFlashController::generateFullPageHtml(const QString& pDirPath, bool pGenerateFile)
+QString UBTrapWebPageContentController::generateFullPageHtml(const QUrl &srcUrl)
 {
-
     QString htmlContentString;
 
-    htmlContentString += "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\r\n";
+    htmlContentString = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\r\n";
     htmlContentString += "<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n";
-    htmlContentString += "  <head>\r\n";
-    htmlContentString += "    <meta http-equiv=\"refresh\" content=\"0; " + mCurrentWebFrame->url().toString() + "\">\r\n";
-    htmlContentString += "  </head>\r\n";
-    htmlContentString += "  <body>\r\n";
-    htmlContentString += "    Redirect to target...\r\n";
-    htmlContentString += "  </body>\r\n";
+    htmlContentString += "    <head>\r\n";
+    htmlContentString += "        <meta http-equiv=\"refresh\" content=\"0; " + srcUrl.toString() + "\">\r\n";
+    htmlContentString += "    </head>\r\n";
+    htmlContentString += "    <body>\r\n";
+    htmlContentString += "        Redirect to target...\r\n";
+    htmlContentString += "    </body>\r\n";
     htmlContentString += "</html>\r\n";
 
-    if (!pGenerateFile)
-    {
-        return htmlContentString;
-    }
-    else
-    {
-        QString fileName = mTrapFlashUi->widgetNameLineEdit->text();
-        const QString fullHtmlFileName = pDirPath + "/" + fileName + ".html";
-        QDir dir(pDirPath);
-        if (!dir.exists())
-        {
-            dir.mkpath(dir.path());
-        }
-        QFile widgetHtmlFile(fullHtmlFileName);
-        if (widgetHtmlFile.exists())
-        {
-            widgetHtmlFile.remove(widgetHtmlFile.fileName());
-        }
-        if (!widgetHtmlFile.open(QIODevice::WriteOnly))
-        {
-            qWarning() << "cannot open file " << widgetHtmlFile.fileName();
-            return "";
-        }
-        QTextStream out(&widgetHtmlFile);
-        out << htmlContentString;
-
-        widgetHtmlFile.close();
-        return widgetHtmlFile.fileName();
-    }
+    return htmlContentString;
 }
 
 
-QString UBTrapFlashController::generateHtml(const UBWebKitUtils::HtmlObject& pObject,
-        const QString& pDirPath, bool pGenerateFile)
+void UBTrapWebPageContentController::generatePreview(const UBWebKitUtils::HtmlObject& pObject, bool bTryToEmbed)
 {
-    qDebug() << pObject.source;
     QUrl objectUrl(pObject.source);
     QString objectFullUrl = pObject.source;
+    qDebug() << objectFullUrl;
     if (!objectUrl.isValid())
     {
         qWarning() << "invalid URL " << pObject.source;
-        return "";
+        return;
     }
-    if (objectUrl.isRelative())
-    {
-        int lastSlashIndex = mCurrentWebFrame->url().toString().lastIndexOf("/");
-        QString objectPath = mCurrentWebFrame->url().toString().left(lastSlashIndex);
-        objectFullUrl =   objectPath+ "/" + pObject.source;
 
+    QString mimeType = (UBFileSystemUtils::mimeTypeFromFileName(objectFullUrl).length() == 0) ? pObject.objectMimeType : UBFileSystemUtils::mimeTypeFromFileName(objectFullUrl);
+
+    if(mimeType.contains("x-shockwave-flash")){
+        QUrl url = QUrl::fromLocalFile(UBGraphicsW3CWidgetItem::createNPAPIWrapperInDir(objectFullUrl, QDir::tempPath(), mimeType, QSize(800,600), QUuid::createUuid().toString()) + "/index.htm");
+        mTrapWebContentDialog->webView()->load(url);
+        return;
     }
 
     QString htmlContentString;
 
-    htmlContentString += "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n";
-    htmlContentString += "<html>\n";
-    htmlContentString += "<head>\n";
-    htmlContentString += "    <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n";
-    htmlContentString += "</head>\n";
+    htmlContentString = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">";
+    htmlContentString += "<html>";
+    htmlContentString += "    <head>";
+    htmlContentString += "        <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">";
+    htmlContentString += "    </head>";
 
-    if (!pGenerateFile)
-    {
-        htmlContentString += "<body bgcolor=\"rgb(180,180,180)\">\n";
-    }
-    else
-    {
-        htmlContentString += "<body>\n";
-    }
+    htmlContentString += "  <body bgcolor=\"rgb(180,180,180)\">";
 
-    htmlContentString += "        <div align='center'>\n";
+    htmlContentString += "      <div align='center'>";
 
-    if (mCurrentWebFrame->url().toString().contains("youtube"))
-    {
-        QVariant res = mCurrentWebFrame->evaluateJavaScript("window.document.getElementById('embed_code').value");
 
-        //force windowsless mode
-
-        htmlContentString += res.toString().replace("></embed>", " wmode='opaque'></embed>");
-    }
-    else
+    if (!pObject.embedCode.isEmpty())
     {
-        htmlContentString += "            <object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'\n";
-        htmlContentString += "                codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0'\n";
-        htmlContentString += "                width='" + QString::number(pObject.width)  + "' height='" + QString::number(pObject.height) + "'>\n";
-        htmlContentString += "                <param name='movie' value='" + objectFullUrl + "'>\n";
-        htmlContentString += "                <param name='quality' value='high'>\n";
-        htmlContentString += "                <param name='wmode' value='opaque'>\n";
-        htmlContentString += "                <embed src='" + objectFullUrl + "'\n";
-        htmlContentString += "                    quality='high'\n";
-        htmlContentString += "                    pluginspage='http://www.macromedia.com/go/getflashplayer'\n";
-        htmlContentString += "                    type='application/x-shockwave-flash'\n";
-        htmlContentString += "                     width='" + QString::number(pObject.width - 20) + "' height='" + QString::number(pObject.height - 20) + "' wmode='opaque'>\n";
-        htmlContentString += "                </embed>\n";
-        htmlContentString += "            </object>\n";
+        htmlContentString += pObject.embedCode;
     }
-
-    htmlContentString += "        </div>\n";
-    htmlContentString += "</body>\n";
-    htmlContentString += "</html>\n";
-
-    if (!pGenerateFile)
-    {
-            return htmlContentString;
+    else if(mimeType.contains("image")){
+        htmlContentString += "    <img src=\"" + objectFullUrl + "\">";
     }
-    else
+    else if (mimeType.contains("video")){
+        htmlContentString += "    <video src=\"" + objectFullUrl + "\" controls=\"controls\">";
+    }
+    else if (mimeType.contains("audio")){
+        htmlContentString += "    <audio src=\"" + objectFullUrl + "\" controls=\"controls\">";
+    }
+    else if (mimeType.contains("html"))
     {
-        QString fileName = mTrapFlashUi->widgetNameLineEdit->text();
-        const QString fullHtmlFileName = pDirPath + "/" + fileName + ".html";
-        QDir dir(pDirPath);
-
-        if (!dir.exists())
+        if (bTryToEmbed)
         {
-            dir.mkpath(dir.path());
+            QString videoId;
+            
+            int videoIdStartPos = -1;
+            if (objectFullUrl.contains("watch?v="))
+            {
+                videoIdStartPos = objectFullUrl.indexOf("watch?v=") + QString("watch?v=").size();
+            }
+            else if (objectFullUrl.contains("/embed/"))
+            {
+                videoIdStartPos = objectFullUrl.indexOf("/embed/") + QString("/embed/").size();
+            }
+            
+            videoId = objectFullUrl.right(objectFullUrl.size() - videoIdStartPos);
+
+            if (!videoId.isNull())
+            {
+                htmlContentString += "<iframe width=\""+QString("%1").arg((640 > pObject.width) ? 640 : pObject.width)+"\" height=\""+QString("%1").arg((480 > pObject.width) ? 480 : pObject.width)+"\" src=\"http://www.youtube.com/embed/"+videoId+"\" frameborder=\"0\" allowfullscreen></iframe>";
+            }
         }
-
-        QFile widgetHtmlFile(fullHtmlFileName);
-
-        if (widgetHtmlFile.exists())
+        else
         {
-            widgetHtmlFile.remove(widgetHtmlFile.fileName());
-        }
-
-        if (!widgetHtmlFile.open(QIODevice::WriteOnly))
-        {
-            qWarning() << "cannot open file " << widgetHtmlFile.fileName();
-            return "";
+            htmlContentString = generateFullPageHtml(objectFullUrl);
+            mTrapWebContentDialog->webView()->setHtml(htmlContentString);
+            return;
+            //htmlContentString +="        <iframe width=\"" + QString("%1").arg(mCurrentWebFrame->geometry().width()) + "\" height=\"" + QString("%1").arg(mCurrentWebFrame->geometry().height()) + "\" frameborder=0 src=\""+objectFullUrl+"\">";
         }
+    }
+    else if (mCurrentWebFrame->url().toString().contains("youtube")){
+        QVariant res = mCurrentWebFrame->evaluateJavaScript("window.document.getElementById('embed_code').value");
 
-        QTextStream out(&widgetHtmlFile);
-        out << htmlContentString;
+        //force windowsless mode
 
-        widgetHtmlFile.close();
-        return widgetHtmlFile.fileName();
+        QString s = res.toString();
+        htmlContentString += s.replace("></embed>", " wmode='opaque'></embed>");
     }
+    else
+        qWarning() << "not supported";
+
+    htmlContentString += "        </div>";
+    htmlContentString += "</body>";
+    htmlContentString += "</html>";
+
+    qDebug() << htmlContentString;
+    mTrapWebContentDialog->webView()->setHtml(htmlContentString);
 }
 
-QString UBTrapFlashController::widgetNameForObject(UBWebKitUtils::HtmlObject pObject)
+QString UBTrapWebPageContentController::widgetNameForUrl(QString pObjectUrl)
 {
-    QString url = pObject.source;
+    QString url = pObjectUrl;
     int parametersIndex = url.indexOf("?");
     if(parametersIndex != -1)
         url = url.left(parametersIndex);
@@ -489,4 +523,3 @@ QString UBTrapFlashController::widgetNameForObject(UBWebKitUtils::HtmlObject pOb
 
     return result;
 }
-
diff --git a/Sankore-3.1/src/web/UBTrapFlashController.h b/Sankore-3.1/src/web/UBTrapFlashController.h
index 44b53f1..3ff46b0 100644
--- a/Sankore-3.1/src/web/UBTrapFlashController.h
+++ b/Sankore-3.1/src/web/UBTrapFlashController.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,11 +20,13 @@
  */
 
 
+
 #ifndef UBTRAPFLASHCONTROLLER_H_
 #define UBTRAPFLASHCONTROLLER_H_
 
 #include <QtGui>
 #include "UBWebKitUtils.h"
+#include "web/browser/WBTrapWebPageContent.h"
 
 namespace Ui
 {
@@ -32,46 +34,65 @@ namespace Ui
 }
 
 
-class UBTrapFlashController : public QObject
+class UBTrapWebPageContentController : public QObject
 {
-    Q_OBJECT;
+    Q_OBJECT
+
+    enum importDestination
+    {
+        library = 0,
+        board
+    };
+
+
     public:
-        UBTrapFlashController(QWidget* parent = 0);
-        virtual ~UBTrapFlashController();
+        UBTrapWebPageContentController(QWidget* parent = 0);
+        virtual ~UBTrapWebPageContentController();
 
-        void showTrapFlash();
-        void hideTrapFlash();
+        void showTrapContent();
+        void hideTrapContent();
+
+        void setLastWebHitTestResult(const QWebHitTestResult &result);
 
     public slots:
-        void updateTrapFlashFromPage(QWebFrame* pCurrentWebFrame);
+        void updateTrapContentFromPage(QWebFrame* pCurrentWebFrame);
         void text_Changed(const QString &);
         void text_Edited(const QString &);
-
+        void addItemToLibrary();
+        void addItemToBoard();
+        void addLinkToLibrary();
+        void addLinkToBoard();
 
     private slots:
-        void selectFlash(int pFlashIndex);
-        void createWidget();
+        void selectHtmlObject(int pObjectIndex);
+        void oEmbedRequestFinished(bool pSuccess, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground);
 
     private:
 
-        void updateListOfFlashes(const QList<UBWebKitUtils::HtmlObject>& pAllFlashes);
+        void addLink(bool isOnLibrary);
+        void prepareCurrentItemForImport(bool sendToBoard);
+        void updateListOfContents(const QList<UBWebKitUtils::HtmlObject>& objects);
 
-        QString widgetNameForObject(UBWebKitUtils::HtmlObject pObject);
+        QString widgetNameForUrl(QString pObjectUrl);
 
-        QString generateFullPageHtml(const QString& pDirPath, bool pGenerateFile);
-        QString generateHtml(const UBWebKitUtils::HtmlObject& pObject, const QString& pDirPath, bool pGenerateFile);
+        QString generateFullPageHtml(const QUrl &srcUrl);
+        void generatePreview(const UBWebKitUtils::HtmlObject& pObject, bool bTryToEmbed = false);
 
         QString generateIcon(const QString& pDirPath);
 
         void generateConfig(int pWidth, int pHeight, const QString& pDestinationPath);
 
-        void importWidgetInLibrary(QDir pSourceDir);
 
-        Ui::trapFlashDialog* mTrapFlashUi;
-        QDialog* mTrapFlashDialog;
         QWidget* mParentWidget;
         QWebFrame* mCurrentWebFrame;
-        QList<UBWebKitUtils::HtmlObject> mAvailableFlashes;
+        QList<UBWebKitUtils::HtmlObject> mAvaliableObjects;
+        QMap<int, int> mObjectNoToTrapByTrapWebComboboxIndex;
+
+        WBTrapWebPageContentWindow *mTrapWebContentDialog;
+        QWebHitTestResult mLastWebHitTestResult;
+
+        QUrl mCurrentItemUrl;
+        importDestination mCurrentItemImportDestination;
 };
 
 
diff --git a/Sankore-3.1/src/web/UBWebController.cpp b/Sankore-3.1/src/web/UBWebController.cpp
index 9a57597..d636db5 100644
--- a/Sankore-3.1/src/web/UBWebController.cpp
+++ b/Sankore-3.1/src/web/UBWebController.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 #include <QDomDocument>
 #include <QXmlQuery>
@@ -64,13 +65,13 @@ UBWebController::UBWebController(UBMainWindow* mainWindow)
     , mMainWindow(mainWindow)
     , mCurrentWebBrowser(0)
     , mBrowserWidget(0)
-    , mTrapFlashController(0)
+    , mTrapContentController(0)
     , mToolsCurrentPalette(0)
     , mToolsPalettePositionned(false)
     , mDownloadViewIsVisible(false)
 {
     connect(mMainWindow->actionWebTools, SIGNAL(toggled(bool)), this, SLOT(toggleWebToolsPalette(bool)));
-
+    connect(mMainWindow->actionBookmark, SIGNAL(triggered()), this, SLOT(onActionBookmark()));
     mStackedWidget = new QStackedWidget();
     mStackedWidget->addWidget(new QWidget(mStackedWidget));
     mStackedWidget->addWidget(new QWidget(mStackedWidget));
@@ -159,7 +160,7 @@ void UBWebController::webBrowserInstance()
 
             adaptToolBar();
 
-            mTrapFlashController = new UBTrapFlashController((*mCurrentWebBrowser));
+            mTrapContentController = new UBTrapWebPageContentController((*mCurrentWebBrowser));
 
             connect((*mCurrentWebBrowser), SIGNAL(activeViewPageChanged()), this, SLOT(activePageChanged()));
 
@@ -221,7 +222,7 @@ void UBWebController::tutorialWebInstance()
             mStackedWidget->insertWidget(Tutorial, (*mCurrentWebBrowser));
             adaptToolBar();
 
-            mTrapFlashController = new UBTrapFlashController((*mCurrentWebBrowser));
+            mTrapContentController = new UBTrapWebPageContentController((*mCurrentWebBrowser));
 
             connect((*mCurrentWebBrowser), SIGNAL(activeViewPageChanged()), this, SLOT(activePageChanged()));
             (*mCurrentWebBrowser)->loadUrl(currentUrl);
@@ -231,7 +232,7 @@ void UBWebController::tutorialWebInstance()
 
         }
         else
-        	(*mCurrentWebBrowser)->loadUrl(currentUrl);
+            (*mCurrentWebBrowser)->loadUrl(currentUrl);
 
         mStackedWidget->setCurrentIndex(Tutorial);
         UBApplication::applicationController->setMirrorSourceWidget((*mCurrentWebBrowser)->paintWidget());
@@ -281,7 +282,7 @@ void UBWebController::paraschoolWebInstance()
 
             adaptToolBar();
 
-            mTrapFlashController = new UBTrapFlashController((*mCurrentWebBrowser));
+            mTrapContentController = new UBTrapWebPageContentController((*mCurrentWebBrowser));
 
             connect((*mCurrentWebBrowser), SIGNAL(activeViewPageChanged()), this, SLOT(activePageChanged()));
             (*mCurrentWebBrowser)->loadUrl(currentUrl);
@@ -326,31 +327,19 @@ void UBWebController::setSourceWidget(QWidget* pWidget)
     UBApplication::applicationController->setMirrorSourceWidget(pWidget);
 }
 
-
-void UBWebController::trapFlash()
-{
-    mTrapFlashController->showTrapFlash();
-    activePageChanged();
-}
-
-
 void UBWebController::activePageChanged()
 {
     if (mCurrentWebBrowser && (*mCurrentWebBrowser)->currentTabWebView())
     {
-        if (mTrapFlashController && (*mCurrentWebBrowser)->currentTabWebView()->page())
+        if (mTrapContentController && (*mCurrentWebBrowser)->currentTabWebView()->page())
         {
-            mTrapFlashController->updateTrapFlashFromPage((*mCurrentWebBrowser)->currentTabWebView()->page()->currentFrame());
+            mTrapContentController->updateTrapContentFromPage((*mCurrentWebBrowser)->currentTabWebView()->page()->currentFrame());
         }
 
         mMainWindow->actionWebTrap->setChecked(false);
 
         QUrl latestUrl = (*mCurrentWebBrowser)->currentTabWebView()->url();
 
-        // TODO : Uncomment the next line to continue the youtube button bugfix
-        //UBApplication::mainWindow->actionWebOEmbed->setEnabled(hasEmbeddedContent());
-        // And remove this line once the previous one is uncommented
-        UBApplication::mainWindow->actionWebOEmbed->setEnabled(isOEmbedable(latestUrl));
         UBApplication::mainWindow->actionEduMedia->setEnabled(isEduMedia(latestUrl));
 
         emit activeWebPageChanged((*mCurrentWebBrowser)->currentTabWebView());
@@ -452,14 +441,13 @@ void UBWebController::setupPalettes()
                     UBApplication::boardController->paletteManager()->mKeyboardPalette, SLOT(onDeactivated()));
 #endif
 
-        connect(mMainWindow->actionWebTrapFlash, SIGNAL(triggered()), this, SLOT(trapFlash()));
         connect(mMainWindow->actionWebCustomCapture, SIGNAL(triggered()), this, SLOT(customCapture()));
         connect(mMainWindow->actionWebWindowCapture, SIGNAL(triggered()), this, SLOT(captureWindow()));
-        connect(mMainWindow->actionWebOEmbed, SIGNAL(triggered()), this, SLOT(captureoEmbed()));
         connect(mMainWindow->actionEduMedia, SIGNAL(triggered()), this, SLOT(captureEduMedia()));
 
         connect(mMainWindow->actionWebShowHideOnDisplay, SIGNAL(toggled(bool)), this, SLOT(toogleMirroring(bool)));
-        connect(mMainWindow->actionWebTrap, SIGNAL(toggled(bool)), this, SLOT(toggleWebTrap(bool)));
+       // connect(mMainWindow->actionWebTrap, SIGNAL(toggled(bool)), this, SLOT(toggleWebTrap(bool)));
+        connect(mMainWindow->actionWebTrapContent, SIGNAL(triggered()), this, SLOT(webTrapContent()));
 
         (*mToolsCurrentPalette)->hide();
         (*mToolsCurrentPalette)->adjustSizeAndPosition();
@@ -486,6 +474,12 @@ void UBWebController::toggleWebTrap(bool checked)
     }
 }
 
+void UBWebController::webTrapContent()
+{
+    mTrapContentController->showTrapContent();
+    activePageChanged();
+}
+
 void UBWebController::toggleWebToolsPalette(bool checked)
 {
     (*mToolsCurrentPalette)->setVisible(checked);
@@ -576,6 +570,20 @@ void UBWebController::showTabAtTop(bool attop)
         (*mCurrentWebBrowser)->showTabAtTop(attop);
 }
 
+void UBWebController::captureoEmbed(QUrl currentUrl)
+{
+    if (isOEmbedable(currentUrl))
+    {
+        UBGraphicsW3CWidgetItem * widget = UBApplication::boardController->activeScene()->addOEmbed(currentUrl);
+
+        if(widget)
+        {
+            UBApplication::applicationController->showBoard();
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+        }
+    }
+}
+
 void UBWebController::captureoEmbed()
 {
     if ( mCurrentWebBrowser  && (*mCurrentWebBrowser) && (*mCurrentWebBrowser)->currentTabWebView()){
@@ -718,7 +726,12 @@ bool UBWebController::isOEmbedable(const QUrl& pUrl)
     foreach(QString provider, mOEmbedProviders)
     {
         if(urlAsString.contains(provider))
-            return true;
+        {
+            if ("youtube.com" == provider)
+                return (urlAsString.contains("/embed/") || urlAsString.contains("watch?v="));
+            else
+                return true;
+        }
     }
 
     return false;
@@ -768,6 +781,11 @@ QWebView* UBWebController::createNewTab()
     return (*mCurrentWebBrowser)->createNewTab();
 }
 
+QUrl UBWebController::currentPageUrl() const
+{
+    return (*mCurrentWebBrowser)->currentTabWebView()->url();
+}
+
 
 void UBWebController::copy()
 {
@@ -793,6 +811,15 @@ void UBWebController::paste()
 }
 
 
+void UBWebController::onActionBookmark()
+{
+    QString title = (*mCurrentWebBrowser)->currentTabWebView()->page()->mainFrame()->title();
+    QString url = (*mCurrentWebBrowser)->currentTabWebView()->page()->mainFrame()->url().toString();
+    if(title.isEmpty())
+        title = url;
+    UBApplication::boardController->paletteManager()->featuresWidget()->createBookmark(title, url);
+}
+
 void UBWebController::cut()
 {
     if (mCurrentWebBrowser && (*mCurrentWebBrowser) && (*mCurrentWebBrowser)->currentTabWebView())
diff --git a/Sankore-3.1/src/web/UBWebController.h b/Sankore-3.1/src/web/UBWebController.h
index c2eae74..608bd1f 100644
--- a/Sankore-3.1/src/web/UBWebController.h
+++ b/Sankore-3.1/src/web/UBWebController.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWEBCONTROLLER_H_
 #define UBWEBCONTROLLER_H_
 
@@ -30,7 +31,7 @@
 
 class WBBrowserWindow;
 class UBApplication;
-class UBTrapFlashController;
+class UBTrapWebPageContentController;
 class UBMainWindow;
 class UBWebToolsPalette;
 class WBWebView;
@@ -64,9 +65,9 @@ class UBWebController : public QObject
 
         void show(WebInstance type = UBWebController::WebBrowser);
 
-        WBBrowserWindow* GetCurrentWebBrowser() 
-        { 
-            if( mCurrentWebBrowser != NULL ) return *mCurrentWebBrowser; 
+        WBBrowserWindow* GetCurrentWebBrowser()
+        {
+            if( mCurrentWebBrowser != NULL ) return *mCurrentWebBrowser;
             else return NULL;
         };
 
@@ -90,6 +91,7 @@ class UBWebController : public QObject
             return mBrowserWidget;
         }
 
+        void captureoEmbed(QUrl currentUrl);
         void captureoEmbed();
         void captureEduMedia();
 
@@ -119,11 +121,9 @@ class UBWebController : public QObject
         WBBrowserWindow** mCurrentWebBrowser;
 
         QWidget* mBrowserWidget;
-        UBTrapFlashController* mTrapFlashController;
+        UBTrapWebPageContentController* mTrapContentController;
         UBWebToolsPalette** mToolsCurrentPalette;
         UBWebToolsPalette* mToolsPaletteList[TotalNumberOfWebInstances];
-// 		UBKeyboardPalette** mKeyboardCurrentPalette;
-// 		UBKeyboardPalette* mKeyboardPaletteList[TotalNumberOfWebInstances];
 
         bool mToolsPalettePositionned;
         bool mToolsPalettePositionnedList[TotalNumberOfWebInstances];
@@ -138,12 +138,14 @@ class UBWebController : public QObject
     private slots:
 
         void activePageChanged();
-        void trapFlash();
 
         void toggleWebTrap(bool checked);
 
+        void webTrapContent();
+
         void onOEmbedParsed(QVector<sOEmbedContent> contents);
-//		void showKeyboard(bool checked);
+
+        void onActionBookmark();
 
     signals:
         /**
diff --git a/Sankore-3.1/src/web/UBWebKitUtils.cpp b/Sankore-3.1/src/web/UBWebKitUtils.cpp
index 85ee2ef..740b29e 100644
--- a/Sankore-3.1/src/web/UBWebKitUtils.cpp
+++ b/Sankore-3.1/src/web/UBWebKitUtils.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,9 +20,12 @@
  */
 
 
-#include "UBWebKitUtils.h"
 
+#include "UBWebKitUtils.h"
+#include "frameworks/UBFileSystemUtils.h"
 #include "core/memcheck.h"
+#include "core/UBApplication.h"
+#include "web/UBWebController.h"
 
 UBWebKitUtils::UBWebKitUtils()
 {
@@ -34,60 +37,218 @@ UBWebKitUtils::~UBWebKitUtils()
     // NOOP
 }
 
-QList<UBWebKitUtils::HtmlObject> UBWebKitUtils::objectsInFrame(QWebFrame* frame)
+QList<UBWebKitUtils::HtmlObject> UBWebKitUtils::objectsInFrameByTag(QWebFrame* frame, QString tagName)
 {
     QList<UBWebKitUtils::HtmlObject> htmlObjects;
 
     if (frame)
     {
-        QVariant res = frame->evaluateJavaScript("window.document.getElementsByTagName('embed').length");
+        QWebElementCollection elements = frame->documentElement().findAll(tagName);
+        for (int i = 0; i < elements.count(); i++)
+        {
+            QWebElement element = elements.at(i);
+            QUrl baseUrl = frame->url();
+
+            QString mimeType("");
+            QString name("");
+            bool ok;
+
+            int width = element.attribute("width").toInt(&ok);
+            if (width == 0 || !ok)
+                width = element.geometry().width() ? element.geometry().width() : 640;
+
+            int heigth = element.attribute("height").toInt(&ok);
+            if (heigth == 0 || !ok)
+                heigth = element.geometry().height()? element.geometry().height(): 480;
+
+            if(tagName == "embed" || tagName == "object" || tagName.contains("frame")){
+                QStringList urlsToCheck = getUrls(baseUrl,element);
+                foreach(QString url, urlsToCheck){
+                    QString name = widgetNameFromUrl(url);
+                    QString mimeType = UBFileSystemUtils::mimeTypeFromFileName(url);
+                    if(!name.isEmpty() && !mimeType.isEmpty()){
+                        UBWebKitUtils::HtmlObject obj(url, name, mimeType, tagName, width, heigth);
+                        if (!htmlObjects.contains(obj))
+                            htmlObjects << obj;
+                    }
+                }
+            }
 
-        bool ok;
 
-        int count = res.toInt(&ok);
-        if (ok)
-        {
-            for (int i = 0; i < count; i++)
+            QUrl relativeUrl = QUrl(element.attribute("src"));
+
+            // for object
+            if(relativeUrl.toString().isEmpty())
+                relativeUrl =  QUrl(element.attribute("href"));
+
+            // for object
+            if(relativeUrl.toString().isEmpty())
+                relativeUrl =  QUrl(element.attribute("data"));
+            QString source = baseUrl.resolved(relativeUrl).toString();
+
+            if (source.trimmed().length() == 0)
+                continue;
+
+            mimeType = element.attribute("type");
+            if(mimeType.isEmpty()){
+                QString tmp = source;
+                tmp = (tmp.indexOf("?") != -1) ? tmp.left(tmp.indexOf("?")) : tmp;
+                mimeType = UBFileSystemUtils::mimeTypeFromFileName(tmp);
+            }
+            if(mimeType.isEmpty()){
+                 if(element.attribute("rel") != "shortlink")
+                     mimeType = "html";
+                 else
+                    continue;
+            }
+
+            
+            if (UBApplication::webController->isOEmbedable(QUrl(source)))
+                name = element.attribute("title");
+            else
             {
-                QString queryWidth = QString("window.document.getElementsByTagName('embed')[%1].width").arg(i);
+                if(name.isEmpty())
+                    name = widgetNameFromUrl(source);
+                if(name.isEmpty())
+                    name = element.toPlainText();
+            }
 
-                QString queryHeigth = QString("window.document.getElementsByTagName('embed')[%1].height").arg(i);
+            if(name.isEmpty())
+               continue;
+            
+            UBWebKitUtils::HtmlObject obj(source, name, mimeType, tagName, width, heigth);
+            if (!htmlObjects.contains(obj))
+            {
+                // filtering wanted content
+                if (obj.objectMimeType.contains("html")
+                    ||obj.objectMimeType.contains("audio")
+                    || obj.objectMimeType.contains("video")
+                    || obj.objectMimeType.contains("flash"))
+                        htmlObjects << obj;
+            }
+        }
+        if(htmlObjects.count() != 0)
+            htmlObjects << UBWebKitUtils::HtmlObject(QString(),QString(),QString(),"separator",0,0);
+    }
 
-                QString querySource = QString("window.document.getElementsByTagName('embed')[%1].src").arg(i);
+    return htmlObjects;
+}
 
-                res = frame->evaluateJavaScript(queryWidth);
 
-                int width = res.toInt(&ok);
-                if (width == 0 || !ok)
-                {
-                    qDebug() << "Width is not defined in pixel. 640 will be used";
-                    width = 640;
-                }
+QString  UBWebKitUtils::widgetNameFromUrl(QString pObjectUrl)
+{
+    QString url = pObjectUrl;
+    int parametersIndex = url.indexOf("?");
+    if(parametersIndex != -1)
+        url = url.left(parametersIndex);
+    int lastSlashIndex = url.lastIndexOf("/");
 
-                res = frame->evaluateJavaScript(queryHeigth);
+    QString result = url.right(url.length() - lastSlashIndex);
+    result = UBFileSystemUtils::cleanName(result);
 
-                int heigth = res.toInt(&ok);
-                if (heigth == 0 || !ok)
-                {
-                    qDebug() << "Height is not defined in pixel. 480 will be used";
-                    heigth = 480;
-                }
-                res = frame->evaluateJavaScript(querySource);
+    return result;
+}
 
-                QUrl baseUrl = frame->url();
-                QUrl relativeUrl = QUrl(res.toString());
+QStringList UBWebKitUtils::getArgumentsValues(QString& string)
+{
+    QStringList result;
+    QStringList arguments = string.split("?");
+    foreach(QString eachValue, arguments){
+        QStringList keyValueString = eachValue.split("=");
+        if(keyValueString.count() == 2)
+            result << keyValueString.at(1);
+    }
 
-                QString source = baseUrl.resolved(relativeUrl).toString();
+    return result;
+}
 
-                if (source.trimmed().length() == 0)
-                    continue;
+QStringList UBWebKitUtils::validUrl(QUrl& baseUrl,QStringList& list)
+{
+    QStringList result;
+    foreach(QString eachString, list){
+        QUrl url(eachString);
+        if(url.isValid() && !url.isRelative())
+            result << eachString;
+        if(baseUrl.resolved(url).isValid())
+            result << baseUrl.resolved(url).toString();
+    }
+    return result;
+}
 
-                htmlObjects << UBWebKitUtils::HtmlObject(source, width, heigth);
-            }
-        }
+QStringList UBWebKitUtils::getUrls(QUrl& baseUrl,QWebElement& element)
+{
+    QStringList result;
+    QString src = element.attribute("src");
+    if(!src.isEmpty()){
+        QStringList values = getArgumentsValues(src);
+        result << validUrl(baseUrl,values);
     }
+    QString href = element.attribute("href");
+    if(!href.isEmpty()){
+        QStringList values = getArgumentsValues(href);
+        result << validUrl(baseUrl,values);
+    }
+    return result;
+}
 
-    return htmlObjects;
+UBWebKitUtils::HtmlObject::HtmlObject()
+: width(0)
+, height(0)
+{
+    // NOOP
+}
+
+UBWebKitUtils::HtmlObject::HtmlObject(const QString &pSource, const QString &pObjectName, const QString &pObjectMimeType, const QString &pTagName, int pWidth, int pHeight)
+: source(pSource)
+, tagName(pTagName)
+, objectName(pObjectName)
+, objectMimeType(pObjectMimeType)
+, width(pWidth)
+, height(pHeight)
+{
+    // NOOP
 }
 
 
+#include <QDomDocument>
+UBWebKitUtils::HtmlObject::HtmlObject(const QString &pSource, const QString &metaDataString)
+    : width(640)
+    , height(480)
+{
+    QDomDocument embedAnswerDomDoc;
+    embedAnswerDomDoc.setContent(metaDataString);
+
+    QDomElement e = embedAnswerDomDoc.firstChild().nextSibling().firstChildElement();
+    while(!e.isNull()) 
+    {     
+        if ( "html" == e.tagName().toLower())
+            embedCode = e.text();
+
+        if ( "title" == e.tagName().toLower())
+            objectName = e.text();
+
+        if ( "width" == e.tagName().toLower())
+            width = e.text().toInt();
+
+        if ( "height" == e.tagName().toLower())
+            height = e.text().toInt();
+
+        if ("type" == e.tagName().toLower())
+            objectMimeType = e.text();
+ 
+        e = e.nextSiblingElement();
+    }
+
+    source = pSource;
+}
+
+bool UBWebKitUtils::HtmlObject::operator == (const HtmlObject &obj)
+{
+    return source == obj.source
+        && width == obj.width
+        && height == obj.height
+        && tagName == obj.tagName
+        && objectName == obj.objectName
+        && objectMimeType == obj.objectMimeType
+        && embedCode == obj.embedCode;
+}
diff --git a/Sankore-3.1/src/web/UBWebKitUtils.h b/Sankore-3.1/src/web/UBWebKitUtils.h
index 21721ce..c0fa340 100644
--- a/Sankore-3.1/src/web/UBWebKitUtils.h
+++ b/Sankore-3.1/src/web/UBWebKitUtils.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWEBKITUTILS_H_
 #define UBWEBKITUTILS_H_
 
@@ -35,21 +36,27 @@ class UBWebKitUtils
         {
 
             public:
-                HtmlObject(const QString& pSource, int pWidth, int pHeight)
-                    : source(pSource)
-                    , width(pWidth)
-                    , height(pHeight)
-                {
-                    // NOOP
-                }
+                HtmlObject();
+                HtmlObject(const QString &pSource, const QString &pObjectName, const QString &pObjectMimeType, const QString &pTagName, int pWidth, int pHeight);
+                HtmlObject(const QString &pSource, const QString &metaDataString);
 
                 QString source;
+                QString tagName;
+                QString objectName;
+                QString objectMimeType;
+                QString embedCode;
                 int width;
                 int height;
 
-        };
 
-        static QList<UBWebKitUtils::HtmlObject> objectsInFrame(QWebFrame* frame);
+                bool operator == (const HtmlObject &obj);
+
+        };
+        static QString widgetNameFromUrl(QString pObjectUrl);
+        static QList<UBWebKitUtils::HtmlObject> objectsInFrameByTag(QWebFrame* frame, QString tagName);
+        static QStringList validUrl(QUrl& baseUrl,QStringList& list);
+        static QStringList getUrls(QUrl& baseUrl,QWebElement& element);
+        static QStringList getArgumentsValues(QString& string);
 
 };
 
diff --git a/Sankore-3.1/src/web/UBWebPage.cpp b/Sankore-3.1/src/web/UBWebPage.cpp
index 8308b83..6597317 100644
--- a/Sankore-3.1/src/web/UBWebPage.cpp
+++ b/Sankore-3.1/src/web/UBWebPage.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "UBWebPage.h"
 
 #include <QtCore>
diff --git a/Sankore-3.1/src/web/UBWebPage.h b/Sankore-3.1/src/web/UBWebPage.h
index 0a1e325..e470039 100644
--- a/Sankore-3.1/src/web/UBWebPage.h
+++ b/Sankore-3.1/src/web/UBWebPage.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWEBPAGE_H_
 #define UBWEBPAGE_H_
 
diff --git a/Sankore-3.1/src/web/UBWebPluginWidget.cpp b/Sankore-3.1/src/web/UBWebPluginWidget.cpp
index 8aa1d60..7128b46 100644
--- a/Sankore-3.1/src/web/UBWebPluginWidget.cpp
+++ b/Sankore-3.1/src/web/UBWebPluginWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include <QtGui>
 
 #include "pdf/UBWebPluginPDFWidget.h"
diff --git a/Sankore-3.1/src/web/UBWebPluginWidget.h b/Sankore-3.1/src/web/UBWebPluginWidget.h
index 1d5ca36..333783b 100644
--- a/Sankore-3.1/src/web/UBWebPluginWidget.h
+++ b/Sankore-3.1/src/web/UBWebPluginWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef UBWEBPLUGINWIDGET_H
 #define UBWEBPLUGINWIDGET_H
 
diff --git a/Sankore-3.1/src/web/browser/WBBrowserWindow.cpp b/Sankore-3.1/src/web/browser/WBBrowserWindow.cpp
index c06d517..d3bfdd3 100644
--- a/Sankore-3.1/src/web/browser/WBBrowserWindow.cpp
+++ b/Sankore-3.1/src/web/browser/WBBrowserWindow.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBBrowserWindow.h b/Sankore-3.1/src/web/browser/WBBrowserWindow.h
index 1e78445..746dad5 100644
--- a/Sankore-3.1/src/web/browser/WBBrowserWindow.h
+++ b/Sankore-3.1/src/web/browser/WBBrowserWindow.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBChaseWidget.cpp b/Sankore-3.1/src/web/browser/WBChaseWidget.cpp
index eb5a017..7d7c841 100644
--- a/Sankore-3.1/src/web/browser/WBChaseWidget.cpp
+++ b/Sankore-3.1/src/web/browser/WBChaseWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBChaseWidget.h b/Sankore-3.1/src/web/browser/WBChaseWidget.h
index 3922fc3..7252fe8 100644
--- a/Sankore-3.1/src/web/browser/WBChaseWidget.h
+++ b/Sankore-3.1/src/web/browser/WBChaseWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBDownloadManager.cpp b/Sankore-3.1/src/web/browser/WBDownloadManager.cpp
index 0579f06..6692cc4 100644
--- a/Sankore-3.1/src/web/browser/WBDownloadManager.cpp
+++ b/Sankore-3.1/src/web/browser/WBDownloadManager.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBDownloadManager.h b/Sankore-3.1/src/web/browser/WBDownloadManager.h
index b6da6d3..16fdb96 100644
--- a/Sankore-3.1/src/web/browser/WBDownloadManager.h
+++ b/Sankore-3.1/src/web/browser/WBDownloadManager.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBEditTableView.cpp b/Sankore-3.1/src/web/browser/WBEditTableView.cpp
index 699e481..88bede0 100644
--- a/Sankore-3.1/src/web/browser/WBEditTableView.cpp
+++ b/Sankore-3.1/src/web/browser/WBEditTableView.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBEditTableView.h b/Sankore-3.1/src/web/browser/WBEditTableView.h
index efcd6d9..691d44c 100644
--- a/Sankore-3.1/src/web/browser/WBEditTableView.h
+++ b/Sankore-3.1/src/web/browser/WBEditTableView.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBHistory.cpp b/Sankore-3.1/src/web/browser/WBHistory.cpp
index bb7ecd0..7cd455f 100644
--- a/Sankore-3.1/src/web/browser/WBHistory.cpp
+++ b/Sankore-3.1/src/web/browser/WBHistory.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBHistory.h b/Sankore-3.1/src/web/browser/WBHistory.h
index 96abf51..e8a6afd 100644
--- a/Sankore-3.1/src/web/browser/WBHistory.h
+++ b/Sankore-3.1/src/web/browser/WBHistory.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBModelMenu.cpp b/Sankore-3.1/src/web/browser/WBModelMenu.cpp
index a51cfb1..4561baa 100644
--- a/Sankore-3.1/src/web/browser/WBModelMenu.cpp
+++ b/Sankore-3.1/src/web/browser/WBModelMenu.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBModelMenu.h b/Sankore-3.1/src/web/browser/WBModelMenu.h
index d58854c..71a58bf 100644
--- a/Sankore-3.1/src/web/browser/WBModelMenu.h
+++ b/Sankore-3.1/src/web/browser/WBModelMenu.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBSearchLineEdit.cpp b/Sankore-3.1/src/web/browser/WBSearchLineEdit.cpp
index 3127ad3..a74d12d 100644
--- a/Sankore-3.1/src/web/browser/WBSearchLineEdit.cpp
+++ b/Sankore-3.1/src/web/browser/WBSearchLineEdit.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBSearchLineEdit.h b/Sankore-3.1/src/web/browser/WBSearchLineEdit.h
index c1c8df8..af16050 100644
--- a/Sankore-3.1/src/web/browser/WBSearchLineEdit.h
+++ b/Sankore-3.1/src/web/browser/WBSearchLineEdit.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBSqueezeLabel.cpp b/Sankore-3.1/src/web/browser/WBSqueezeLabel.cpp
index d677741..e1de11d 100644
--- a/Sankore-3.1/src/web/browser/WBSqueezeLabel.cpp
+++ b/Sankore-3.1/src/web/browser/WBSqueezeLabel.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBSqueezeLabel.h b/Sankore-3.1/src/web/browser/WBSqueezeLabel.h
index 99b1c9b..f1ac530 100644
--- a/Sankore-3.1/src/web/browser/WBSqueezeLabel.h
+++ b/Sankore-3.1/src/web/browser/WBSqueezeLabel.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBTabWidget.cpp b/Sankore-3.1/src/web/browser/WBTabWidget.cpp
index ecadffa..eafd0b1 100644
--- a/Sankore-3.1/src/web/browser/WBTabWidget.cpp
+++ b/Sankore-3.1/src/web/browser/WBTabWidget.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -259,6 +260,26 @@ WBTabWidget::WBTabWidget(QWidget *parent)
     mLineEdits->setMinimumWidth(200);
     QSizePolicy spolicy = mLineEdits->sizePolicy();
     mLineEdits->setSizePolicy(QSizePolicy::Maximum, spolicy.verticalPolicy());
+
+    QPushButton *plusButton = new QPushButton(this);
+    plusButton->setObjectName("addTabButton");
+    plusButton->setIcon(mAddTabIcon);
+    plusButton->setStyleSheet(" QPushButton{ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #d3d3d3, stop: 1  #c4c4c4); \
+    border: 1px solid #888888; \
+    border-bottom: none; \
+    border-top-left-radius: 3px; \
+    border-top-right-radius: 3px; \
+    min-width: 15px; \
+    max-width: 15px; \
+    margin: 2px; \
+    margin-top: 6px; \
+    margin-bottom: 0px; \
+    padding: 4px; \
+    height: 14px;}");
+
+    setCornerWidget(plusButton, Qt::TopLeftCorner);
+
+    connect(plusButton, SIGNAL(released()), this, SLOT(newTab()));
 }
 
 void WBTabWidget::clear()
@@ -651,13 +672,7 @@ void WBTabWidget::contextMenuEvent(QContextMenuEvent *event)
 
 void WBTabWidget::mouseReleaseEvent(QMouseEvent *event)
 {
-    QRect addTabRect = addTabButtonRect();
-
-    if (addTabRect.contains(event->pos()))
-    {
-        newTab();
-    }
-    else if (event->button() == Qt::MidButton && !childAt(event->pos())
+    if (event->button() == Qt::MidButton && !childAt(event->pos())
             // Remove the line below when QTabWidget does not have a one pixel frame
             && event->pos().y() < (tabBar()->y() + tabBar()->height()))
     {
@@ -852,45 +867,4 @@ QRect WBTabWidget::addTabButtonRect()
     QRect r(x + 3, y + 6 , 25, lastTabRect.height() - 8);
 
     return r;
-}
-
-
-void WBTabWidget::paintEvent ( QPaintEvent * event )
-{
-    QPainter painter(this);
-
-    // all this is in synch with CSS QTabBar ...
-    QLinearGradient linearGrad(QPointF(0, 0), QPointF(0, 1));
-    linearGrad.setColorAt(0, QColor("#d3d3d3"));
-    linearGrad.setColorAt(1, QColor("#dddddd"));
-    painter.setBrush(linearGrad);
-
-    QRect r = addTabButtonRect();
-
-    painter.setPen(QColor("#888888"));
-    painter.drawRoundedRect(r, 3, 3);
-
-    painter.setPen(Qt::NoPen);
-    painter.drawRect(QRect(r.x(), r.y() + r.height() / 2, r.width() + 1, r.height() / 2 + 1));
-
-    painter.setPen(QColor("#888888"));
-    painter.drawLine(r.x(), r.y() + r.height() / 2, r.x(), r.bottom());
-    painter.drawLine(r.right() + 1, r.y() + r.height() / 2, r.right() + 1, r.bottom());
-
-    if (tabPosition() == QTabWidget::South)
-    {
-        QPen pen = painter.pen();
-        pen.setColor(QColor("#b3b3b3"));
-        pen.setWidth(2);
-        painter.setPen(pen);
-        painter.drawLine(0, r.bottom() + 2, width(), r.bottom() + 2);
-    }
-
-    QPointF topLeft = r.center() - QPointF(mAddTabIcon.width() / 2, mAddTabIcon.height() / 2);
-    painter.drawPixmap(topLeft, mAddTabIcon);
-
-    painter.end();
-
-    QTabWidget::paintEvent(event);
-}
-
+}
\ No newline at end of file
diff --git a/Sankore-3.1/src/web/browser/WBTabWidget.h b/Sankore-3.1/src/web/browser/WBTabWidget.h
index 76bc2b6..5600d0d 100644
--- a/Sankore-3.1/src/web/browser/WBTabWidget.h
+++ b/Sankore-3.1/src/web/browser/WBTabWidget.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -65,6 +66,8 @@
 #define WBTABWIDGET_H
 
 #include <QtGui>
+#include <QtWebKit>
+
 /*
     Tab bar with a few more features such as a context menu and shortcuts
  */
@@ -103,9 +106,6 @@ class WBTabBar : public QTabBar
         QPoint mDragStartPos;
 };
 
-#include <QtWebKit>
-
-
 class WBWebView;
 /*!
     A proxy object that connects a single browser action
@@ -187,7 +187,6 @@ class WBTabWidget : public QTabWidget
         void mouseDoubleClickEvent(QMouseEvent *event);
         void contextMenuEvent(QContextMenuEvent *event);
         void mouseReleaseEvent(QMouseEvent *event);
-        void paintEvent(QPaintEvent * event);
         QRect addTabButtonRect();
 
     public slots:
diff --git a/Sankore-3.1/src/web/browser/WBToolBarSearch.cpp b/Sankore-3.1/src/web/browser/WBToolBarSearch.cpp
index 2aed045..d21f98c 100644
--- a/Sankore-3.1/src/web/browser/WBToolBarSearch.cpp
+++ b/Sankore-3.1/src/web/browser/WBToolBarSearch.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBToolBarSearch.h b/Sankore-3.1/src/web/browser/WBToolBarSearch.h
index 8d41c33..e639118 100644
--- a/Sankore-3.1/src/web/browser/WBToolBarSearch.h
+++ b/Sankore-3.1/src/web/browser/WBToolBarSearch.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBTrapWebPageContent.cpp b/Sankore-3.1/src/web/browser/WBTrapWebPageContent.cpp
new file mode 100644
index 0000000..2768066
--- /dev/null
+++ b/Sankore-3.1/src/web/browser/WBTrapWebPageContent.cpp
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "WBTrapWebPageContent.h"
+
+#include "core/UBApplication.h"
+#include "core/UBApplicationController.h"
+#include "gui/UBMainWindow.h"
+
+    WBTrapWebPageContentWindow::WBTrapWebPageContentWindow(QObject *controller, QWidget *parent)
+    : QDialog(parent)
+      , mController(controller)
+{
+    setModal(true);
+    resize(800, 600);
+    setObjectName("WBTrapWebPageContentWindow");
+    setStyleSheet("QWidget#WBTrapWebPageContentWindow{background-color: rgb(225,225,225)");
+
+    mTrapApplicationVLayout = new QVBoxLayout();
+    mTrapApplicationVLayout->setSpacing(0);
+    mTrapApplicationVLayout->setContentsMargins(1,1,1,1);
+    setLayout(mTrapApplicationVLayout);
+
+    mTrapApplicationHLayout = new QHBoxLayout(this);
+    mTrapApplicationHLayout->setContentsMargins(0,0,0,0);
+    mTrapApplicationHLayout->setSpacing(0);
+
+    QList<QLabel *> buttonLabels;
+
+    QToolButton *buttonWebTrapToLibrary = new QToolButton();
+    buttonWebTrapToLibrary->setDefaultAction(UBApplication::mainWindow->actionWebTrapToLibrary);
+    buttonLabels << new QLabel(tr("Download to\nlibrary"));
+    mTrapButtons << buttonWebTrapToLibrary;
+
+    QToolButton *buttonWebTrapToCurrentPage = new QToolButton();
+    buttonWebTrapToCurrentPage->setDefaultAction(UBApplication::mainWindow->actionWebTrapToCurrentPage);
+    buttonLabels << new QLabel(tr("Download to\ncurrent page"));
+    mTrapButtons << buttonWebTrapToCurrentPage;
+
+    QToolButton *buttonWebTrapLinkToLibrary = new QToolButton();
+    buttonWebTrapLinkToLibrary->setDefaultAction(UBApplication::mainWindow->actionWebTrapLinkToLibrary);
+    buttonLabels << new QLabel(tr("Add link to\nlibrary"));
+    mTrapButtons << buttonWebTrapLinkToLibrary;
+
+    QToolButton *buttonWebTrapLinkToPage = new QToolButton();
+    buttonWebTrapLinkToPage->setDefaultAction(UBApplication::mainWindow->actionWebTrapLinkToPage);
+    buttonLabels << new QLabel(tr("Add link to\ncurrent page"));
+    mTrapButtons << buttonWebTrapLinkToPage;
+
+    QString buttonStileSheet("QToolButton#WBWebTrapToolButton{background-color: rgb(127, 127, 127, 20%)}");
+
+    QWidget *buttonsLayoutWidget = new QWidget();
+    buttonsLayoutWidget->setObjectName("WBWebTrapButtonsLayoutWidget");
+    buttonsLayoutWidget->setStyleSheet("QWidget#WBWebTrapButtonsLayoutWidget{border: 2px solid #999999; border-top-style: none; border-right-style: none}");
+    QVBoxLayout *buttonsLayout = new QVBoxLayout();
+    buttonsLayoutWidget->setLayout(buttonsLayout);
+    buttonsLayout->setAlignment(Qt::AlignTop);
+    buttonsLayout->setContentsMargins(7,3,7,3);
+
+    int minimumHeight = 85;
+    int minimumWidth = 140;
+    for (int i = 0; i < 4; i++)
+    {
+        QToolButton *button = mTrapButtons.at(i);
+        button->setObjectName("WBWebTrapToolButton");
+        button->setToolButtonStyle(Qt::ToolButtonIconOnly);
+        button->setIconSize(QSize(minimumWidth, minimumHeight));
+        button->setMinimumSize(QSize(minimumWidth, minimumHeight));
+        button->setMaximumSize(QSize(minimumWidth, minimumHeight));
+        button->setStyleSheet(buttonStileSheet);
+        button->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+        button->defaultAction()->setEnabled(false);
+
+        QLabel *buttonLabel = buttonLabels.at(i);
+        buttonLabel->setMaximumWidth(minimumWidth);
+        buttonLabel->setTextFormat(Qt::PlainText);
+        buttonLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+        buttonLabel->setAlignment(Qt::AlignHCenter);
+
+        QVBoxLayout *currentButtonWithLabelWayout = new QVBoxLayout();
+        currentButtonWithLabelWayout->setAlignment(Qt::AlignVCenter);
+        currentButtonWithLabelWayout->setContentsMargins(1,0,1,0);
+        currentButtonWithLabelWayout->addWidget(button);
+
+        currentButtonWithLabelWayout->addWidget(buttonLabel);
+        currentButtonWithLabelWayout->setSpacing(0);
+        buttonsLayout->addLayout(currentButtonWithLabelWayout);
+    }
+
+    QWidget *trapContentLayoutWidget = new QWidget();
+    trapContentLayoutWidget->setObjectName("WBWebTrapPreviewWidget");
+    trapContentLayoutWidget->setStyleSheet("QWidget#WBWebTrapPreviewWidget{border: 2px solid #999999; border-left-style: none; border-top-style: none; border-right-style: none}");
+    QVBoxLayout *trapContentVLayout = new QVBoxLayout();
+    trapContentVLayout->setContentsMargins(1,3,7,7);
+    trapContentVLayout->setSpacing(1);
+    trapContentLayoutWidget->setLayout(trapContentVLayout);
+
+    trapContentLayoutWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+
+    mSelectContentLayout = new QHBoxLayout();
+    trapContentVLayout->addLayout(mSelectContentLayout);
+
+    mSelectContentLabel = new QLabel(tr("Select content to trap:"));
+    mSelectContentLayout->addWidget(mSelectContentLabel);
+
+    mSelectContentCombobox = new QComboBox(this);
+    mSelectContentLayout->addWidget(mSelectContentCombobox);
+
+    mSelectContentCombobox->setMaxVisibleItems(15);
+    mSelectContentCombobox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+
+    mTrapContentPreview = new WBWebView();
+    trapContentVLayout->addWidget(mTrapContentPreview);
+
+    mTrapContentPreview->setMinimumSize(QSize(320, 240));
+    mTrapContentPreview->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+
+    mApplicationNameLayout = new QHBoxLayout();
+    trapContentVLayout->addLayout(mApplicationNameLayout);
+
+    mApplicationNameLabel = new QLabel(tr("Application name"));
+    mApplicationNameLayout->addWidget(mApplicationNameLabel);
+
+    mApplicationNameEdit = new QLineEdit();
+    mApplicationNameLayout->addWidget(mApplicationNameEdit);
+
+    mTrapApplicationHLayout->addWidget(trapContentLayoutWidget);
+    mTrapApplicationHLayout->addWidget(buttonsLayoutWidget);
+
+    mTrapApplicationVLayout->addLayout(mTrapApplicationHLayout);
+    QLabel *infoLabel1 = new QLabel(tr("Restriction and disclaimer. "));
+    QLabel *infoLabel2 = new QLabel(tr("This feature is developed to work on the most common web pages."));
+    QLabel *infoLabel3 = new QLabel(tr("Please respect copyrights for creating links or trapping content from the web."));
+
+
+    infoLabel1->setAlignment(Qt::AlignHCenter);
+    infoLabel2->setAlignment(Qt::AlignHCenter);
+    infoLabel3->setAlignment(Qt::AlignHCenter);
+
+    mTrapApplicationVLayout->addWidget(infoLabel1);
+    mTrapApplicationVLayout->addWidget(infoLabel2);
+    mTrapApplicationVLayout->addWidget(infoLabel3);
+
+    connect(mTrapContentPreview, SIGNAL(pixmapCaptured(const QPixmap&, bool)), UBApplication::applicationController, SLOT(addCapturedPixmap(const QPixmap &, bool)));
+    connect(mTrapContentPreview, SIGNAL(embedCodeCaptured(const QString&)), UBApplication::applicationController, SLOT(addCapturedEmbedCode(const QString&)));
+
+    connect(mSelectContentCombobox, SIGNAL(currentIndexChanged(int)), mController, SLOT(selectHtmlObject(int)));
+    connect(mApplicationNameEdit, SIGNAL(textChanged(const QString &)), mController, SLOT(text_Changed(const QString &)));
+    connect(mApplicationNameEdit, SIGNAL(textEdited(const QString &)), mController, SLOT(text_Edited(const QString &)));
+
+    connect(UBApplication::mainWindow->actionWebTrapToCurrentPage, SIGNAL(triggered()), mController, SLOT(addItemToBoard()));
+    connect(UBApplication::mainWindow->actionWebTrapToLibrary, SIGNAL(triggered()), mController, SLOT(addItemToLibrary()));
+    connect(UBApplication::mainWindow->actionWebTrapLinkToPage, SIGNAL(triggered()), mController, SLOT(addLinkToBoard()));
+    connect(UBApplication::mainWindow->actionWebTrapLinkToLibrary, SIGNAL(triggered()), mController, SLOT(addLinkToLibrary()));
+}
+
+WBTrapWebPageContentWindow::~WBTrapWebPageContentWindow()
+{
+
+}
+
+void WBTrapWebPageContentWindow::setUrl(const QUrl &url)
+{
+    mTrapContentPreview->setUrl(url);
+}
+
+void WBTrapWebPageContentWindow::setReadyForTrap(bool bReady)
+{
+    foreach (QToolButton *button, mTrapButtons)
+    {
+        button->defaultAction()->setEnabled(bReady);
+    }
+}
+
diff --git a/Sankore-3.1/src/web/browser/WBTrapWebPageContent.h b/Sankore-3.1/src/web/browser/WBTrapWebPageContent.h
new file mode 100644
index 0000000..2caddd7
--- /dev/null
+++ b/Sankore-3.1/src/web/browser/WBTrapWebPageContent.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef WB_TRAP_WEB_PAGE_CONTENT_H
+#define WB_TRAP_WEB_PAGE_CONTENT_H
+
+#include <QtGui>
+#include <QWebView>
+
+#include "WBWebView.h"
+
+class WBTrapWebPageContentWindow : public QDialog
+{
+    Q_OBJECT
+
+    public:
+        WBTrapWebPageContentWindow(QObject *controller, QWidget *parent = NULL);
+        virtual ~WBTrapWebPageContentWindow();
+
+        void setUrl(const QUrl &url);
+        void setReadyForTrap(bool bReady);
+        QWebView *webView() const {return mTrapContentPreview;}
+        QComboBox *itemsComboBox() const {return mSelectContentCombobox;}
+        QLineEdit *applicationNameLineEdit() const {return mApplicationNameEdit;}
+
+    private:
+
+        QObject *mController;
+
+        QHBoxLayout *mTrapApplicationHLayout;
+        QVBoxLayout *mTrapApplicationVLayout;
+        QHBoxLayout *mSelectContentLayout;
+        QLabel *mSelectContentLabel;
+        QComboBox *mSelectContentCombobox;
+
+        WBWebView *mTrapContentPreview;
+        UBWebTrapMouseEventMask *mTrapingWidgetMask;
+
+        QHBoxLayout *mApplicationNameLayout;
+        QLabel *mApplicationNameLabel;
+        QLineEdit *mApplicationNameEdit;
+        QToolButton *mShowDisclaimerToolButton;
+        QList<QToolButton *> mTrapButtons;
+        QWebHitTestResult mLastHitTestResult;
+
+};
+
+#endif //WB_TRAP_WEB_PAGE_CONTENT_H
diff --git a/Sankore-3.1/src/web/browser/WBUrlLineEdit.cpp b/Sankore-3.1/src/web/browser/WBUrlLineEdit.cpp
index aa143f8..00e38c0 100644
--- a/Sankore-3.1/src/web/browser/WBUrlLineEdit.cpp
+++ b/Sankore-3.1/src/web/browser/WBUrlLineEdit.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBUrlLineEdit.h b/Sankore-3.1/src/web/browser/WBUrlLineEdit.h
index d9519b3..a98dfa9 100644
--- a/Sankore-3.1/src/web/browser/WBUrlLineEdit.h
+++ b/Sankore-3.1/src/web/browser/WBUrlLineEdit.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBWebTrapWebView.cpp b/Sankore-3.1/src/web/browser/WBWebTrapWebView.cpp
index 3911585..471c968 100644
--- a/Sankore-3.1/src/web/browser/WBWebTrapWebView.cpp
+++ b/Sankore-3.1/src/web/browser/WBWebTrapWebView.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #include "WBWebTrapWebView.h"
 
 #include <QtGui>
@@ -37,7 +38,8 @@ WBWebTrapWebView::WBWebTrapWebView(QWidget* parent)
     : QWebView(parent)
     , mCurrentContentType(Unknown)
     , mIsTrapping(false)
-    , mTrapingWidget(0)
+    , m_bContentForTrapSelected(false)
+    , m_bScrollingInProcess(false)
 {
     connect(this, SIGNAL(loadFinished ( bool)), this, SLOT(viewLoadFinished(bool)));
 }
@@ -45,7 +47,6 @@ WBWebTrapWebView::WBWebTrapWebView(QWidget* parent)
 
 WBWebTrapWebView::~WBWebTrapWebView()
 {
-    delete mTrapingWidget;
 }
 
 
@@ -55,43 +56,15 @@ void WBWebTrapWebView::setIsTrapping(bool pIsTrapping)
 
     mDomElementRect = QRect();
     mCurrentContentType = Unknown;
-/*
-#if defined(Q_WS_WIN)
-
-    if(mIsTrapping)
-    {
-        if (!mTrapingWidget)
-        {
-            mTrapingWidget = new UBWebTrapMouseEventMask(this);
-            mTrapingWidget->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
-            mTrapingWidget->setAttribute(Qt::WA_TranslucentBackground, true);
-        }
-
-        QPoint topLeft = mapToGlobal (geometry().topLeft());
-        QRect geom(topLeft.x(), topLeft.y(), geometry().width(), geometry().height());
-
-        mTrapingWidget->setGeometry(geom);
-        mTrapingWidget->setVisible(true);
-
-    }
-    else if (mTrapingWidget)
-    {
-         mTrapingWidget->setVisible(false);
-    }
-
-#endif
-*/
 
     update();
 }
 
 void WBWebTrapWebView::hideEvent ( QHideEvent * event )
 {
-    setIsTrapping(false);
     QWebView::hideEvent(event);
 }
 
-
 void WBWebTrapWebView::highliteElementAtPos ( const QPoint& pos)
 {
     mCurrentContentType = Unknown;
@@ -251,6 +224,11 @@ QString WBWebTrapWebView::potentialEmbedCodeAtPos(const QPoint& pos)
 }
 
 
+void WBWebTrapWebView::trapContentFromHitTest(const QWebHitTestResult& hitTest)
+{
+    trapElementAtPos(hitTest.pos());
+}
+
 void WBWebTrapWebView::trapElementAtPos(const QPoint& pos)
 {
     QWebHitTestResult htr = page()->currentFrame()->hitTestContent(pos);
@@ -307,27 +285,37 @@ void WBWebTrapWebView::trapElementAtPos(const QPoint& pos)
     }
 }
 
+bool WBWebTrapWebView::isFrameContentAtPos(const QPoint &pos) const
+{
+    return !page()->mainFrame()->scrollBarGeometry(Qt::Vertical).contains(pos)
+        && !page()->mainFrame()->scrollBarGeometry(Qt::Horizontal).contains(pos);
+}
 
 void WBWebTrapWebView::mouseMoveEvent ( QMouseEvent * event )
 {
-    if (mIsTrapping)
+    if (mIsTrapping && !m_bScrollingInProcess)
     {
-        highliteElementAtPos(event->pos());
+        // NOOP - avoid event routing to web kit (accept is not enough)
     }
     else
     {
+
         QWebView::mouseMoveEvent(event);
     }
 }
 
 void WBWebTrapWebView::mousePressEvent(QMouseEvent* event)
 {
-    if (mIsTrapping)
+    
+    if (mIsTrapping && isFrameContentAtPos(event->pos()))
     {
-        // NOOP - avoid event routing to web kit (accept is not enough)
+         highliteElementAtPos(event->pos());    
     }
     else
     {
+        if (mIsTrapping)
+            m_bScrollingInProcess = true; 
+
         QWebView::mousePressEvent(event);
     }
 }
@@ -339,12 +327,15 @@ void WBWebTrapWebView::mouseReleaseEvent ( QMouseEvent * event )
 
     //qDebug() << "mouse release" << event->pos();
 
-    if (mIsTrapping)
+    if (!m_bScrollingInProcess && mIsTrapping && isFrameContentAtPos(event->pos()))
     {
-        trapElementAtPos(event->pos());
+       m_bContentForTrapSelected = true;
+       // trapElementAtPos(event->pos());
     }
     else
     {
+        m_bScrollingInProcess = false;
+
         QWebView::mouseReleaseEvent(event);
     }
 
@@ -438,7 +429,6 @@ void WBWebTrapWebView::paintEvent ( QPaintEvent * event )
 
 }
 
-
 void WBWebTrapWebView::viewLoadFinished ( bool ok )
 {
     Q_UNUSED(ok);
@@ -448,9 +438,19 @@ void WBWebTrapWebView::viewLoadFinished ( bool ok )
 
 
 UBWebTrapMouseEventMask::UBWebTrapMouseEventMask(WBWebTrapWebView* pWebView)
-    : mTrappedWebView(pWebView)
+    : QWidget(pWebView)
+    , mTrappedWebView(pWebView)
+    , mTrapController(NULL)
 {
-    setMouseTracking(true);
+
+}
+
+UBWebTrapMouseEventMask::UBWebTrapMouseEventMask(WBWebTrapWebView* pWebView, UBTrapWebPageContentController *controller)
+    : QWidget(pWebView)
+    , mTrappedWebView(pWebView)
+    , mTrapController(controller)
+{
+
 }
 
 UBWebTrapMouseEventMask::~UBWebTrapMouseEventMask()
@@ -462,7 +462,8 @@ void UBWebTrapMouseEventMask::mousePressEvent(QMouseEvent* event)
 {
     if (mTrappedWebView && mTrappedWebView->isTrapping())
     {
-        // NOOP
+        mTrappedWebView->highliteElementAtPos(event->pos());
+        mTrappedWebView->trapElementAtPos(event->pos());
     }
     else
     {
@@ -473,11 +474,7 @@ void UBWebTrapMouseEventMask::mousePressEvent(QMouseEvent* event)
 
 void UBWebTrapMouseEventMask::mouseMoveEvent ( QMouseEvent * event )
 {
-    if (mTrappedWebView && mTrappedWebView->isTrapping())
-    {
-        mTrappedWebView->highliteElementAtPos(event->pos());
-    }
-    else
+    if (!mTrappedWebView && !mTrappedWebView->isTrapping())
     {
         QWidget::mouseMoveEvent(event);
     }
@@ -486,11 +483,11 @@ void UBWebTrapMouseEventMask::mouseMoveEvent ( QMouseEvent * event )
 
 void UBWebTrapMouseEventMask::mouseReleaseEvent ( QMouseEvent * event )
 {
-    if (mTrappedWebView && mTrappedWebView->isTrapping())
-    {
-        mTrappedWebView->trapElementAtPos(event->pos());
-    }
-    else
+    //if (mTrappedWebView && mTrappedWebView->isTrapping())
+    //{
+        //mTrappedWebView->trapElementAtPos(event->pos());
+    //}
+    //else
     {
         QWidget::mouseReleaseEvent(event);
     }
diff --git a/Sankore-3.1/src/web/browser/WBWebTrapWebView.h b/Sankore-3.1/src/web/browser/WBWebTrapWebView.h
index bdeedc9..7047afa 100644
--- a/Sankore-3.1/src/web/browser/WBWebTrapWebView.h
+++ b/Sankore-3.1/src/web/browser/WBWebTrapWebView.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 #ifndef WBWEBTRAPWEBVIEW_H_
 #define WBWEBTRAPWEBVIEW_H_
 
@@ -29,7 +30,7 @@
 
 class WBWebTrapWebView : public QWebView
 {
-    Q_OBJECT;
+    Q_OBJECT
 
     public:
         WBWebTrapWebView(QWidget* parent = 0);
@@ -43,6 +44,7 @@ class WBWebTrapWebView : public QWebView
         }
 
         void highliteElementAtPos(const QPoint& pos);
+        void trapContentFromHitTest(const QWebHitTestResult& hitTest);
         void trapElementAtPos(const QPoint& pos);
 
     signals:
@@ -53,8 +55,10 @@ class WBWebTrapWebView : public QWebView
 
         void webElementCaptured(const QUrl& pUrl, const QString& query);
 
-    protected:
+    private:
+        bool isFrameContentAtPos(const QPoint &point) const;
 
+    protected:
         virtual void mousePressEvent(QMouseEvent* event);
         virtual void mouseMoveEvent ( QMouseEvent * event );
         virtual void mouseReleaseEvent ( QMouseEvent * event );
@@ -76,19 +80,18 @@ class WBWebTrapWebView : public QWebView
         WebContentType mCurrentContentType;
 
         bool mIsTrapping;
-
-        QWidget* mTrapingWidget;
+        bool m_bContentForTrapSelected;
+        bool m_bScrollingInProcess;
 
     private slots:
-
         void viewLoadFinished(bool ok);
 };
-
-
+class UBTrapWebPageContentController;
 class UBWebTrapMouseEventMask : public QWidget
 {
     public:
         UBWebTrapMouseEventMask(WBWebTrapWebView* pWebView);
+        UBWebTrapMouseEventMask(WBWebTrapWebView* pWebView, UBTrapWebPageContentController *controller);
         virtual ~UBWebTrapMouseEventMask();
 
     protected:
@@ -100,6 +103,7 @@ class UBWebTrapMouseEventMask : public QWidget
 
    private:
        WBWebTrapWebView *mTrappedWebView;
+       UBTrapWebPageContentController *mTrapController;
 };
 
 #endif /* WBWEBTRAPWEBVIEW_H_ */
diff --git a/Sankore-3.1/src/web/browser/WBWebView.cpp b/Sankore-3.1/src/web/browser/WBWebView.cpp
index d37483f..e943e5f 100644
--- a/Sankore-3.1/src/web/browser/WBWebView.cpp
+++ b/Sankore-3.1/src/web/browser/WBWebView.cpp
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBWebView.h b/Sankore-3.1/src/web/browser/WBWebView.h
index 3a583d1..413506f 100644
--- a/Sankore-3.1/src/web/browser/WBWebView.h
+++ b/Sankore-3.1/src/web/browser/WBWebView.h
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
  * Open-Sankoré is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License,
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
@@ -20,6 +20,7 @@
  */
 
 
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/web.pri b/Sankore-3.1/src/web/web.pri
index 0b447ef..1f32e29 100644
--- a/Sankore-3.1/src/web/web.pri
+++ b/Sankore-3.1/src/web/web.pri
@@ -26,7 +26,8 @@ HEADERS      += src/web/UBWebController.h \
                 src/web/browser/WBUrlLineEdit.h \
                 src/web/browser/WBWebView.h \
                 src/web/browser/WBHistory.h \
-                src/web/browser/WBWebTrapWebView.h
+                src/web/browser/WBWebTrapWebView.h \
+                src/web/browser/WBTrapWebPageContent.h
 
 
 SOURCES      += src/web/UBWebController.cpp \
@@ -47,7 +48,9 @@ SOURCES      += src/web/UBWebController.cpp \
                 src/web/browser/WBUrlLineEdit.cpp \
                 src/web/browser/WBWebView.cpp \
                 src/web/browser/WBHistory.cpp \
-                src/web/browser/WBWebTrapWebView.cpp\
+                src/web/browser/WBWebTrapWebView.cpp \
+                src/web/browser/WBTrapWebPageContent.cpp
+
     
     
 
diff --git a/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.cpp b/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.cpp
index bf66d73..47ccc10 100644
--- a/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.cpp
+++ b/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.cpp
@@ -1,23 +1,22 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
- * Open-Sankoré is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation, version 2,
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
  *
  * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with Open-Sankoré; if not, see
- * <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.h b/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.h
index ae7ebb6..91568b9 100644
--- a/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.h
+++ b/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.h
@@ -1,26 +1,26 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
- * Open-Sankoré is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation, version 2,
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
  *
  * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with Open-Sankoré; if not, see
- * <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 
+
 #ifndef CRASHREPORTERSYMBOLSUPPLIER_H_
 #define CRASHREPORTERSYMBOLSUPPLIER_H_
 
diff --git a/Sankore-3.1/tools/CrashReportViewer/CrashWindow.cpp b/Sankore-3.1/tools/CrashReportViewer/CrashWindow.cpp
index f7ca2c1..82a9955 100644
--- a/Sankore-3.1/tools/CrashReportViewer/CrashWindow.cpp
+++ b/Sankore-3.1/tools/CrashReportViewer/CrashWindow.cpp
@@ -1,26 +1,24 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
- * Open-Sankoré is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation, version 2,
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
  *
  * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with Open-Sankoré; if not, see
- * <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-
 #include "CrashWindow.h"
 #include "ui_CrashReportViewer.h"
 #include "CrashReporterSymbolSupplier.h"
diff --git a/Sankore-3.1/tools/CrashReportViewer/CrashWindow.h b/Sankore-3.1/tools/CrashReportViewer/CrashWindow.h
index d7e5c57..5a0acfb 100644
--- a/Sankore-3.1/tools/CrashReportViewer/CrashWindow.h
+++ b/Sankore-3.1/tools/CrashReportViewer/CrashWindow.h
@@ -1,23 +1,22 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
- * Open-Sankoré is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation, version 2,
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
  *
  * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with Open-Sankoré; if not, see
- * <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/Sankore-3.1/tools/CrashReportViewer/main.cpp b/Sankore-3.1/tools/CrashReportViewer/main.cpp
index f05ec80..3a74c16 100644
--- a/Sankore-3.1/tools/CrashReportViewer/main.cpp
+++ b/Sankore-3.1/tools/CrashReportViewer/main.cpp
@@ -1,26 +1,26 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
- * Open-Sankoré is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation, version 2,
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
  *
  * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with Open-Sankoré; if not, see
- * <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 
+
 #include <QtGui>
 #include "CrashWindow.h"
 #include "client/mac/handler/exception_handler.h"
diff --git a/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.cpp b/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.cpp
index 5e7404d..12d5b38 100644
--- a/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.cpp
+++ b/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.cpp
@@ -1,23 +1,22 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
- * Open-Sankoré is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation, version 2,
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
  *
  * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with Open-Sankoré; if not, see
- * <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.h b/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.h
index 67f9176..dc916cc 100644
--- a/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.h
+++ b/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.h
@@ -1,26 +1,24 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
- * Open-Sankoré is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation, version 2,
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
  *
  * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with Open-Sankoré; if not, see
- * <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-
 #include <QString>
 
 class UBPlatformUtils
diff --git a/Sankore-3.1/tools/pdf2image/pdf2image.cpp b/Sankore-3.1/tools/pdf2image/pdf2image.cpp
index 289cc06..9dc3164 100644
--- a/Sankore-3.1/tools/pdf2image/pdf2image.cpp
+++ b/Sankore-3.1/tools/pdf2image/pdf2image.cpp
@@ -1,23 +1,22 @@
 /*
- * Copyright (C) 2012 Webdoc SA
+ * Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
  *
  * This file is part of Open-Sankoré.
  *
- * Open-Sankoré is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation, version 2,
+ * Open-Sankoré is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License,
  * with a specific linking exception for the OpenSSL project's
  * "OpenSSL" library (or with modified versions of it that use the
  * same license as the "OpenSSL" library).
  *
  * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
- * License along with Open-Sankoré; if not, see
- * <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 


hooks/post-receive
-- 
sankore.git (Debian package sankore)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "sankore.git" (Debian package sankore).




More information about the debian-edu-commits mailing list